Bridges-C++  3.2.0
Bridges(C++API)
sio_socket.h
Go to the documentation of this file.
1 #ifndef SIO_SOCKET_H
2 #define SIO_SOCKET_H
3 #include "sio_message.h"
4 #include <functional>
5 namespace sio {
6  class event_adapter;
7 
8  class event {
9  public:
10  const std::string& get_nsp() const;
11 
12  const std::string& get_name() const;
13 
14  const message::ptr& get_message() const;
15 
16  const message::list& get_messages() const;
17 
18  bool need_ack() const;
19 
20  void put_ack_message(message::list const& ack_message);
21 
22  message::list const& get_ack_message() const;
23 
24  protected:
25  event(std::string const& nsp, std::string const& name, message::list const& messages, bool need_ack);
26  event(std::string const& nsp, std::string const& name, message::list&& messages, bool need_ack);
27 
29 
30  private:
31  const std::string m_nsp;
32  const std::string m_name;
33  const message::list m_messages;
34  const bool m_need_ack;
35  message::list m_ack_message;
36 
37  friend class event_adapter;
38  };
39 
40  class client_impl;
41  class packet;
42 
43  //The name 'socket' is taken from concept of official socket.io.
44  class socket {
45  public:
46  typedef std::function<void(const std::string& name, message::ptr const& message, bool need_ack, message::list& ack_message)> event_listener_aux;
47 
48  typedef std::function<void(event& event)> event_listener;
49 
50  typedef std::function<void(message::ptr const& message)> error_listener;
51 
52  typedef std::shared_ptr<socket> ptr;
53 
54  ~socket();
55 
56  void on(std::string const& event_name, event_listener const& func);
57 
58  void on(std::string const& event_name, event_listener_aux const& func);
59 
60  void off(std::string const& event_name);
61 
62  void off_all();
63 
64  void close();
65 
66  void on_error(error_listener const& l);
67 
68  void off_error();
69 
70  void emit(std::string const& name, message::list const& msglist = nullptr, std::function<void (message::list const&)> const& ack = nullptr);
71 
72  std::string const& get_namespace() const;
73 
74  protected:
75  socket(client_impl*, std::string const&);
76 
77  void on_connected();
78 
79  void on_close();
80 
81  void on_open();
82 
83  void on_disconnect();
84 
85  void on_message_packet(packet const& p);
86 
87  friend class client_impl;
88 
89  private:
90  //disable copy constructor and assign operator.
91  socket(socket const&) {}
92  void operator=(socket const&) {}
93 
94  class impl;
95  impl *m_impl;
96  };
97 }
98 #endif // SIO_SOCKET_H
std::shared_ptr< message > ptr
Definition: sio_message.h:37
Definition: sio_client.h:14
Definition: sio_socket.h:8
std::shared_ptr< socket > ptr
Definition: sio_socket.h:52
const std::string & get_name() const
Definition: sio_socket.h:44
const message::ptr & get_message() const
const message::list & get_messages() const
const std::string & get_nsp() const
message::list const & get_ack_message() const
message::list & get_ack_message_impl()
void put_ack_message(message::list const &ack_message)
Definition: sio_message.h:344
event(std::string const &nsp, std::string const &name, message::list const &messages, bool need_ack)
std::function< void(message::ptr const &message)> error_listener
Definition: sio_socket.h:50
std::function< void(const std::string &name, message::ptr const &message, bool need_ack, message::list &ack_message)> event_listener_aux
Definition: sio_socket.h:46
bool need_ack() const
friend class event_adapter
Definition: sio_socket.h:37
std::function< void(event &event)> event_listener
Definition: sio_socket.h:48