From 3afb63a650b8b925ce1ba722dd42b7418f623713 Mon Sep 17 00:00:00 2001 From: Florent Le Coz Date: Sat, 21 Dec 2013 21:04:41 +0100 Subject: Shutdown cleanly on SIGINT --- src/xmpp/xmpp_component.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/xmpp/xmpp_component.cpp') diff --git a/src/xmpp/xmpp_component.cpp b/src/xmpp/xmpp_component.cpp index 433f87a..dc77934 100644 --- a/src/xmpp/xmpp_component.cpp +++ b/src/xmpp/xmpp_component.cpp @@ -24,7 +24,8 @@ XmppComponent::XmppComponent(const std::string& hostname, const std::string& secret): served_hostname(hostname), secret(secret), - authenticated(false) + authenticated(false), + doc_open(false) { this->parser.add_stream_open_callback(std::bind(&XmppComponent::on_remote_stream_open, this, std::placeholders::_1)); @@ -51,6 +52,11 @@ bool XmppComponent::start() return this->connect("127.0.0.1", "5347"); } +bool XmppComponent::is_document_open() const +{ + return this->doc_open; +} + void XmppComponent::send_stanza(const Stanza& stanza) { std::string str = stanza.to_string(); @@ -66,6 +72,7 @@ void XmppComponent::on_connected() node["xmlns:stream"] = STREAM_NS; node["to"] = this->served_hostname; this->send_stanza(node); + this->doc_open = true; } void XmppComponent::on_connection_close() @@ -79,6 +86,14 @@ void XmppComponent::parse_in_buffer() this->in_buf.clear(); } +void XmppComponent::shutdown() +{ + for (auto it = this->bridges.begin(); it != this->bridges.end(); ++it) + { + it->second->shutdown(); + } +} + void XmppComponent::on_remote_stream_open(const XmlNode& node) { log_debug("XMPP DOCUMENT OPEN: " << node.to_string()); @@ -145,6 +160,7 @@ void XmppComponent::close_document() { log_debug("XMPP SENDING: "); this->send_data(""); + this->doc_open = false; } void XmppComponent::handle_handshake(const Stanza& stanza) -- cgit v1.2.3