blob: 733bc46d7c8fe98a658d76a47b1cc10190dbf93d [file] [log] [blame]
brettw@chromium.orgf947ed02012-06-12 07:35:26 +09001// 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:
brettw@chromium.orgf947ed02012-06-12 07:35:26 +090019 // 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
jam@chromium.org822f1fb2014-05-16 08:06:07 +090031 // Called when a message's deserialization failed.
32 virtual void OnBadMessageReceived(const Message& message) {}
33
brettw@chromium.orgf947ed02012-06-12 07:35:26 +090034#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
rsleevi@chromium.orgeae5e582012-07-11 09:07:54 +090043
44 protected:
45 virtual ~Listener() {}
brettw@chromium.orgf947ed02012-06-12 07:35:26 +090046};
47
48} // namespace IPC
49
50#endif // IPC_IPC_LISTENER_H_