diff --git a/include/transport/userregistration.h b/include/transport/userregistration.h index 1c994423cec675a058228a355be03a8d03fe9944..d5fb863317a4d78b31063ca7431e0a6474a85765 100644 --- a/include/transport/userregistration.h +++ b/include/transport/userregistration.h @@ -1,85 +1,87 @@ -/** - * libtransport -- C++ library for easy XMPP Transports development - * - * Copyright (C) 2011, Jan Kaluza - * - * 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 - */ - -#pragma once - -#include "Swiften/Queries/Responder.h" -#include "Swiften/Elements/InBandRegistrationPayload.h" -#include "Swiften/Elements/RosterPayload.h" -#include - -namespace Transport { - -struct UserInfo; -class Component; -class StorageBackend; -class UserManager; -class Config; - -/// Allows users to register the transport using service discovery. -class UserRegistration : public Swift::Responder { - public: - /// Creates new UserRegistration handler. - /// \param component Component associated with this class - /// \param userManager UserManager associated with this class - /// \param storageBackend StorageBackend where the registered users will be stored - UserRegistration(Component *component, UserManager *userManager, StorageBackend *storageBackend); - - /// Destroys UserRegistration. - ~UserRegistration(); - - /// Registers new user. This function stores user into database and subscribe user to transport. - /// \param userInfo UserInfo struct with informations about registered user - /// \return false if user is already registered - bool registerUser(const UserInfo &userInfo); - - /// Unregisters user. This function removes all data about user from databa, unsubscribe all buddies - /// managed by this transport and disconnects user if he's connected. - /// \param barejid bare JID of user to unregister - /// \return false if there is no such user registered - bool unregisterUser(const std::string &barejid); - - /// Called when new user has been registered. - /// \param userInfo UserInfo struct with informations about user - boost::signal onUserRegistered; - - /// Called when user has been unregistered. - /// \param userInfo UserInfo struct with informations about user - boost::signal onUserUnregistered; - - /// Called when user's registration has been updated. - /// \param userInfo UserInfo struct with informations about user - boost::signal onUserUpdated; - - private: - virtual bool handleGetRequest(const Swift::JID& from, const Swift::JID& to, const std::string& id, boost::shared_ptr payload); - virtual bool handleSetRequest(const Swift::JID& from, const Swift::JID& to, const std::string& id, boost::shared_ptr payload); - - void handleRegisterRemoteRosterResponse(boost::shared_ptr payload, Swift::ErrorPayload::ref error, const UserInfo &row); - void handleUnregisterRemoteRosterResponse(boost::shared_ptr payload, Swift::ErrorPayload::ref error, const std::string &barejid); - - Component *m_component; - StorageBackend *m_storageBackend; - UserManager *m_userManager; - Config *m_config; - -}; - -} +/** + * libtransport -- C++ library for easy XMPP Transports development + * + * Copyright (C) 2011, Jan Kaluza + * + * 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 + */ + +#pragma once + +#include "Swiften/Queries/Responder.h" +#include "Swiften/Elements/InBandRegistrationPayload.h" +#include "Swiften/Elements/RosterPayload.h" +#include +#include +#define HAVE_SWIFTEN_3 SWIFTEN_VERSION >= 0x030000 + +namespace Transport { + +struct UserInfo; +class Component; +class StorageBackend; +class UserManager; +class Config; + +/// Allows users to register the transport using service discovery. +class UserRegistration : public Swift::Responder { + public: + /// Creates new UserRegistration handler. + /// \param component Component associated with this class + /// \param userManager UserManager associated with this class + /// \param storageBackend StorageBackend where the registered users will be stored + UserRegistration(Component *component, UserManager *userManager, StorageBackend *storageBackend); + + /// Destroys UserRegistration. + ~UserRegistration(); + + /// Registers new user. This function stores user into database and subscribe user to transport. + /// \param userInfo UserInfo struct with informations about registered user + /// \return false if user is already registered + bool registerUser(const UserInfo &userInfo); + + /// Unregisters user. This function removes all data about user from databa, unsubscribe all buddies + /// managed by this transport and disconnects user if he's connected. + /// \param barejid bare JID of user to unregister + /// \return false if there is no such user registered + bool unregisterUser(const std::string &barejid); + + /// Called when new user has been registered. + /// \param userInfo UserInfo struct with informations about user + boost::signal onUserRegistered; + + /// Called when user has been unregistered. + /// \param userInfo UserInfo struct with informations about user + boost::signal onUserUnregistered; + + /// Called when user's registration has been updated. + /// \param userInfo UserInfo struct with informations about user + boost::signal onUserUpdated; + + private: + virtual bool handleGetRequest(const Swift::JID& from, const Swift::JID& to, const std::string& id, boost::shared_ptr payload); + virtual bool handleSetRequest(const Swift::JID& from, const Swift::JID& to, const std::string& id, boost::shared_ptr payload); + + void handleRegisterRemoteRosterResponse(boost::shared_ptr payload, Swift::ErrorPayload::ref error, const UserInfo &row); + void handleUnregisterRemoteRosterResponse(boost::shared_ptr payload, Swift::ErrorPayload::ref error, const std::string &barejid); + + Component *m_component; + StorageBackend *m_storageBackend; + UserManager *m_userManager; + Config *m_config; + +}; + +}