// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef IPC_MESSAGE_ROUTER_H_ #define IPC_MESSAGE_ROUTER_H_ #include <stdint.h> #include "base/component_export.h" #include "base/containers/id_map.h" #include "ipc/ipc_listener.h" #include "ipc/ipc_sender.h" // The MessageRouter handles all incoming messages sent to it by routing them // to the correct listener. Routing is based on the Message's routing ID. // Since routing IDs are typically assigned asynchronously by the browser // process, the MessageRouter has the notion of pending IDs for listeners that // have not yet been assigned a routing ID. // // When a message arrives, the routing ID is used to index the set of routes to // find a listener. If a listener is found, then the message is passed to it. // Otherwise, the message is ignored if its routing ID is not equal to // MSG_ROUTING_CONTROL. // // The MessageRouter supports the IPC::Sender interface for outgoing messages, // but does not define a meaningful implementation of it. The subclass of // MessageRouter is intended to provide that if appropriate. // // The MessageRouter can be used as a concrete class provided its Send method // is not called and it does not receive any control messages. namespace IPC { class COMPONENT_EXPORT(IPC) MessageRouter : public Listener, public Sender { … }; } // namespace IPC #endif // IPC_MESSAGE_ROUTER_H_