From a387e6c91cd45ffc35c03e42bde7ba926231de4b Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 21 Jan 2011 00:44:39 +0100 Subject: Remove CCrashWatcher and CObserver classes; merge libabrt_daemon into abrtd Signed-off-by: Denys Vlasenko --- src/daemon/CommLayerServer.cpp | 1 - src/daemon/CrashWatcher.cpp | 44 ------------------- src/daemon/CrashWatcher.h | 38 ----------------- src/daemon/Daemon.cpp | 4 +- src/daemon/Daemon.h | 4 +- src/daemon/Makefile.am | 3 +- src/daemon/comm_layer_inner.cpp | 93 ++++++++++++++++++++++++++++++++++++++++ src/daemon/comm_layer_inner.h | 54 +++++++++++++++++++++++ src/include/Makefile.am | 2 - src/include/comm_layer_inner.h | 61 -------------------------- src/include/observer.h | 32 -------------- src/lib/CommLayerInner.cpp | 94 ----------------------------------------- src/lib/Makefile.am | 19 --------- 13 files changed, 150 insertions(+), 299 deletions(-) delete mode 100644 src/daemon/CrashWatcher.cpp delete mode 100644 src/daemon/CrashWatcher.h create mode 100644 src/daemon/comm_layer_inner.cpp create mode 100644 src/daemon/comm_layer_inner.h delete mode 100644 src/include/comm_layer_inner.h delete mode 100644 src/include/observer.h delete mode 100644 src/lib/CommLayerInner.cpp (limited to 'src') diff --git a/src/daemon/CommLayerServer.cpp b/src/daemon/CommLayerServer.cpp index 5e250121..748611b3 100644 --- a/src/daemon/CommLayerServer.cpp +++ b/src/daemon/CommLayerServer.cpp @@ -17,7 +17,6 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "CommLayerServer.h" -#include "CrashWatcher.h" CCommLayerServer::CCommLayerServer() { diff --git a/src/daemon/CrashWatcher.cpp b/src/daemon/CrashWatcher.cpp deleted file mode 100644 index a74fa3aa..00000000 --- a/src/daemon/CrashWatcher.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* - Copyright (C) 2009 Jiri Moskovcak (jmoskovc@redhat.com) - Copyright (C) 2009 RedHat inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ -#include "abrtlib.h" -#include "Daemon.h" -#include "CommLayerServer.h" -#include "CrashWatcher.h" - -void CCrashWatcher::Status(const char *pMessage, const char* peer) -{ - VERB1 log("Update('%s'): %s", peer, pMessage); - if (g_pCommLayer != NULL) - g_pCommLayer->Update(pMessage, peer); -} - -void CCrashWatcher::Warning(const char *pMessage, const char* peer) -{ - VERB1 log("Warning('%s'): %s", peer, pMessage); - if (g_pCommLayer != NULL) - g_pCommLayer->Warning(pMessage, peer); -} - -CCrashWatcher::CCrashWatcher() -{ -} - -CCrashWatcher::~CCrashWatcher() -{ -} diff --git a/src/daemon/CrashWatcher.h b/src/daemon/CrashWatcher.h deleted file mode 100644 index 4f755a36..00000000 --- a/src/daemon/CrashWatcher.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - Copyright (C) 2009 Jiri Moskovcak (jmoskovc@redhat.com) - Copyright (C) 2009 RedHat inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ -#ifndef CRASHWATCHER_H_ -#define CRASHWATCHER_H_ - -#include "observer.h" - - -class CCrashWatcher -: public CObserver -{ - public: - CCrashWatcher(); - virtual ~CCrashWatcher(); - - public: - /* Observer methods */ - virtual void Status(const char *pMessage, const char* peer); - virtual void Warning(const char *pMessage, const char* peer); -}; - -#endif diff --git a/src/daemon/Daemon.cpp b/src/daemon/Daemon.cpp index 7c063d9d..78ebafea 100644 --- a/src/daemon/Daemon.cpp +++ b/src/daemon/Daemon.cpp @@ -29,7 +29,6 @@ #include "comm_layer_inner.h" #include "Settings.h" #include "CommLayerServerDBus.h" -#include "CrashWatcher.h" #include "MiddleWare.h" #include "Daemon.h" #include "parse_options.h" @@ -624,12 +623,11 @@ int main(int argc, char** argv) GIOChannel* channel_signal = NULL; guint channel_signal_event_id = 0; bool pidfile_created = false; - CCrashWatcher watcher; /* Initialization */ try { - init_daemon_logging(&watcher); + init_daemon_logging(); VERB1 log("Loading settings"); if (load_settings() != 0) diff --git a/src/daemon/Daemon.h b/src/daemon/Daemon.h index d771512e..d4cf0414 100644 --- a/src/daemon/Daemon.h +++ b/src/daemon/Daemon.h @@ -21,9 +21,7 @@ #include #include "abrt_types.h" - -class CCrashWatcher; -class CCommLayerServer; +#include "CommLayerServer.h" /* Used for sending dbus signals */ extern CCommLayerServer *g_pCommLayer; diff --git a/src/daemon/Makefile.am b/src/daemon/Makefile.am index f3f7bc0f..37b662af 100644 --- a/src/daemon/Makefile.am +++ b/src/daemon/Makefile.am @@ -11,10 +11,10 @@ sbin_PROGRAMS = \ abrtd_SOURCES = \ MiddleWare.h MiddleWare.cpp \ - CrashWatcher.h CrashWatcher.cpp \ CommLayerServer.h CommLayerServer.cpp \ CommLayerServerDBus.h CommLayerServerDBus.cpp \ Settings.h Settings.cpp \ + comm_layer_inner.h comm_layer_inner.cpp \ Daemon.h Daemon.cpp abrtd_CPPFLAGS = \ -I$(srcdir)/../include/report -I$(srcdir)/../include \ @@ -36,7 +36,6 @@ abrtd_LDADD = \ $(DL_LIBS) \ $(DBUS_LIBS) \ ../lib/libreport.la \ - ../lib/libabrt_daemon.la \ ../lib/libabrt_dbus.la abrt_server_SOURCES = \ diff --git a/src/daemon/comm_layer_inner.cpp b/src/daemon/comm_layer_inner.cpp new file mode 100644 index 00000000..59f7c3f3 --- /dev/null +++ b/src/daemon/comm_layer_inner.cpp @@ -0,0 +1,93 @@ +/* + Copyright (C) 2010 ABRT team + Copyright (C) 2010 RedHat Inc + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ +#include +#include +#include "abrtlib.h" +#include "Daemon.h" +#include "comm_layer_inner.h" + +typedef std::map map_uint_str_t; +static map_uint_str_t s_mapClientID; +static pthread_mutex_t s_map_mutex; +static bool s_map_mutex_inited; + +/* called via [p]error_msg() */ +static void warn_client(const char *msg) +{ + uint64_t key = uint64_t(pthread_self()); + + pthread_mutex_lock(&s_map_mutex); + map_uint_str_t::const_iterator ki = s_mapClientID.find(key); + const char* peer = (ki != s_mapClientID.end() ? ki->second.c_str() : NULL); + pthread_mutex_unlock(&s_map_mutex); + + if (peer) + { + VERB1 log("Warning('%s'): %s", peer, msg); + if (g_pCommLayer != NULL) + g_pCommLayer->Warning(msg, peer); + } +} + +void init_daemon_logging(void) +{ + if (!s_map_mutex_inited) + { + s_map_mutex_inited = true; + pthread_mutex_init(&s_map_mutex, NULL); + g_custom_logger = &warn_client; + } +} + +void set_client_name(const char *name) +{ + uint64_t key = uint64_t(pthread_self()); + + pthread_mutex_lock(&s_map_mutex); + if (!name) { + s_mapClientID.erase(key); + } else { + s_mapClientID[key] = name; + } + pthread_mutex_unlock(&s_map_mutex); +} + +void update_client(const char *fmt, ...) +{ + uint64_t key = uint64_t(pthread_self()); + + pthread_mutex_lock(&s_map_mutex); + map_uint_str_t::const_iterator ki = s_mapClientID.find(key); + const char* peer = (ki != s_mapClientID.end() ? ki->second.c_str() : NULL); + pthread_mutex_unlock(&s_map_mutex); + + if (!peer) + return; + + va_list p; + va_start(p, fmt); + char *msg = xvasprintf(fmt, p); + va_end(p); + + VERB1 log("Update('%s'): %s", peer, msg); + if (g_pCommLayer != NULL) + g_pCommLayer->Update(msg, peer); + + free(msg); +} diff --git a/src/daemon/comm_layer_inner.h b/src/daemon/comm_layer_inner.h new file mode 100644 index 00000000..48eb2010 --- /dev/null +++ b/src/daemon/comm_layer_inner.h @@ -0,0 +1,54 @@ +/* + Copyright (C) 2010 ABRT team + Copyright (C) 2010 RedHat Inc + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ +#ifndef COMMLAYERINNER_H_ +#define COMMLAYERINNER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +void init_daemon_logging(void); + +/* + * Set client's name (dbus ID). NULL unsets it. + */ +void set_client_name(const char* name); + +/* + * Ask a client to warn the user about a non-fatal, but unexpected condition. + * In GUI, it will usually be presented as a popup message. + * Usually there is no need to call it directly, just use [p]error_msg(). + */ +//now static: +//void warn_client(const char *msg); +//use [p]error_msg[_and_die] instead, it sends the message as a warning to client +//as well as to the log. + +/* + * Logs a message to a client. + * In UI, it will usually appear as a new status line message in GUI, + * or as a new message line in CLI. + */ +void update_client(const char *fmt, ...); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/include/Makefile.am b/src/include/Makefile.am index de9b39a2..84e56d6d 100644 --- a/src/include/Makefile.am +++ b/src/include/Makefile.am @@ -8,8 +8,6 @@ libabrt_includedir = $(includedir)/abrt libabrt_include_HEADERS = \ abrtlib.h \ abrt_types.h \ - comm_layer_inner.h \ abrt_crash_data.h \ dbus_common.h \ - observer.h \ xfuncs.h diff --git a/src/include/comm_layer_inner.h b/src/include/comm_layer_inner.h deleted file mode 100644 index 2cca9add..00000000 --- a/src/include/comm_layer_inner.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - Copyright (C) 2010 ABRT team - Copyright (C) 2010 RedHat Inc - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ -#ifndef COMMLAYERINNER_H_ -#define COMMLAYERINNER_H_ - -#ifdef __cplusplus - -#include "observer.h" - -void init_daemon_logging(CObserver *pObs); - -#endif - - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Set client's name (dbus ID). NULL unsets it. - */ -void set_client_name(const char* name); - -/* - * Ask a client to warn the user about a non-fatal, but unexpected condition. - * In GUI, it will usually be presented as a popup message. - * Usually there is no need to call it directly, just use [p]error_msg(). - */ -//now static: -//void warn_client(const char *msg); -//use [p]error_msg[_and_die] instead, it sends the message as a warning to client -//as well as to the log. - -/* - * Logs a message to a client. - * In UI, it will usually appear as a new status line message in GUI, - * or as a new message line in CLI. - */ -void update_client(const char *fmt, ...); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/include/observer.h b/src/include/observer.h deleted file mode 100644 index 1c8f2355..00000000 --- a/src/include/observer.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - Copyright (C) 2010 ABRT team - Copyright (C) 2010 RedHat Inc - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ -#ifndef OBSERVER_H_ -#define OBSERVER_H_ - -#include -#include "dbus_common.h" - -class CObserver { - public: - virtual ~CObserver() {} - virtual void Status(const char *pMessage, const char* peer) = 0; - virtual void Warning(const char *pMessage, const char* peer) = 0; -}; - -#endif diff --git a/src/lib/CommLayerInner.cpp b/src/lib/CommLayerInner.cpp deleted file mode 100644 index 3c102d6e..00000000 --- a/src/lib/CommLayerInner.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/* - Copyright (C) 2010 ABRT team - Copyright (C) 2010 RedHat Inc - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ -#include -#include -#include "abrtlib.h" -#include "comm_layer_inner.h" - -static CObserver *s_pObs; - -typedef std::map map_uint_str_t; -static map_uint_str_t s_mapClientID; -static pthread_mutex_t s_map_mutex; -static bool s_map_mutex_inited; - -/* called via [p]error_msg() */ -static void warn_client(const char *msg) -{ - if (!s_pObs) - return; - - uint64_t key = uint64_t(pthread_self()); - - pthread_mutex_lock(&s_map_mutex); - map_uint_str_t::const_iterator ki = s_mapClientID.find(key); - const char* peer = (ki != s_mapClientID.end() ? ki->second.c_str() : NULL); - pthread_mutex_unlock(&s_map_mutex); - - if (peer) - s_pObs->Warning(msg, peer); -} - -void init_daemon_logging(CObserver *pObs) -{ - s_pObs = pObs; - if (!s_map_mutex_inited) - { - s_map_mutex_inited = true; - pthread_mutex_init(&s_map_mutex, NULL); - g_custom_logger = &warn_client; - } -} - -void set_client_name(const char *name) -{ - uint64_t key = uint64_t(pthread_self()); - - pthread_mutex_lock(&s_map_mutex); - if (!name) { - s_mapClientID.erase(key); - } else { - s_mapClientID[key] = name; - } - pthread_mutex_unlock(&s_map_mutex); -} - -void update_client(const char *fmt, ...) -{ - if (!s_pObs) - return; - - uint64_t key = uint64_t(pthread_self()); - - pthread_mutex_lock(&s_map_mutex); - map_uint_str_t::const_iterator ki = s_mapClientID.find(key); - const char* peer = (ki != s_mapClientID.end() ? ki->second.c_str() : NULL); - pthread_mutex_unlock(&s_map_mutex); - - if (!peer) - return; - - va_list p; - va_start(p, fmt); - char *msg = xvasprintf(fmt, p); - va_end(p); - - s_pObs->Status(msg, peer); - free(msg); -} diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index ce06795a..89cad8ab 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -1,10 +1,8 @@ # libreport - the stuff shared among most of abrt (like xmalloc, logging) -# libabrt_daemon - only daemon related things are here # libabrt_dbus - daemon, cli and applet use this # libabrt_web - for abrt-action-foo where foo deals with network/web/ftp/... lib_LTLIBRARIES = \ libreport.la \ - libabrt_daemon.la \ libabrt_dbus.la \ libabrt_web.la @@ -78,23 +76,6 @@ libabrt_dbus_la_LIBADD = \ $(GLIB_LIBS) \ $(DBUS_LIBS) -libabrt_daemon_la_SOURCES = \ - CommLayerInner.cpp -libabrt_daemon_la_CPPFLAGS = \ - -I$(srcdir)/../include/report -I$(srcdir)/../include \ - -DDEBUG_DUMPS_DIR=\"$(DEBUG_DUMPS_DIR)\" \ - -DPLUGINS_LIB_DIR=\"$(PLUGINS_LIB_DIR)\" \ - -DPLUGINS_CONF_DIR=\"$(PLUGINS_CONF_DIR)\" \ - -DCONF_DIR=\"$(CONF_DIR)\" \ - -DVAR_RUN=\"$(VAR_RUN)\" \ - $(GLIB_CFLAGS) \ - -Wall \ - -Werror \ - -D_GNU_SOURCE -libabrt_daemon_la_LDFLAGS = \ - -version-info 0:1:0 -libabrt_daemon_la_LIBADD = - libabrt_web_la_SOURCES = \ abrt_curl.h abrt_curl.c \ abrt_xmlrpc.h abrt_xmlrpc.cpp -- cgit