55#include < tiny_websockets/internals/data_frame.hpp>
66#include < tiny_websockets/internals/websockets_endpoint.hpp>
77#include < tiny_websockets/message.hpp>
8+ #include < memory>
89#include < functional>
910
1011namespace websockets {
@@ -21,54 +22,58 @@ namespace websockets {
2122 typedef std::function<void (WebsocketsClient&, WebsocketsEvent, WSInterfaceString)> EventCallback;
2223 typedef std::function<void (WebsocketsEvent, WSInterfaceString)> PartialEventCallback;
2324
24- class WebsocketsClient : private internals ::WebsocketsEndpoint {
25+ class WebsocketsClient {
2526 public:
26- WebsocketsClient (network::TcpClient* client = new WSDefaultTcpClient);
27+ WebsocketsClient ();
28+ WebsocketsClient (std::shared_ptr<network::TcpClient> client);
2729
2830 WebsocketsClient (const WebsocketsClient& other);
2931 WebsocketsClient (const WebsocketsClient&& other);
3032
3133 WebsocketsClient& operator =(const WebsocketsClient& other);
3234 WebsocketsClient& operator =(const WebsocketsClient&& other);
3335
34- bool connect (WSInterfaceString url);
35- bool connect (WSInterfaceString host, int port, WSInterfaceString path);
36+ bool connect (const WSInterfaceString url);
37+ bool connect (const WSInterfaceString host, const int port, const WSInterfaceString path);
3638
37- void onMessage (MessageCallback callback);
38- void onMessage (PartialMessageCallback callback);
39+ void onMessage (const MessageCallback callback);
40+ void onMessage (const PartialMessageCallback callback);
3941
40- void onEvent (EventCallback callback);
41- void onEvent (PartialEventCallback callback);
42+ void onEvent (const EventCallback callback);
43+ void onEvent (const PartialEventCallback callback);
4244
4345 bool poll ();
44- bool available (bool activeTest = false );
46+ bool available (const bool activeTest = false );
4547
46- bool send (WSInterfaceString data);
47- bool send (const char * data, size_t len);
48+ bool send (const WSInterfaceString&& data);
49+ bool send (const WSInterfaceString& data);
50+ bool send (const char * data);
51+ bool send (const char * data, const size_t len);
4852
49- bool sendBinary (WSInterfaceString data);
50- bool sendBinary (const char * data, size_t len);
53+ bool sendBinary (const WSInterfaceString data);
54+ bool sendBinary (const char * data, const size_t len);
5155
5256 // stream messages
53- bool stream (WSInterfaceString data = " " );
54- bool streamBinary (WSInterfaceString data = " " );
55- bool end (WSInterfaceString data = " " );
57+ bool stream (const WSInterfaceString data = " " );
58+ bool streamBinary (const WSInterfaceString data = " " );
59+ bool end (const WSInterfaceString data = " " );
5660
57- void setFragmentsPolicy (FragmentsPolicy newPolicy);
58- FragmentsPolicy getFragmentsPolicy ();
61+ void setFragmentsPolicy (const FragmentsPolicy newPolicy);
62+ FragmentsPolicy getFragmentsPolicy () const ;
5963
6064 WebsocketsMessage readBlocking ();
6165
62- bool ping (WSInterfaceString data = " " );
63- bool pong (WSInterfaceString data = " " );
66+ bool ping (const WSInterfaceString data = " " );
67+ bool pong (const WSInterfaceString data = " " );
6468
65- void close (CloseReason reason = CloseReason_NormalClosure);
66- CloseReason getCloseReason ();
69+ void close (const CloseReason reason = CloseReason_NormalClosure);
70+ CloseReason getCloseReason () const ;
6771
6872 virtual ~WebsocketsClient ();
6973
7074 private:
71- network::TcpClient* _client;
75+ std::shared_ptr<network::TcpClient> _client;
76+ internals::WebsocketsEndpoint _endpoint;
7277 bool _connectionOpen;
7378 MessageCallback _messagesCallback;
7479 EventCallback _eventsCallback;
@@ -80,5 +85,7 @@ namespace websockets {
8085 void _handlePing (WebsocketsMessage);
8186 void _handlePong (WebsocketsMessage);
8287 void _handleClose (WebsocketsMessage);
88+
89+ void upgradeToSecuredConnection ();
8390 };
8491}
0 commit comments