From 8b60685886212d7ee29482abdefb00c6fb99d9db Mon Sep 17 00:00:00 2001 From: HanzZ Date: Wed, 12 Sep 2012 10:18:51 +0200 Subject: [PATCH] Split Template backend into more files --- backends/template/main.cpp | 72 ++---------------------------------- backends/template/plugin.cpp | 62 +++++++++++++++++++++++++++++++ backends/template/plugin.h | 34 +++++++++++++++++ 3 files changed, 100 insertions(+), 68 deletions(-) create mode 100644 backends/template/plugin.cpp create mode 100644 backends/template/plugin.h diff --git a/backends/template/main.cpp b/backends/template/main.cpp index 06d2d1ba..2210ad42 100644 --- a/backends/template/main.cpp +++ b/backends/template/main.cpp @@ -1,3 +1,5 @@ +#include "plugin.h" + // Transport includes #include "transport/config.h" #include "transport/networkplugin.h" @@ -19,71 +21,6 @@ using namespace boost::filesystem; using namespace boost::program_options; using namespace Transport; -DEFINE_LOGGER(logger, "Backend Template"); - -// eventloop -Swift::SimpleEventLoop *loop_; - -// Plugin -class TemplatePlugin; -TemplatePlugin * np = NULL; - -class TemplatePlugin : public NetworkPlugin { - public: - Swift::BoostNetworkFactories *m_factories; - Swift::BoostIOServiceThread m_boostIOServiceThread; - boost::shared_ptr m_conn; - - TemplatePlugin(Config *config, Swift::SimpleEventLoop *loop, const std::string &host, int port) : NetworkPlugin() { - this->config = config; - m_factories = new Swift::BoostNetworkFactories(loop); - m_conn = m_factories->getConnectionFactory()->createConnection(); - m_conn->onDataRead.connect(boost::bind(&TemplatePlugin::_handleDataRead, this, _1)); - m_conn->connect(Swift::HostAddressPort(Swift::HostAddress(host), port)); - - LOG4CXX_INFO(logger, "Starting the plugin."); - } - - // NetworkPlugin uses this method to send the data to networkplugin server - void sendData(const std::string &string) { - m_conn->write(Swift::createSafeByteArray(string)); - } - - // This method has to call handleDataRead with all received data from network plugin server - void _handleDataRead(boost::shared_ptr data) { - std::string d(data->begin(), data->end()); - handleDataRead(d); - } - - void handleLoginRequest(const std::string &user, const std::string &legacyName, const std::string &password) { - handleConnected(user); - LOG4CXX_INFO(logger, user << ": Added buddy - Echo."); - handleBuddyChanged(user, "echo", "Echo", std::vector(), pbnetwork::STATUS_ONLINE); - } - - void handleLogoutRequest(const std::string &user, const std::string &legacyName) { - } - - void handleMessageSendRequest(const std::string &user, const std::string &legacyName, const std::string &message, const std::string &xhtml = "") { - LOG4CXX_INFO(logger, "Sending message from " << user << " to " << legacyName << "."); - if (legacyName == "echo") { - handleMessage(user, legacyName, message); - } - } - - void handleBuddyUpdatedRequest(const std::string &user, const std::string &buddyName, const std::string &alias, const std::vector &groups) { - LOG4CXX_INFO(logger, user << ": Added buddy " << buddyName << "."); - handleBuddyChanged(user, buddyName, alias, groups, pbnetwork::STATUS_ONLINE); - } - - void handleBuddyRemovedRequest(const std::string &user, const std::string &buddyName, const std::vector &groups) { - - } - - private: - Config *config; -}; - #ifndef _WIN32 static void spectrum_sigchld_handler(int sig) @@ -124,9 +61,8 @@ int main (int argc, char* argv[]) { Logging::initBackendLogging(cfg); Swift::SimpleEventLoop eventLoop; - loop_ = &eventLoop; - np = new TemplatePlugin(cfg, &eventLoop, host, port); - loop_->run(); + Plugin p(cfg, &eventLoop, host, port); + eventLoop.run(); return 0; } diff --git a/backends/template/plugin.cpp b/backends/template/plugin.cpp new file mode 100644 index 00000000..9b2b7866 --- /dev/null +++ b/backends/template/plugin.cpp @@ -0,0 +1,62 @@ +#include "plugin.h" +// Transport includes +#include "transport/config.h" +#include "transport/networkplugin.h" +#include "transport/logging.h" + +// Swiften +#include "Swiften/Swiften.h" + +// Boost +#include +using namespace boost::filesystem; +using namespace boost::program_options; +using namespace Transport; + +DEFINE_LOGGER(logger, "Backend Template"); + +Plugin::Plugin(Config *config, Swift::SimpleEventLoop *loop, const std::string &host, int port) : NetworkPlugin() { + this->config = config; + m_factories = new Swift::BoostNetworkFactories(loop); + m_conn = m_factories->getConnectionFactory()->createConnection(); + m_conn->onDataRead.connect(boost::bind(&Plugin::_handleDataRead, this, _1)); + m_conn->connect(Swift::HostAddressPort(Swift::HostAddress(host), port)); + + LOG4CXX_INFO(logger, "Starting the plugin."); +} + +// NetworkPlugin uses this method to send the data to networkplugin server +void Plugin::sendData(const std::string &string) { + m_conn->write(Swift::createSafeByteArray(string)); +} + +// This method has to call handleDataRead with all received data from network plugin server +void Plugin::_handleDataRead(boost::shared_ptr data) { + std::string d(data->begin(), data->end()); + handleDataRead(d); +} + +void Plugin::handleLoginRequest(const std::string &user, const std::string &legacyName, const std::string &password) { + handleConnected(user); + LOG4CXX_INFO(logger, user << ": Added buddy - Echo."); + handleBuddyChanged(user, "echo", "Echo", std::vector(), pbnetwork::STATUS_ONLINE); +} + +void Plugin::handleLogoutRequest(const std::string &user, const std::string &legacyName) { +} + +void Plugin::handleMessageSendRequest(const std::string &user, const std::string &legacyName, const std::string &message, const std::string &xhtml) { + LOG4CXX_INFO(logger, "Sending message from " << user << " to " << legacyName << "."); + if (legacyName == "echo") { + handleMessage(user, legacyName, message); + } +} + +void Plugin::handleBuddyUpdatedRequest(const std::string &user, const std::string &buddyName, const std::string &alias, const std::vector &groups) { + LOG4CXX_INFO(logger, user << ": Added buddy " << buddyName << "."); + handleBuddyChanged(user, buddyName, alias, groups, pbnetwork::STATUS_ONLINE); +} + +void Plugin::handleBuddyRemovedRequest(const std::string &user, const std::string &buddyName, const std::vector &groups) { + +} diff --git a/backends/template/plugin.h b/backends/template/plugin.h new file mode 100644 index 00000000..e017c811 --- /dev/null +++ b/backends/template/plugin.h @@ -0,0 +1,34 @@ +#pragma once + +#include "Swiften/Swiften.h" + +#include "transport/config.h" +#include "transport/networkplugin.h" + +class Plugin : public Transport::NetworkPlugin { + public: + Plugin(Transport::Config *config, Swift::SimpleEventLoop *loop, const std::string &host, int port); + + // NetworkPlugin uses this method to send the data to networkplugin server + void sendData(const std::string &string); + + void handleLoginRequest(const std::string &user, const std::string &legacyName, const std::string &password); + + void handleLogoutRequest(const std::string &user, const std::string &legacyName); + + void handleMessageSendRequest(const std::string &user, const std::string &legacyName, const std::string &message, const std::string &xhtml = ""); + + void handleBuddyUpdatedRequest(const std::string &user, const std::string &buddyName, const std::string &alias, const std::vector &groups); + + void handleBuddyRemovedRequest(const std::string &user, const std::string &buddyName, const std::vector &groups); + + private: + // This method has to call handleDataRead with all received data from network plugin server + void _handleDataRead(boost::shared_ptr data); + + private: + Swift::BoostNetworkFactories *m_factories; + Swift::BoostIOServiceThread m_boostIOServiceThread; + boost::shared_ptr m_conn; + Transport::Config *config; +};