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