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/comm_layer_inner.cpp | 93 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 src/daemon/comm_layer_inner.cpp (limited to 'src/daemon/comm_layer_inner.cpp') 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); +} -- cgit From 5d3a66f0b6cc2e9fd6a5dc5815d65d6708050ccc Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 21 Jan 2011 17:34:29 +0100 Subject: remove CCommLayerServer[DBus] classes Signed-off-by: Denys Vlasenko --- src/daemon/comm_layer_inner.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'src/daemon/comm_layer_inner.cpp') diff --git a/src/daemon/comm_layer_inner.cpp b/src/daemon/comm_layer_inner.cpp index 59f7c3f3..9d5ddfc2 100644 --- a/src/daemon/comm_layer_inner.cpp +++ b/src/daemon/comm_layer_inner.cpp @@ -19,7 +19,7 @@ #include #include #include "abrtlib.h" -#include "Daemon.h" +#include "CommLayerServerDBus.h" #include "comm_layer_inner.h" typedef std::map map_uint_str_t; @@ -39,9 +39,7 @@ static void warn_client(const char *msg) if (peer) { - VERB1 log("Warning('%s'): %s", peer, msg); - if (g_pCommLayer != NULL) - g_pCommLayer->Warning(msg, peer); + send_dbus_sig_Warning(msg, peer); } } @@ -86,8 +84,7 @@ void update_client(const char *fmt, ...) va_end(p); VERB1 log("Update('%s'): %s", peer, msg); - if (g_pCommLayer != NULL) - g_pCommLayer->Update(msg, peer); + send_dbus_sig_Update(msg, peer); free(msg); } -- cgit