summaryrefslogtreecommitdiff
path: root/src/inspector/worker_agent.h
blob: 1bd25189bf30264d46151cbf48286be1e6117161 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#ifndef SRC_INSPECTOR_WORKER_AGENT_H_
#define SRC_INSPECTOR_WORKER_AGENT_H_

#include "node/inspector/protocol/NodeWorker.h"
#include "v8.h"


namespace node {
namespace inspector {
class WorkerManagerEventHandle;
class WorkerManager;

namespace protocol {
class NodeWorkers;

class WorkerAgent : public NodeWorker::Backend {
 public:
  explicit WorkerAgent(std::weak_ptr<WorkerManager> manager);
  ~WorkerAgent() override = default;

  void Wire(UberDispatcher* dispatcher);

  DispatchResponse sendMessageToWorker(const String& message,
                                       const String& sessionId) override;

  DispatchResponse enable(bool waitForDebuggerOnStart) override;
  DispatchResponse disable() override;
  DispatchResponse detach(const String& sessionId) override;

 private:
  std::shared_ptr<NodeWorker::Frontend> frontend_;
  std::weak_ptr<WorkerManager> manager_;
  std::unique_ptr<WorkerManagerEventHandle> event_handle_;
  std::shared_ptr<NodeWorkers> workers_;
};
}  // namespace protocol
}  // namespace inspector
}  // namespace node

#endif  // SRC_INSPECTOR_WORKER_AGENT_H_