Files
@ 26684d8ad9ef
Branch filter:
Location: libtransport.git/backends/libpurple/spectrumeventloop.cpp - annotation
26684d8ad9ef
2.4 KiB
text/x-c++hdr
More eventloop debugs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 9b97425c18ce 9b97425c18ce 9b97425c18ce 9b97425c18ce 9b97425c18ce 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a a1d9abd984c5 a1d9abd984c5 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 9b97425c18ce a1d9abd984c5 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 14ff0a11d657 1105d3f1e37a a1d9abd984c5 1105d3f1e37a 14ff0a11d657 14ff0a11d657 1105d3f1e37a 14ff0a11d657 1105d3f1e37a 14ff0a11d657 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a a1d9abd984c5 a1d9abd984c5 a1d9abd984c5 a1d9abd984c5 a1d9abd984c5 1105d3f1e37a 1bf1343ac5e3 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a 1105d3f1e37a a1d9abd984c5 9b97425c18ce 8105cf91192a 0f1f6f50f05a 1105d3f1e37a | /**
* XMPP - libpurple transport
*
* Copyright (C) 2009, Jan Kaluza <hanzz@soc.pidgin.im>
*
* 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 02111-1301 USA
*/
#include "spectrumeventloop.h"
#include "purple.h"
#include <iostream>
#ifdef WITH_LIBEVENT
#include <event.h>
#endif
#include "log4cxx/logger.h"
using namespace log4cxx;
static LoggerPtr logger = Logger::getLogger("SpectrumEventLoop");
using namespace Swift;
static SpectrumEventLoop *loop;
// Fires the event's callback and frees the event
static gboolean processEvent(void *data) {
Event *ev = (Event *) data;
LOG4CXX_INFO(logger, "got event in main thread " << ev);
loop->handle(ev);
return FALSE;
}
SpectrumEventLoop::SpectrumEventLoop(bool libev) : m_isRunning(false) {
m_loop = NULL;
loop = this;
#ifdef WITH_LIBEVENT
if (!libev) {
m_loop = g_main_loop_new(NULL, FALSE);
}
return;
#endif
m_loop = g_main_loop_new(NULL, FALSE);
}
SpectrumEventLoop::~SpectrumEventLoop() {
stop();
}
void SpectrumEventLoop::run() {
m_isRunning = true;
if (m_loop) {
g_main_loop_run(m_loop);
}
#ifdef WITH_LIBEVENT
else {
event_loop(0);
}
#endif
}
void SpectrumEventLoop::handle(Swift::Event *event) {
handleEvent(*event);
delete event;
}
void SpectrumEventLoop::stop() {
std::cout << "stopped loop\n";
if (!m_isRunning)
return;
if (m_loop) {
g_main_loop_quit(m_loop);
g_main_loop_unref(m_loop);
m_loop = NULL;
}
#ifdef WITH_LIBEVENT
else {
event_loopexit(NULL);
}
#endif
}
void SpectrumEventLoop::post(const Event& event) {
// pass copy of event to main thread
Event *ev = new Event(event);
LOG4CXX_INFO(logger, "posting event to main thread " << ev);
// g_main_context_invoke(g_main_loop_get_context(m_loop), processEvent, ev);
purple_timeout_add(100, processEvent, ev);
}
|