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

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: Compared specific 'case' field into DCHECKs 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
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 type);
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.type|, if set, must match the sender's type.
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 type_;
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 type)
36 : output_processor_(output_processor), type_(type) {} 37 : output_processor_(output_processor), type_(type) {}
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 if (message->feature_case() != BlimpMessage::FEATURE_NOT_SET) {
44 DCHECK_EQ(type_, message->type()); 45 DCHECK_EQ(type_, message->feature_case());
45 } else { 46 } else {
46 message->set_type(type_); 47 SetBlimpMessageType(message.get(), type_);
Kevin M 2016/05/16 22:58:02 We should probably standardize on what message for
shaktisahu 2016/05/17 01:21:32 Done.
47 } 48 }
48 output_processor_->ProcessMessage(std::move(message), callback); 49 output_processor_->ProcessMessage(std::move(message), callback);
49 } 50 }
50 51
51 } // namespace 52 } // namespace
52 53
53 BlimpMessageMultiplexer::BlimpMessageMultiplexer( 54 BlimpMessageMultiplexer::BlimpMessageMultiplexer(
54 BlimpMessageProcessor* output_processor) 55 BlimpMessageProcessor* output_processor)
55 : output_weak_factory_(output_processor) {} 56 : output_weak_factory_(output_processor) {}
56 57
57 BlimpMessageMultiplexer::~BlimpMessageMultiplexer() {} 58 BlimpMessageMultiplexer::~BlimpMessageMultiplexer() {}
58 59
59 std::unique_ptr<BlimpMessageProcessor> 60 std::unique_ptr<BlimpMessageProcessor>
60 BlimpMessageMultiplexer::CreateSenderForType(BlimpMessage::Type type) { 61 BlimpMessageMultiplexer::CreateSenderForType(BlimpMessage::FeatureCase type) {
61 return base::WrapUnique( 62 return base::WrapUnique(
62 new MultiplexedSender(output_weak_factory_.GetWeakPtr(), type)); 63 new MultiplexedSender(output_weak_factory_.GetWeakPtr(), type));
63 } 64 }
64 } // namespace blimp 65 } // namespace blimp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698