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.
5 #include "content/common/message_router.h"
7 #include "ipc/ipc_message.h"
11 MessageRouter::MessageRouter() {
14 MessageRouter::~MessageRouter() {
17 bool MessageRouter::OnControlMessageReceived(const IPC::Message
& msg
) {
19 "should override in subclass if you care about control messages";
23 bool MessageRouter::Send(IPC::Message
* msg
) {
25 "should override in subclass if you care about sending messages";
29 bool MessageRouter::AddRoute(int32 routing_id
, IPC::Listener
* listener
) {
30 if (routes_
.Lookup(routing_id
)) {
31 DLOG(ERROR
) << "duplicate routing ID";
34 routes_
.AddWithID(listener
, routing_id
);
38 void MessageRouter::RemoveRoute(int32 routing_id
) {
39 routes_
.Remove(routing_id
);
42 bool MessageRouter::OnMessageReceived(const IPC::Message
& msg
) {
43 if (msg
.routing_id() == MSG_ROUTING_CONTROL
)
44 return OnControlMessageReceived(msg
);
46 return RouteMessage(msg
);
49 bool MessageRouter::RouteMessage(const IPC::Message
& msg
) {
50 IPC::Listener
* listener
= routes_
.Lookup(msg
.routing_id());
54 listener
->OnMessageReceived(msg
);
58 } // namespace content