#pragma once#include"Swiften/Swiften.h"#include"Swiften/SwiftenCompat.h"#include"transport/Config.h"#include"transport/NetworkPlugin.h"classPlugin:publicTransport::NetworkPlugin{public:Plugin(Transport::Config*config,Swift::SimpleEventLoop*loop,conststd::string&host,intport);// NetworkPlugin uses this method to send the data to networkplugin servervoidsendData(conststd::string&string);voidhandleLoginRequest(conststd::string&user,conststd::string&legacyName,conststd::string&password);voidhandleLogoutRequest(conststd::string&user,conststd::string&legacyName);voidhandleMessageSendRequest(conststd::string&user,conststd::string&legacyName,conststd::string&message,conststd::string&xhtml="",conststd::string&id="");voidhandleBuddyUpdatedRequest(conststd::string&user,conststd::string&buddyName,conststd::string&alias,conststd::vector<std::string>&groups);voidhandleBuddyRemovedRequest(conststd::string&user,conststd::string&buddyName,conststd::vector<std::string>&groups);private:// This method has to call handleDataRead with all received data from network plugin servervoid_handleDataRead(SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<Swift::SafeByteArray>data);private:Swift::BoostNetworkFactories*m_factories;Swift::BoostIOServiceThreadm_boostIOServiceThread;SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<Swift::Connection>m_conn;Transport::Config*config;};