From 7412204291319c7099206d8e4964b981737e2170 Mon Sep 17 00:00:00 2001 From: "dmichael@chromium.org" Date: Fri, 25 Apr 2014 00:07:30 +0000 Subject: Move IPC::MessageFilter and router to a separate file There are no changes in implementation in this CL. This is in preparation for making IPC::Channel support filters on the Channel's thread. BUG=364241 TBR=cpu@chromium.org,nduca@chromium.org cpu: OWNERS for win8 nduca: OWNERS for components/tracing Review URL: https://codereview.chromium.org/245443005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@266057 0039d316-1c4b-4281-b951-d872f2087c98 --- ipc/message_filter_router.h | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 ipc/message_filter_router.h (limited to 'ipc/message_filter_router.h') diff --git a/ipc/message_filter_router.h b/ipc/message_filter_router.h new file mode 100644 index 0000000..183b8eb --- /dev/null +++ b/ipc/message_filter_router.h @@ -0,0 +1,42 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IPC_MESSAGE_FILTER_ROUTER_H_ +#define IPC_MESSAGE_FILTER_ROUTER_H_ + +#include + +#include "ipc/ipc_message_start.h" + +namespace IPC { + +class Message; +class MessageFilter; + +class MessageFilterRouter { + public: + typedef std::vector MessageFilters; + + MessageFilterRouter(); + ~MessageFilterRouter(); + + void AddFilter(MessageFilter* filter); + void RemoveFilter(MessageFilter* filter); + bool TryFilters(const Message& message); + void Clear(); + + private: + // List of global and selective filters; a given filter will exist in either + // |message_global_filters_| OR |message_class_filters_|, but not both. + // Note that |message_global_filters_| will be given first offering of any + // given message. It's the filter implementer and installer's + // responsibility to ensure that a filter is either global or selective to + // ensure proper message filtering order. + MessageFilters global_filters_; + MessageFilters message_class_filters_[LastIPCMsgStart]; +}; + +} // namespace IPC + +#endif // IPC_MESSAGE_FILTER_ROUTER_H_ -- cgit v1.1