diff options
author | Kevin Smith <git@kismith.co.uk> | 2011-02-27 22:45:32 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2011-03-06 20:25:01 (GMT) |
commit | 27d21b371f24272466a2d6a5bf2e2b717ee2d9fc (patch) | |
tree | 5f53281711d4f467933e4b3315241e4eee58a64c /Swiftob/MUCs.h | |
parent | d9c9df3b4ae5432552417fc4db74d62ab34f066d (diff) | |
download | swift-contrib-27d21b371f24272466a2d6a5bf2e2b717ee2d9fc.zip swift-contrib-27d21b371f24272466a2d6a5bf2e2b717ee2d9fc.tar.bz2 |
A start on Swiftob, a Swiften-based chatbot.
Diffstat (limited to 'Swiftob/MUCs.h')
-rw-r--r-- | Swiftob/MUCs.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/Swiftob/MUCs.h b/Swiftob/MUCs.h new file mode 100644 index 0000000..e727ec2 --- /dev/null +++ b/Swiftob/MUCs.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2011 Kevin Smith + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include <vector> +#include <string> + +#include <Swiften/JID/JID.h> +#include <Swiften/Elements/Message.h> +#include <Swiften/MUC/MUC.h> +#include <Swiften/MUC/MUCRegistry.h> + +namespace Swift { +class Client; +class MUC; +} + +class Storage; + +using namespace Swift; + +class MUCs { + public: + MUCs(Client* client, Storage* storage); + void join(const JID& room, boost::signal<void (const std::string&)>::slot_type successCallback, boost::function<void(const std::string& /*reason*/)> failureCallback); + void part(const JID& room); + bool contains(const JID& room); + MUC::ref getMUC(const JID& room); + private: + void handleConnected(); + void handleJoinFailed(const JID& room, ErrorPayload::ref error, boost::function<void(const std::string& /*reason*/)> failureCallback); + void handleInitialJoinSuccess(); + void handleInitialJoinFailure(const std::string&); + void save(); + private: + MUCRegistry registry_; + std::map<JID, MUC::ref> mucs_; + Client* client_; + Storage* storage_; + std::string defaultNick_; +}; + + |