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

Side by Side Diff: ipc/ipc_mojo_bootstrap.cc

Issue 2185723002: Eliminate deferred destruction of AssociatedGroupController (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 4 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 | « no previous file | mojo/public/cpp/bindings/associated_group_controller.h » ('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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "ipc/ipc_mojo_bootstrap.h" 5 #include "ipc/ipc_mojo_bootstrap.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <map> 9 #include <map>
10 #include <memory> 10 #include <memory>
(...skipping 30 matching lines...) Expand all
41 namespace { 41 namespace {
42 42
43 class ChannelAssociatedGroupController 43 class ChannelAssociatedGroupController
44 : public mojo::AssociatedGroupController, 44 : public mojo::AssociatedGroupController,
45 public mojo::MessageReceiver, 45 public mojo::MessageReceiver,
46 public mojo::PipeControlMessageHandlerDelegate { 46 public mojo::PipeControlMessageHandlerDelegate {
47 public: 47 public:
48 ChannelAssociatedGroupController( 48 ChannelAssociatedGroupController(
49 bool set_interface_id_namespace_bit, 49 bool set_interface_id_namespace_bit,
50 const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) 50 const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner)
51 : mojo::AssociatedGroupController(base::ThreadTaskRunnerHandle::Get()), 51 : task_runner_(ipc_task_runner),
52 task_runner_(ipc_task_runner),
53 proxy_task_runner_(base::ThreadTaskRunnerHandle::Get()), 52 proxy_task_runner_(base::ThreadTaskRunnerHandle::Get()),
54 set_interface_id_namespace_bit_(set_interface_id_namespace_bit), 53 set_interface_id_namespace_bit_(set_interface_id_namespace_bit),
55 header_validator_( 54 header_validator_(
56 "IPC::mojom::Bootstrap [master] MessageHeaderValidator", this), 55 "IPC::mojom::Bootstrap [master] MessageHeaderValidator", this),
57 control_message_handler_(this), 56 control_message_handler_(this),
58 control_message_proxy_thunk_(this), 57 control_message_proxy_thunk_(this),
59 control_message_proxy_(&control_message_proxy_thunk_) { 58 control_message_proxy_(&control_message_proxy_thunk_) {
60 thread_checker_.DetachFromThread(); 59 thread_checker_.DetachFromThread();
61 control_message_handler_.SetDescription( 60 control_message_handler_.SetDescription(
62 "IPC::mojom::Bootstrap [master] PipeControlMessageHandler"); 61 "IPC::mojom::Bootstrap [master] PipeControlMessageHandler");
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 bool Accept(mojo::Message* message) override { 337 bool Accept(mojo::Message* message) override {
339 return controller_->SendMessage(message); 338 return controller_->SendMessage(message);
340 } 339 }
341 340
342 ChannelAssociatedGroupController* controller_; 341 ChannelAssociatedGroupController* controller_;
343 342
344 DISALLOW_COPY_AND_ASSIGN(ControlMessageProxyThunk); 343 DISALLOW_COPY_AND_ASSIGN(ControlMessageProxyThunk);
345 }; 344 };
346 345
347 ~ChannelAssociatedGroupController() override { 346 ~ChannelAssociatedGroupController() override {
347 DCHECK(!connector_);
348
348 base::AutoLock locker(lock_); 349 base::AutoLock locker(lock_);
349 for (auto iter = endpoints_.begin(); iter != endpoints_.end();) { 350 for (auto iter = endpoints_.begin(); iter != endpoints_.end();) {
350 Endpoint* endpoint = iter->second.get(); 351 Endpoint* endpoint = iter->second.get();
351 ++iter; 352 ++iter;
352 353
353 DCHECK(endpoint->closed()); 354 DCHECK(endpoint->closed());
354 MarkPeerClosedAndMaybeRemove(endpoint); 355 MarkPeerClosedAndMaybeRemove(endpoint);
355 } 356 }
356 357
357 DCHECK(endpoints_.empty()); 358 DCHECK(endpoints_.empty());
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 Channel::Mode mode, 694 Channel::Mode mode,
694 Delegate* delegate, 695 Delegate* delegate,
695 const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) { 696 const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) {
696 return base::MakeUnique<MojoBootstrapImpl>( 697 return base::MakeUnique<MojoBootstrapImpl>(
697 std::move(handle), delegate, 698 std::move(handle), delegate,
698 new ChannelAssociatedGroupController(mode == Channel::MODE_SERVER, 699 new ChannelAssociatedGroupController(mode == Channel::MODE_SERVER,
699 ipc_task_runner)); 700 ipc_task_runner));
700 } 701 }
701 702
702 } // namespace IPC 703 } // namespace IPC
OLDNEW
« no previous file with comments | « no previous file | mojo/public/cpp/bindings/associated_group_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698