Chromium Code Reviews| Index: blimp/net/blimp_message_multiplexer.h |
| diff --git a/blimp/net/blimp_message_multiplexer.h b/blimp/net/blimp_message_multiplexer.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..e89ee15aead0f602c8793645ef0311091a261409 |
| --- /dev/null |
| +++ b/blimp/net/blimp_message_multiplexer.h |
| @@ -0,0 +1,58 @@ |
| +// Copyright 2015 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 BLIMP_NET_BLIMP_MESSAGE_MULTIPLEXER_H_ |
| +#define BLIMP_NET_BLIMP_MESSAGE_MULTIPLEXER_H_ |
| + |
| +#include "base/macros.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "blimp/common/proto/blimp_message.pb.h" |
| +#include "blimp/net/blimp_message_processor.h" |
| +#include "net/base/completion_callback.h" |
| + |
| +namespace blimp { |
| + |
| +class BlimpConnection; |
| +class BlimpMessageBuffer; |
| + |
| +// Creates MessageProcessors that take outgoing messages and multiplex them |
| +// on to a single output message processor. |
| +class BlimpMessageMultiplexer : private BlimpMessageProcessor { |
| + public: |
| + explicit BlimpMessageMultiplexer(scoped_ptr<BlimpMessageProcessor> output); |
| + |
| + ~BlimpMessageMultiplexer() override; |
| + |
| + // Creates a BlimpMessageProcessor object that may only receive messages of |
| + // type |type|. This object is used by features for sending messages. |
| + scoped_ptr<BlimpMessageProcessor> CreateReceiverForType( |
|
haibinlu
2015/11/04 00:41:26
use "receiver" and "processor" consistently?
Kevin M
2015/11/04 20:09:02
Done.
|
| + BlimpMessage::Type type); |
| + |
| + private: |
| + class MultiplexedSender : public BlimpMessageProcessor { |
| + public: |
| + MultiplexedSender(BlimpMessageBuffer* output, BlimpMessage::Type type); |
| + |
| + ~MultiplexedSender() override; |
| + |
| + // BlimpMessageProcessor implementation. |
| + void ProcessMessage(const BlimpMessage& message, |
| + const net::CompletionCallback& callback) override; |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(MultiplexedSender); |
| + }; |
| + friend class MultiplexedSender; |
| + |
| + // BlimpMessageProcessor implementation. |
| + // Private linkage so that only MultiplexedSender may call it. |
| + void ProcessMessage(const BlimpMessage& message, |
| + const net::CompletionCallback& callback) override; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(BlimpMessageMultiplexer); |
| +}; |
| + |
| +} // namespace blimp |
| + |
| +#endif // BLIMP_NET_BLIMP_MESSAGE_MULTIPLEXER_H_ |