Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(325)

Side by Side Diff: blimp/net/blimp_message_multiplexer.cc

Issue 1933053003: Used oneof in blimp_message.proto (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nits Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « blimp/net/blimp_message_multiplexer.h ('k') | blimp/net/blimp_message_multiplexer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "blimp/net/blimp_message_multiplexer.h" 5 #include "blimp/net/blimp_message_multiplexer.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "blimp/common/create_blimp_message.h"
9 #include "blimp/common/proto/blimp_message.pb.h" 10 #include "blimp/common/proto/blimp_message.pb.h"
10 #include "blimp/net/blimp_message_processor.h" 11 #include "blimp/net/blimp_message_processor.h"
11 12
12 namespace blimp { 13 namespace blimp {
13 namespace { 14 namespace {
14 15
15 class MultiplexedSender : public BlimpMessageProcessor { 16 class MultiplexedSender : public BlimpMessageProcessor {
16 public: 17 public:
17 MultiplexedSender(base::WeakPtr<BlimpMessageProcessor> output_processor, 18 MultiplexedSender(base::WeakPtr<BlimpMessageProcessor> output_processor,
18 BlimpMessage::Type type); 19 BlimpMessage::FeatureCase feature_case);
19 ~MultiplexedSender() override; 20 ~MultiplexedSender() override;
20 21
21 // BlimpMessageProcessor implementation. 22 // BlimpMessageProcessor implementation.
22 // |message.type|, if set, must match the sender's type. 23 // |message.feature_case|, if set, must match the sender's |feature_case_|.
23 void ProcessMessage(std::unique_ptr<BlimpMessage> message, 24 void ProcessMessage(std::unique_ptr<BlimpMessage> message,
24 const net::CompletionCallback& callback) override; 25 const net::CompletionCallback& callback) override;
25 26
26 private: 27 private:
27 base::WeakPtr<BlimpMessageProcessor> output_processor_; 28 base::WeakPtr<BlimpMessageProcessor> output_processor_;
28 BlimpMessage::Type type_; 29 BlimpMessage::FeatureCase feature_case_;
29 30
30 DISALLOW_COPY_AND_ASSIGN(MultiplexedSender); 31 DISALLOW_COPY_AND_ASSIGN(MultiplexedSender);
31 }; 32 };
32 33
33 MultiplexedSender::MultiplexedSender( 34 MultiplexedSender::MultiplexedSender(
34 base::WeakPtr<BlimpMessageProcessor> output_processor, 35 base::WeakPtr<BlimpMessageProcessor> output_processor,
35 BlimpMessage::Type type) 36 BlimpMessage::FeatureCase feature_case)
36 : output_processor_(output_processor), type_(type) {} 37 : output_processor_(output_processor), feature_case_(feature_case) {}
37 38
38 MultiplexedSender::~MultiplexedSender() {} 39 MultiplexedSender::~MultiplexedSender() {}
39 40
40 void MultiplexedSender::ProcessMessage( 41 void MultiplexedSender::ProcessMessage(
41 std::unique_ptr<BlimpMessage> message, 42 std::unique_ptr<BlimpMessage> message,
42 const net::CompletionCallback& callback) { 43 const net::CompletionCallback& callback) {
43 if (message->has_type()) { 44 DCHECK_EQ(feature_case_, message->feature_case());
44 DCHECK_EQ(type_, message->type());
45 } else {
46 message->set_type(type_);
47 }
48 output_processor_->ProcessMessage(std::move(message), callback); 45 output_processor_->ProcessMessage(std::move(message), callback);
49 } 46 }
50 47
51 } // namespace 48 } // namespace
52 49
53 BlimpMessageMultiplexer::BlimpMessageMultiplexer( 50 BlimpMessageMultiplexer::BlimpMessageMultiplexer(
54 BlimpMessageProcessor* output_processor) 51 BlimpMessageProcessor* output_processor)
55 : output_weak_factory_(output_processor) {} 52 : output_weak_factory_(output_processor) {}
56 53
57 BlimpMessageMultiplexer::~BlimpMessageMultiplexer() {} 54 BlimpMessageMultiplexer::~BlimpMessageMultiplexer() {}
58 55
59 std::unique_ptr<BlimpMessageProcessor> 56 std::unique_ptr<BlimpMessageProcessor> BlimpMessageMultiplexer::CreateSender(
60 BlimpMessageMultiplexer::CreateSenderForType(BlimpMessage::Type type) { 57 BlimpMessage::FeatureCase feature_case) {
61 return base::WrapUnique( 58 return base::WrapUnique(
62 new MultiplexedSender(output_weak_factory_.GetWeakPtr(), type)); 59 new MultiplexedSender(output_weak_factory_.GetWeakPtr(), feature_case));
63 } 60 }
64 } // namespace blimp 61 } // namespace blimp
OLDNEW
« no previous file with comments | « blimp/net/blimp_message_multiplexer.h ('k') | blimp/net/blimp_message_multiplexer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698