summaryrefslogtreecommitdiff
path: root/src/xmpp
diff options
context:
space:
mode:
authorFlorent Le Coz <louiz@louiz.org>2013-12-27 12:01:26 +0100
committerFlorent Le Coz <louiz@louiz.org>2014-01-04 01:59:35 +0100
commite8e592d1ace5413a1e7d8b59b9467c78d8d68ea9 (patch)
tree5652ccbca535cffa442a1a13729e4ac93ba4dfe2 /src/xmpp
parentaa53276859a5fc80071d24111a311297e058e603 (diff)
downloadbiboumi-e8e592d1ace5413a1e7d8b59b9467c78d8d68ea9.tar.gz
biboumi-e8e592d1ace5413a1e7d8b59b9467c78d8d68ea9.tar.bz2
biboumi-e8e592d1ace5413a1e7d8b59b9467c78d8d68ea9.tar.xz
biboumi-e8e592d1ace5413a1e7d8b59b9467c78d8d68ea9.zip
Remove disconnected IrcClients
Diffstat (limited to 'src/xmpp')
-rw-r--r--src/xmpp/xmpp_component.cpp8
-rw-r--r--src/xmpp/xmpp_component.hpp5
2 files changed, 13 insertions, 0 deletions
diff --git a/src/xmpp/xmpp_component.cpp b/src/xmpp/xmpp_component.cpp
index dc77934..3c37eb1 100644
--- a/src/xmpp/xmpp_component.cpp
+++ b/src/xmpp/xmpp_component.cpp
@@ -94,6 +94,14 @@ void XmppComponent::shutdown()
}
}
+void XmppComponent::clean()
+{
+ for (auto it = this->bridges.begin(); it != this->bridges.end(); ++it)
+ {
+ it->second->clean();
+ }
+}
+
void XmppComponent::on_remote_stream_open(const XmlNode& node)
{
log_debug("XMPP DOCUMENT OPEN: " << node.to_string());
diff --git a/src/xmpp/xmpp_component.hpp b/src/xmpp/xmpp_component.hpp
index 1952e19..d76a2c3 100644
--- a/src/xmpp/xmpp_component.hpp
+++ b/src/xmpp/xmpp_component.hpp
@@ -32,6 +32,11 @@ public:
void shutdown();
bool is_document_open() const;
/**
+ * Run a check on all bridges, to remove all disconnected (socket is
+ * closed, or no channel is joined) IrcClients. Some kind of garbage collector.
+ */
+ void clean();
+ /**
* Connect to the XMPP server.
* Returns false if we failed to connect
*/