1// Copyright (c) 2012 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 IPC_IPC_LISTENER_H_
6#define IPC_IPC_LISTENER_H_
7
8#include "base/basictypes.h"
9#include "build/build_config.h"
10#include "ipc/ipc_export.h"
11
12namespace IPC {
13
14class Message;
15
16// Implemented by consumers of a Channel to receive messages.
17class IPC_EXPORT Listener {
18 public:
19  // Called when a message is received.  Returns true iff the message was
20  // handled.
21  virtual bool OnMessageReceived(const Message& message) = 0;
22
23  // Called when the channel is connected and we have received the internal
24  // Hello message from the peer.
25  virtual void OnChannelConnected(int32 peer_pid) {}
26
27  // Called when an error is detected that causes the channel to close.
28  // This method is not called when a channel is closed normally.
29  virtual void OnChannelError() {}
30
31  // Called when a message's deserialization failed.
32  virtual void OnBadMessageReceived(const Message& message) {}
33
34#if defined(OS_POSIX)
35  // Called on the server side when a channel that listens for connections
36  // denies an attempt to connect.
37  virtual void OnChannelDenied() {}
38
39  // Called on the server side when a channel that listens for connections
40  // has an error that causes the listening channel to close.
41  virtual void OnChannelListenError() {}
42#endif  // OS_POSIX
43
44 protected:
45  virtual ~Listener() {}
46};
47
48}  // namespace IPC
49
50#endif  // IPC_IPC_LISTENER_H_
51