Implement next_id() to

This commit is contained in:
Florent Le Coz
2014-05-06 22:39:09 +02:00
parent 18b27793de
commit f35db5ceba
3 changed files with 23 additions and 1 deletions
+8
View File
@@ -2,6 +2,7 @@
* Just a very simple test suite, by hand, using assert() * Just a very simple test suite, by hand, using assert()
*/ */
#include <xmpp/xmpp_component.hpp>
#include <xmpp/xmpp_parser.hpp> #include <xmpp/xmpp_parser.hpp>
#include <utils/encoding.hpp> #include <utils/encoding.hpp>
#include <logger/logger.hpp> #include <logger/logger.hpp>
@@ -58,6 +59,13 @@ int main()
assert(utils::remove_invalid_xml_chars(in) == in); assert(utils::remove_invalid_xml_chars(in) == in);
assert(utils::remove_invalid_xml_chars("\acouco\u0008u\uFFFEt\uFFFFe\r\n♥") == "coucoute\r\n♥"); assert(utils::remove_invalid_xml_chars("\acouco\u0008u\uFFFEt\uFFFFe\r\n♥") == "coucoute\r\n♥");
/**
* Id generation
*/
assert(XmppComponent::next_id() == "0");
assert(XmppComponent::next_id() == "1");
assert(XmppComponent::next_id() == "2");
/** /**
* Utils * Utils
*/ */
+7
View File
@@ -29,6 +29,8 @@
#define STANZA_NS "urn:ietf:params:xml:ns:xmpp-stanzas" #define STANZA_NS "urn:ietf:params:xml:ns:xmpp-stanzas"
#define STREAMS_NS "urn:ietf:params:xml:ns:xmpp-streams" #define STREAMS_NS "urn:ietf:params:xml:ns:xmpp-streams"
unsigned long XmppComponent::current_id = 0;
XmppComponent::XmppComponent(const std::string& hostname, const std::string& secret): XmppComponent::XmppComponent(const std::string& hostname, const std::string& secret):
ever_auth(false), ever_auth(false),
last_auth(false), last_auth(false),
@@ -783,3 +785,8 @@ void XmppComponent::send_self_disco_info(const std::string& id, const std::strin
iq.close(); iq.close();
this->send_stanza(iq); this->send_stanza(iq);
} }
std::string XmppComponent::next_id()
{
return std::to_string(XmppComponent::current_id++);
}
+8 -1
View File
@@ -20,10 +20,16 @@ class XmppComponent: public SocketHandler
public: public:
explicit XmppComponent(const std::string& hostname, const std::string& secret); explicit XmppComponent(const std::string& hostname, const std::string& secret);
~XmppComponent(); ~XmppComponent();
void on_connection_failed(const std::string& reason) override final; void on_connection_failed(const std::string& reason) override final;
void on_connected() override final; void on_connected() override final;
void on_connection_close() override final; void on_connection_close() override final;
void parse_in_buffer(const size_t size) override final; void parse_in_buffer(const size_t size) override final;
/**
* Returns a unique id, to be used in the 'id' element of our iq stanzas.
*/
static std::string next_id();
/** /**
* Send a "close" message to all our connected peers. That message * Send a "close" message to all our connected peers. That message
* depends on the protocol used (this may be a QUIT irc message, or a * depends on the protocol used (this may be a QUIT irc message, or a
@@ -195,6 +201,8 @@ private:
*/ */
std::unordered_map<std::string, std::unique_ptr<Bridge>> bridges; std::unordered_map<std::string, std::unique_ptr<Bridge>> bridges;
static unsigned long current_id;
XmppComponent(const XmppComponent&) = delete; XmppComponent(const XmppComponent&) = delete;
XmppComponent(XmppComponent&&) = delete; XmppComponent(XmppComponent&&) = delete;
XmppComponent& operator=(const XmppComponent&) = delete; XmppComponent& operator=(const XmppComponent&) = delete;
@@ -202,4 +210,3 @@ private:
}; };
#endif // XMPP_COMPONENT_INCLUDED #endif // XMPP_COMPONENT_INCLUDED