summaryrefslogtreecommitdiff
path: root/src/bridge
diff options
context:
space:
mode:
Diffstat (limited to 'src/bridge')
-rw-r--r--src/bridge/bridge.cpp5
-rw-r--r--src/bridge/bridge.hpp5
2 files changed, 4 insertions, 6 deletions
diff --git a/src/bridge/bridge.cpp b/src/bridge/bridge.cpp
index d803e5e..78cd2d2 100644
--- a/src/bridge/bridge.cpp
+++ b/src/bridge/bridge.cpp
@@ -14,7 +14,7 @@ using namespace std::string_literals;
static const char* action_prefix = "\01ACTION ";
-Bridge::Bridge(const std::string& user_jid, XmppComponent* xmpp, Poller* poller):
+Bridge::Bridge(const std::string& user_jid, XmppComponent* xmpp, std::shared_ptr<Poller> poller):
user_jid(user_jid),
xmpp(xmpp),
poller(poller)
@@ -81,9 +81,8 @@ IrcClient* Bridge::get_irc_client(const std::string& hostname, const std::string
}
catch (const std::out_of_range& exception)
{
- this->irc_clients.emplace(hostname, std::make_shared<IrcClient>(hostname, username, this));
+ this->irc_clients.emplace(hostname, std::make_shared<IrcClient>(this->poller, hostname, username, this));
std::shared_ptr<IrcClient> irc = this->irc_clients.at(hostname);
- this->poller->add_socket_handler(irc);
return irc.get();
}
}
diff --git a/src/bridge/bridge.hpp b/src/bridge/bridge.hpp
index f78bade..37f5b05 100644
--- a/src/bridge/bridge.hpp
+++ b/src/bridge/bridge.hpp
@@ -22,7 +22,7 @@ class Poller;
class Bridge
{
public:
- explicit Bridge(const std::string& user_jid, XmppComponent* xmpp, Poller* poller);
+ explicit Bridge(const std::string& user_jid, XmppComponent* xmpp, std::shared_ptr<Poller> poller);
~Bridge();
/**
* QUIT all connected IRC servers.
@@ -146,9 +146,8 @@ private:
/**
* Poller, to give it the IrcClients that we spawn, to make it manage
* their sockets.
- * We don't own it.
*/
- Poller* poller;
+ std::shared_ptr<Poller> poller;
Bridge(const Bridge&) = delete;
Bridge(Bridge&& other) = delete;