• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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 #include "content/common/message_router.h"
6 
7 #include "ipc/ipc_message.h"
8 
9 namespace content {
10 
MessageRouter()11 MessageRouter::MessageRouter() {
12 }
13 
~MessageRouter()14 MessageRouter::~MessageRouter() {
15 }
16 
OnControlMessageReceived(const IPC::Message & msg)17 bool MessageRouter::OnControlMessageReceived(const IPC::Message& msg) {
18   NOTREACHED() <<
19       "should override in subclass if you care about control messages";
20   return false;
21 }
22 
Send(IPC::Message * msg)23 bool MessageRouter::Send(IPC::Message* msg) {
24   NOTREACHED() <<
25       "should override in subclass if you care about sending messages";
26   return false;
27 }
28 
AddRoute(int32 routing_id,IPC::Listener * listener)29 void MessageRouter::AddRoute(int32 routing_id, IPC::Listener* listener) {
30   routes_.AddWithID(listener, routing_id);
31 }
32 
RemoveRoute(int32 routing_id)33 void MessageRouter::RemoveRoute(int32 routing_id) {
34   routes_.Remove(routing_id);
35 }
36 
OnMessageReceived(const IPC::Message & msg)37 bool MessageRouter::OnMessageReceived(const IPC::Message& msg) {
38   if (msg.routing_id() == MSG_ROUTING_CONTROL)
39     return OnControlMessageReceived(msg);
40 
41   return RouteMessage(msg);
42 }
43 
RouteMessage(const IPC::Message & msg)44 bool MessageRouter::RouteMessage(const IPC::Message& msg) {
45   IPC::Listener* listener = routes_.Lookup(msg.routing_id());
46   if (!listener)
47     return false;
48 
49   listener->OnMessageReceived(msg);
50   return true;
51 }
52 
53 }  // namespace content
54