Implement next_id() to
This commit is contained in:
@@ -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
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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++);
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user