9 #ifndef INCLUDE_FUNAPI_TEST_NETWORK_H_ 10 #define INCLUDE_FUNAPI_TEST_NETWORK_H_ 12 #include <boost/asio.hpp> 23 typedef function<void(const Ptr<Session> &)> SessionOpenedHandler;
25 typedef function<void(const Ptr<Session> &,
28 typedef function<void (const Ptr<Session> &,
bool )>
29 TcpTransportAttachedHandler;
31 typedef function<void (const Ptr<Session> &)>
32 TcpTransportDetachedHandler;
34 typedef function<void (const Ptr<Session> &,
bool )>
35 WebSocketTransportAttachedHandler;
37 typedef function<void (const Ptr<Session> &)>
38 WebSocketTransportDetachedHandler;
40 typedef function<void (const Ptr<Session> &,
41 const Json &)> MessageHandler;
43 typedef function<void (const Ptr<Session> &,
44 const Ptr<FunMessage> &)> MessageHandler2;
46 typedef function<void (const Ptr<Session> &session)> SessionRedirectedHandler;
51 struct FUNAPI_DLL_VISIBILITY
Option {
60 explicit Option(
size_t io_threads_size = 4);
62 size_t io_threads_size;
63 bool use_session_reliability;
64 bool send_session_id_only_once;
65 bool disable_tcp_nagle;
71 string server_encryption_public_key;
74 static void Install(
const SessionOpenedHandler &opened_handler,
75 const SessionClosedHandler &closed_handler,
78 static void RegisterTcpTransportHandler(
79 const TcpTransportAttachedHandler &tcp_attached_handler,
80 const TcpTransportDetachedHandler &tcp_detached_handler);
82 static void RegisterWebSocketTransportHandler(
83 const WebSocketTransportAttachedHandler &websocket_attached_handler,
84 const WebSocketTransportDetachedHandler &websocket_detached_handler);
86 static void Register(
const string &message_type,
87 const MessageHandler &message_handler);
88 static void Register2(
const string &message_type,
89 const MessageHandler2 &message_handler);
90 static void Register2(int32_t message_type,
91 const MessageHandler2 &message_handler);
93 const MessageHandler2 &message_handler);
95 static void RegisterRedirectionHandler(
96 const SessionRedirectedHandler &redirection_handler);
111 static Ptr<Session> Create();
115 virtual void ConnectTcp(
const string &ip, uint16_t port,
116 EncodingScheme encoding,
bool use_ssl =
false) = 0;
117 virtual void ConnectTcp(
const boost::asio::ip::tcp::endpoint &endpoint,
118 EncodingScheme encoding,
bool use_ssl =
false) = 0;
120 virtual void ConnectUdp(
const string &ip, uint16_t port,
121 EncodingScheme encoding) = 0;
122 virtual void ConnectUdp(
const boost::asio::ip::udp::endpoint &endpoint,
123 EncodingScheme encoding) = 0;
125 virtual void ConnectHttp(
const string &url, EncodingScheme encoding) = 0;
126 virtual void ConnectHttp(
const string &ip, uint16_t port,
127 EncodingScheme encoding) = 0;
128 virtual void ConnectHttp(
const boost::asio::ip::tcp::endpoint &endpoint,
129 EncodingScheme encoding) = 0;
131 virtual void ConnectWebSocket(
const string &url, EncodingScheme encoding) = 0;
132 virtual void ConnectWebSocket(
const string &ip, uint16_t port,
133 EncodingScheme encoding) = 0;
134 virtual void ConnectWebSocket(
const boost::asio::ip::tcp::endpoint &endpoint,
135 EncodingScheme encoding) = 0;
137 virtual const SessionId &id()
const = 0;
138 virtual State state()
const = 0;
140 virtual bool IsTransportAttached()
const = 0;
141 virtual bool IsTransportAttached(TransportProtocol protocol)
const = 0;
143 virtual bool IsRedirected()
const = 0;
145 virtual void SendMessage(
const string &message_type,
const Json &message,
146 TransportProtocol protocol) = 0;
148 virtual void SendMessage(
const string &message_type,
149 const Ptr<FunMessage> &message,
150 TransportProtocol protocol) = 0;
151 virtual void SendMessage(int32_t message_type,
152 const Ptr<FunMessage> &message,
153 TransportProtocol protocol) = 0;
155 const Ptr<FunMessage> &message,
156 TransportProtocol protocol) = 0;
158 virtual void SendMessage(
const string &message_type,
const Json &message,
159 Encryption encryption,
160 TransportProtocol protocol) = 0;
162 virtual void SendMessage(
const string &message_type,
163 const Ptr<FunMessage> &message,
164 Encryption encryption,
165 TransportProtocol protocol) = 0;
166 virtual void SendMessage(int32_t message_type,
167 const Ptr<FunMessage> &message,
168 Encryption encryption,
169 TransportProtocol protocol) = 0;
171 const Ptr<FunMessage> &message,
172 Encryption encryption,
173 TransportProtocol protocol) = 0;
175 virtual void CloseTransport() = 0;
176 virtual void CloseTransport(TransportProtocol protocol) = 0;
178 virtual void Close() = 0;
179 virtual void CloseRequest() = 0;
181 virtual void SetContext(
const Json &ctxt) = 0;
182 virtual Json &GetContext() = 0;
183 virtual const Json &GetContext()
const = 0;
184 virtual boost::mutex &GetContextMutex()
const = 0;
185 virtual operator boost::mutex &()
const = 0;
195 #endif // INCLUDE_FUNAPI_TEST_NETWORK_H_
Definition: network.h:100
SessionCloseReason
Enumeration to identify why a session has closed.
Definition: session.h:61
Definition: session.h:624
#define DECLARE_CLASS_PTR(CLS)
Utility macro to forward-declare smart pointer types for a given class.
Definition: types.h:89