1 |
|
|
#ifndef SRC_INSPECTOR_SOCKET_H_ |
2 |
|
|
#define SRC_INSPECTOR_SOCKET_H_ |
3 |
|
|
|
4 |
|
|
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS |
5 |
|
|
|
6 |
|
|
#include "util.h" |
7 |
|
|
#include "uv.h" |
8 |
|
|
|
9 |
|
|
#include <string> |
10 |
|
|
#include <vector> |
11 |
|
|
|
12 |
|
|
namespace node { |
13 |
|
|
namespace inspector { |
14 |
|
|
|
15 |
|
|
class ProtocolHandler; |
16 |
|
|
|
17 |
|
|
// HTTP Wrapper around a uv_tcp_t |
18 |
|
84 |
class InspectorSocket { |
19 |
|
|
public: |
20 |
|
|
class Delegate { |
21 |
|
|
public: |
22 |
|
|
virtual void OnHttpGet(const std::string& host, |
23 |
|
|
const std::string& path) = 0; |
24 |
|
|
virtual void OnSocketUpgrade(const std::string& host, |
25 |
|
|
const std::string& path, |
26 |
|
|
const std::string& accept_key) = 0; |
27 |
|
|
virtual void OnWsFrame(const std::vector<char>& frame) = 0; |
28 |
|
168 |
virtual ~Delegate() = default; |
29 |
|
|
}; |
30 |
|
|
|
31 |
|
|
using DelegatePointer = std::unique_ptr<Delegate>; |
32 |
|
|
using Pointer = std::unique_ptr<InspectorSocket>; |
33 |
|
|
|
34 |
|
|
static Pointer Accept(uv_stream_t* server, DelegatePointer delegate); |
35 |
|
|
|
36 |
|
|
~InspectorSocket(); |
37 |
|
|
|
38 |
|
|
void AcceptUpgrade(const std::string& accept_key); |
39 |
|
|
void CancelHandshake(); |
40 |
|
|
void Write(const char* data, size_t len); |
41 |
|
|
void SwitchProtocol(ProtocolHandler* handler); |
42 |
|
|
std::string GetHost(); |
43 |
|
|
|
44 |
|
|
InspectorSocket(const InspectorSocket&) = delete; |
45 |
|
|
InspectorSocket& operator=(const InspectorSocket&) = delete; |
46 |
|
|
|
47 |
|
|
private: |
48 |
|
|
static void Shutdown(ProtocolHandler*); |
49 |
|
84 |
InspectorSocket() = default; |
50 |
|
|
|
51 |
|
|
DeleteFnPtr<ProtocolHandler, Shutdown> protocol_handler_; |
52 |
|
|
}; |
53 |
|
|
|
54 |
|
|
|
55 |
|
|
} // namespace inspector |
56 |
|
|
} // namespace node |
57 |
|
|
|
58 |
|
|
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS |
59 |
|
|
|
60 |
|
|
#endif // SRC_INSPECTOR_SOCKET_H_ |