1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_DEBUGGER_DEVTOOLS_REMOTE_H_
6#define CHROME_BROWSER_DEBUGGER_DEVTOOLS_REMOTE_H_
7#pragma once
8
9#include "base/basictypes.h"
10#include "base/memory/ref_counted.h"
11
12class DevToolsRemoteMessage;
13class ListenSocket;
14
15// This interface should be implemented by a class that wants to handle
16// DevToolsRemoteMessages dispatched by some entity. It must extend
17class DevToolsRemoteListener
18    : public base::RefCountedThreadSafe<DevToolsRemoteListener> {
19 public:
20  DevToolsRemoteListener() {}
21  virtual void HandleMessage(const DevToolsRemoteMessage& message) = 0;
22  // This method is invoked on the UI thread whenever the debugger connection
23  // has been lost.
24  virtual void OnConnectionLost() = 0;
25  virtual void OnAcceptConnection(ListenSocket* connection) {}
26
27 protected:
28  friend class base::RefCountedThreadSafe<DevToolsRemoteListener>;
29
30  virtual ~DevToolsRemoteListener() {}
31
32 private:
33  DISALLOW_COPY_AND_ASSIGN(DevToolsRemoteListener);
34};
35
36// Interface exposed by DevToolsProtocolHandler to receive reply messages
37// from registered tools.
38class OutboundSocketDelegate {
39 public:
40  virtual ~OutboundSocketDelegate() {}
41  virtual void Send(const DevToolsRemoteMessage& message) = 0;
42};
43
44#endif  // CHROME_BROWSER_DEBUGGER_DEVTOOLS_REMOTE_H_
45