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

Side by Side Diff: remoting/host/native_messaging/pipe_messaging_channel.cc

Issue 1864213002: Convert //remoting to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Mac IWYU Created 4 years, 8 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "remoting/host/native_messaging/pipe_messaging_channel.h" 5 #include "remoting/host/native_messaging/pipe_messaging_channel.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 DCHECK(!event_handler_); 61 DCHECK(!event_handler_);
62 62
63 event_handler_ = event_handler; 63 event_handler_ = event_handler;
64 DCHECK(event_handler_); 64 DCHECK(event_handler_);
65 65
66 native_messaging_reader_.Start( 66 native_messaging_reader_.Start(
67 base::Bind(&PipeMessagingChannel::ProcessMessage, weak_ptr_), 67 base::Bind(&PipeMessagingChannel::ProcessMessage, weak_ptr_),
68 base::Bind(&PipeMessagingChannel::Shutdown, weak_ptr_)); 68 base::Bind(&PipeMessagingChannel::Shutdown, weak_ptr_));
69 } 69 }
70 70
71 void PipeMessagingChannel::ProcessMessage(scoped_ptr<base::Value> message) { 71 void PipeMessagingChannel::ProcessMessage(
72 std::unique_ptr<base::Value> message) {
72 DCHECK(CalledOnValidThread()); 73 DCHECK(CalledOnValidThread());
73 74
74 if (event_handler_) 75 if (event_handler_)
75 event_handler_->OnMessage(std::move(message)); 76 event_handler_->OnMessage(std::move(message));
76 } 77 }
77 78
78 void PipeMessagingChannel::SendMessage(scoped_ptr<base::Value> message) { 79 void PipeMessagingChannel::SendMessage(std::unique_ptr<base::Value> message) {
79 DCHECK(CalledOnValidThread()); 80 DCHECK(CalledOnValidThread());
80 81
81 bool success = message && native_messaging_writer_; 82 bool success = message && native_messaging_writer_;
82 if (success) 83 if (success)
83 success = native_messaging_writer_->WriteMessage(*message); 84 success = native_messaging_writer_->WriteMessage(*message);
84 85
85 if (!success) { 86 if (!success) {
86 // Close the write pipe so no more responses will be sent. 87 // Close the write pipe so no more responses will be sent.
87 native_messaging_writer_.reset(); 88 native_messaging_writer_.reset();
88 Shutdown(); 89 Shutdown();
89 } 90 }
90 } 91 }
91 92
92 void PipeMessagingChannel::Shutdown() { 93 void PipeMessagingChannel::Shutdown() {
93 DCHECK(CalledOnValidThread()); 94 DCHECK(CalledOnValidThread());
94 95
95 if (event_handler_) { 96 if (event_handler_) {
96 // Set |event_handler_| to nullptr to indicate the object is in a shutdown 97 // Set |event_handler_| to nullptr to indicate the object is in a shutdown
97 // cycle. Since event_handler->OnDisconnect() will destroy the current 98 // cycle. Since event_handler->OnDisconnect() will destroy the current
98 // object, |event_handler_| will become a dangling pointer after 99 // object, |event_handler_| will become a dangling pointer after
99 // OnDisconnect() returns. Therefore, we set |event_handler_| to nullptr 100 // OnDisconnect() returns. Therefore, we set |event_handler_| to nullptr
100 // beforehand. 101 // beforehand.
101 EventHandler* handler = event_handler_; 102 EventHandler* handler = event_handler_;
102 event_handler_ = nullptr; 103 event_handler_ = nullptr;
103 handler->OnDisconnect(); 104 handler->OnDisconnect();
104 } 105 }
105 } 106 }
106 107
107 } // namespace remoting 108 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/native_messaging/pipe_messaging_channel.h ('k') | remoting/host/oauth_token_getter_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698