diff options
| -rw-r--r-- | Swiften/Elements/Presence.h | 3 | ||||
| -rw-r--r-- | Swiften/Examples/EchoBot/.gitignore | 1 | ||||
| -rw-r--r-- | Swiften/Examples/EchoBot/EchoBot.cpp | 47 | ||||
| -rw-r--r-- | Swiften/Examples/EchoBot/Makefile.inc | 13 | ||||
| -rw-r--r-- | Swiften/Examples/Makefile.inc | 1 | 
5 files changed, 65 insertions, 0 deletions
diff --git a/Swiften/Elements/Presence.h b/Swiften/Elements/Presence.h index 1243bca..002ed0e 100644 --- a/Swiften/Elements/Presence.h +++ b/Swiften/Elements/Presence.h @@ -13,6 +13,9 @@ namespace Swift {  			enum Type { Available, Error, Probe, Subscribe, Subscribed, Unavailable, Unsubscribe, Unsubscribed };  			Presence() : type_(Available) /*, showType_(Online)*/ {} +			Presence(const String& status) : type_(Available) { +				setStatus(status); +			}  			Type getType() const { return type_; }  			void setType(Type type) { type_ = type; } diff --git a/Swiften/Examples/EchoBot/.gitignore b/Swiften/Examples/EchoBot/.gitignore new file mode 100644 index 0000000..9200f42 --- /dev/null +++ b/Swiften/Examples/EchoBot/.gitignore @@ -0,0 +1 @@ +EchoBot diff --git a/Swiften/Examples/EchoBot/EchoBot.cpp b/Swiften/Examples/EchoBot/EchoBot.cpp new file mode 100644 index 0000000..526e6b0 --- /dev/null +++ b/Swiften/Examples/EchoBot/EchoBot.cpp @@ -0,0 +1,47 @@ +#include <boost/bind.hpp> + +#include "Swiften/Client/Client.h" +#include "Swiften/EventLoop/SimpleEventLoop.h" +#include "Swiften/Queries/Requests/GetRosterRequest.h" + +using namespace Swift; +using namespace boost; + +class EchoBot { +	public: +		EchoBot(const JID& jid, const String& pass) : client(new Client(jid, pass)) { +			client->onConnected.connect(bind(&EchoBot::handleConnected, this)); +			client->onMessageReceived.connect(bind(&EchoBot::handleMessageReceived, this, _1)); +			client->connect(); +		} + +	private: +		void handleConnected() { +			shared_ptr<GetRosterRequest> rosterRequest(new GetRosterRequest(client.get())); +			rosterRequest->onResponse.connect(bind(&EchoBot::handleRosterReceived, this, _2)); +			rosterRequest->send(); +		} + +		void handleRosterReceived(const optional<Error>& error) { +			if (error) { +				std::cerr << "Error receiving roster. Continuing anyway."; +			} +			client->sendPresence(shared_ptr<Presence>(new Presence("Send me a message"))); +		} + +		void handleMessageReceived(shared_ptr<Message> message) { +			message->setTo(message->getFrom()); +			message->setFrom(JID()); +			client->sendMessage(message); +		} + +	private: +		std::auto_ptr<Client> client; +}; + +int main(int, char**) { +	SimpleEventLoop eventLoop; +	EchoBot bot(JID("echobot@wonderland.lit"), "mypass"); +	eventLoop.run(); +	return 0; +} diff --git a/Swiften/Examples/EchoBot/Makefile.inc b/Swiften/Examples/EchoBot/Makefile.inc new file mode 100644 index 0000000..b126b15 --- /dev/null +++ b/Swiften/Examples/EchoBot/Makefile.inc @@ -0,0 +1,13 @@ +ECHOBOT_TARGET = Swiften/Examples/EchoBot/EchoBot +ECHOBOT_SOURCES += \ +	Swiften/Examples/EchoBot/EchoBot.cpp +ECHOBOT_OBJECTS = \ +	$(ECHOBOT_SOURCES:.cpp=.o) + +CLEANFILES += $(ECHOBOT_OBJECTS) $(ECHOBOT_TARGET) +EXAMPLES_TARGETS += $(ECHOBOT_TARGET) + +EchoBot: $(ECHOBOT_TARGET) + +$(ECHOBOT_TARGET): $(SWIFTEN_TARGET) $(ECHOBOT_OBJECTS) +	$(QUIET_LINK)$(CXX) -o $(ECHOBOT_TARGET) $(ECHOBOT_OBJECTS) $(LDFLAGS) $(CPPCLIENT_LDFLAGS) $(SWIFTEN_TARGET) $(LIBS) diff --git a/Swiften/Examples/Makefile.inc b/Swiften/Examples/Makefile.inc index 4f61f2c..15aebae 100644 --- a/Swiften/Examples/Makefile.inc +++ b/Swiften/Examples/Makefile.inc @@ -1,3 +1,4 @@ +include Swiften/Examples/EchoBot/Makefile.inc  include Swiften/Examples/TuneBot/Makefile.inc  .PHONY: examples  | 
 Swift