Files
node/src/inspector_socket.h
T
Eugene Ostroukhov a9a1f12b42 inspector: report client-visible host and port
Node instance may not know the real host and port user sees when
debug frontend connects through the SSH tunnel. This change fixes
'/json/list' response by using the value client provided in the host
header.

PR-URL: https://github.com/nodejs/node/pull/19664
Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
2018-04-02 10:20:30 -07:00

56 lines
1.3 KiB
C++

#ifndef SRC_INSPECTOR_SOCKET_H_
#define SRC_INSPECTOR_SOCKET_H_
#include "util-inl.h"
#include "uv.h"
#include <string>
#include <vector>
namespace node {
namespace inspector {
class ProtocolHandler;
// HTTP Wrapper around a uv_tcp_t
class InspectorSocket {
public:
class Delegate {
public:
virtual void OnHttpGet(const std::string& host,
const std::string& path) = 0;
virtual void OnSocketUpgrade(const std::string& host,
const std::string& path,
const std::string& accept_key) = 0;
virtual void OnWsFrame(const std::vector<char>& frame) = 0;
virtual ~Delegate() {}
};
using DelegatePointer = std::unique_ptr<Delegate>;
using Pointer = std::unique_ptr<InspectorSocket>;
static Pointer Accept(uv_stream_t* server, DelegatePointer delegate);
~InspectorSocket();
void AcceptUpgrade(const std::string& accept_key);
void CancelHandshake();
void Write(const char* data, size_t len);
void SwitchProtocol(ProtocolHandler* handler);
std::string GetHost();
private:
InspectorSocket();
std::unique_ptr<ProtocolHandler, void(*)(ProtocolHandler*)> protocol_handler_;
DISALLOW_COPY_AND_ASSIGN(InspectorSocket);
};
} // namespace inspector
} // namespace node
#endif // SRC_INSPECTOR_SOCKET_H_