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