~singpolyma/biboumi

f35db5cebaf1b9e267a7f2341699bb50fbc54c65 — Florent Le Coz 9 years ago 18b2779
Implement next_id() to
3 files changed, 23 insertions(+), 1 deletions(-)

M src/test.cpp
M src/xmpp/xmpp_component.cpp
M src/xmpp/xmpp_component.hpp
M src/test.cpp => src/test.cpp +8 -0
@@ 2,6 2,7 @@
 * Just a very simple test suite, by hand, using assert()
 */

#include <xmpp/xmpp_component.hpp>
#include <xmpp/xmpp_parser.hpp>
#include <utils/encoding.hpp>
#include <logger/logger.hpp>


@@ 59,6 60,13 @@ int main()
  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
   */
  std::cout << color << "Testing utils…" << reset << std::endl;

M src/xmpp/xmpp_component.cpp => src/xmpp/xmpp_component.cpp +7 -0
@@ 29,6 29,8 @@
#define STANZA_NS        "urn:ietf:params:xml:ns:xmpp-stanzas"
#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):
  ever_auth(false),
  last_auth(false),


@@ 783,3 785,8 @@ void XmppComponent::send_self_disco_info(const std::string& id, const std::strin
  iq.close();
  this->send_stanza(iq);
}

std::string XmppComponent::next_id()
{
  return std::to_string(XmppComponent::current_id++);
}

M src/xmpp/xmpp_component.hpp => src/xmpp/xmpp_component.hpp +8 -1
@@ 20,10 20,16 @@ class XmppComponent: public SocketHandler
public:
  explicit XmppComponent(const std::string& hostname, const std::string& secret);
  ~XmppComponent();

  void on_connection_failed(const std::string& reason) override final;
  void on_connected() override final;
  void on_connection_close() 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
   * 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;

  static unsigned long current_id;

  XmppComponent(const XmppComponent&) = delete;
  XmppComponent(XmppComponent&&) = delete;
  XmppComponent& operator=(const XmppComponent&) = delete;


@@ 202,4 210,3 @@ private:
};

#endif // XMPP_COMPONENT_INCLUDED