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 9namespace content { 10 11MessageRouter::MessageRouter() { 12} 13 14MessageRouter::~MessageRouter() { 15} 16 17bool MessageRouter::OnControlMessageReceived(const IPC::Message& msg) { 18 NOTREACHED() << 19 "should override in subclass if you care about control messages"; 20 return false; 21} 22 23bool MessageRouter::Send(IPC::Message* msg) { 24 NOTREACHED() << 25 "should override in subclass if you care about sending messages"; 26 return false; 27} 28 29void MessageRouter::AddRoute(int32 routing_id, IPC::Listener* listener) { 30 routes_.AddWithID(listener, routing_id); 31} 32 33void MessageRouter::RemoveRoute(int32 routing_id) { 34 routes_.Remove(routing_id); 35} 36 37bool 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 44bool 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