Module creation, message routing
This commit is contained in:
parent
bc2dc9bf07
commit
c605b3ba93
14 changed files with 154 additions and 26 deletions
|
@ -3,12 +3,13 @@
|
|||
|
||||
#include "actor.h"
|
||||
|
||||
Module::Actor::Actor():
|
||||
Module()
|
||||
Module::Actor::Actor(const std::shared_ptr<gloox::Client>& client):
|
||||
Module(client)
|
||||
{}
|
||||
|
||||
Module::Actor::~Actor() noexcept {}
|
||||
|
||||
void Module::Actor::message(const std::string& text) {
|
||||
|
||||
void Module::Actor::message(const std::shared_ptr<::Actor>& actor, const Module::Module::Tokens& args) {
|
||||
if (args.front() == "list")
|
||||
sendMessage(actor, "Me\nMyself\nI");
|
||||
}
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace Module {
|
|||
|
||||
class Actor : public Module {
|
||||
public:
|
||||
Actor();
|
||||
Actor(const std::shared_ptr<gloox::Client>& client);
|
||||
~Actor() noexcept;
|
||||
|
||||
virtual void message(const std::string & text) override;
|
||||
virtual void message(const std::shared_ptr<::Actor>& actor, const Tokens& args) override;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -3,7 +3,33 @@
|
|||
|
||||
#include "module.h"
|
||||
|
||||
Module::Module::Module()
|
||||
#include "gloox/message.h"
|
||||
|
||||
Module::Module::Module(const std::shared_ptr<gloox::Client>& client):
|
||||
client(client)
|
||||
{}
|
||||
|
||||
Module::Module::~Module() noexcept {}
|
||||
|
||||
std::vector<std::string> Module::Module::split(const std::string& string, const std::string& delimiter) {
|
||||
std::vector<std::string> result;
|
||||
|
||||
std::size_t last = 0;
|
||||
std::size_t next = string.find(delimiter, last);
|
||||
while (next != std::string::npos) {
|
||||
result.emplace_back(string.substr(last, next - last));
|
||||
last = next + 1;
|
||||
next = string.find(delimiter, last);
|
||||
}
|
||||
result.emplace_back(string.substr(last));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void Module::Module::sendMessage(const std::shared_ptr<Actor>& actor, const std::string& body) {
|
||||
client->send(gloox::Message(
|
||||
gloox::Message::Chat,
|
||||
actor->jid,
|
||||
body
|
||||
));
|
||||
}
|
||||
|
|
|
@ -4,17 +4,33 @@
|
|||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
#include "gloox/client.h"
|
||||
|
||||
#include "component/actor.h"
|
||||
|
||||
namespace Module {
|
||||
|
||||
class Module {
|
||||
protected:
|
||||
Module();
|
||||
public:
|
||||
typedef std::vector<std::string> Tokens;
|
||||
|
||||
virtual void message(const std::string& text) = 0;
|
||||
protected:
|
||||
Module(const std::shared_ptr<gloox::Client>& client);
|
||||
void sendMessage(const std::shared_ptr<Actor>& actor, const std::string& body);
|
||||
|
||||
public:
|
||||
virtual ~Module() noexcept;
|
||||
|
||||
static Tokens split(const std::string& string, const std::string& delimiter = " ");
|
||||
|
||||
virtual void message(const std::shared_ptr<Actor>& actor, const Tokens& args) = 0;
|
||||
|
||||
protected:
|
||||
std::shared_ptr<gloox::Client> client;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue