OLD | NEW |
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 569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
580 endpoint_client_.reset(); | 580 endpoint_client_.reset(); |
581 if (controller_) | 581 if (controller_) |
582 controller_->ShutDown(); | 582 controller_->ShutDown(); |
583 } | 583 } |
584 | 584 |
585 void set_connection_error_handler(const base::Closure& handler) { | 585 void set_connection_error_handler(const base::Closure& handler) { |
586 DCHECK(endpoint_client_); | 586 DCHECK(endpoint_client_); |
587 endpoint_client_->set_connection_error_handler(handler); | 587 endpoint_client_->set_connection_error_handler(handler); |
588 } | 588 } |
589 | 589 |
| 590 mojo::AssociatedGroup* associated_group() { |
| 591 DCHECK(controller_); |
| 592 return controller_->associated_group(); |
| 593 } |
| 594 |
590 void Bind(mojo::ScopedMessagePipeHandle handle) { | 595 void Bind(mojo::ScopedMessagePipeHandle handle) { |
591 DCHECK(!controller_); | 596 DCHECK(!controller_); |
592 controller_ = | 597 controller_ = |
593 new ChannelAssociatedGroupController(false, std::move(handle)); | 598 new ChannelAssociatedGroupController(false, std::move(handle)); |
594 stub_.serialization_context()->group_controller = controller_; | 599 stub_.serialization_context()->group_controller = controller_; |
595 | 600 |
596 endpoint_client_.reset(new mojo::InterfaceEndpointClient( | 601 endpoint_client_.reset(new mojo::InterfaceEndpointClient( |
597 controller_->CreateLocalEndpointHandle(mojo::kMasterInterfaceId), | 602 controller_->CreateLocalEndpointHandle(mojo::kMasterInterfaceId), |
598 &stub_, | 603 &stub_, |
599 base::MakeUnique<typename mojom::Bootstrap::RequestValidator_>(), | 604 base::MakeUnique<typename mojom::Bootstrap::RequestValidator_>(), |
(...skipping 10 matching lines...) Expand all Loading... |
610 | 615 |
611 // MojoBootstrap for the server process. You should create the instance | 616 // MojoBootstrap for the server process. You should create the instance |
612 // using MojoBootstrap::Create(). | 617 // using MojoBootstrap::Create(). |
613 class MojoServerBootstrap : public MojoBootstrap { | 618 class MojoServerBootstrap : public MojoBootstrap { |
614 public: | 619 public: |
615 MojoServerBootstrap(); | 620 MojoServerBootstrap(); |
616 | 621 |
617 private: | 622 private: |
618 // MojoBootstrap implementation. | 623 // MojoBootstrap implementation. |
619 void Connect() override; | 624 void Connect() override; |
| 625 mojo::AssociatedGroup* GetAssociatedGroup() override { |
| 626 return bootstrap_.associated_group(); |
| 627 } |
620 | 628 |
621 void OnInitDone(int32_t peer_pid); | 629 void OnInitDone(int32_t peer_pid); |
622 | 630 |
623 BootstrapMasterProxy bootstrap_; | 631 BootstrapMasterProxy bootstrap_; |
624 IPC::mojom::ChannelAssociatedPtrInfo send_channel_; | 632 IPC::mojom::ChannelAssociatedPtrInfo send_channel_; |
625 IPC::mojom::ChannelAssociatedRequest receive_channel_request_; | 633 IPC::mojom::ChannelAssociatedRequest receive_channel_request_; |
626 | 634 |
627 DISALLOW_COPY_AND_ASSIGN(MojoServerBootstrap); | 635 DISALLOW_COPY_AND_ASSIGN(MojoServerBootstrap); |
628 }; | 636 }; |
629 | 637 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
669 | 677 |
670 // MojoBootstrap for client processes. You should create the instance | 678 // MojoBootstrap for client processes. You should create the instance |
671 // using MojoBootstrap::Create(). | 679 // using MojoBootstrap::Create(). |
672 class MojoClientBootstrap : public MojoBootstrap, public mojom::Bootstrap { | 680 class MojoClientBootstrap : public MojoBootstrap, public mojom::Bootstrap { |
673 public: | 681 public: |
674 MojoClientBootstrap(); | 682 MojoClientBootstrap(); |
675 | 683 |
676 private: | 684 private: |
677 // MojoBootstrap implementation. | 685 // MojoBootstrap implementation. |
678 void Connect() override; | 686 void Connect() override; |
| 687 mojo::AssociatedGroup* GetAssociatedGroup() override { |
| 688 return binding_.associated_group(); |
| 689 } |
679 | 690 |
680 // mojom::Bootstrap implementation. | 691 // mojom::Bootstrap implementation. |
681 void Init(mojom::ChannelAssociatedRequest receive_channel, | 692 void Init(mojom::ChannelAssociatedRequest receive_channel, |
682 mojom::ChannelAssociatedPtrInfo send_channel, | 693 mojom::ChannelAssociatedPtrInfo send_channel, |
683 int32_t peer_pid, | 694 int32_t peer_pid, |
684 const InitCallback& callback) override; | 695 const InitCallback& callback) override; |
685 | 696 |
686 BootstrapMasterBinding binding_; | 697 BootstrapMasterBinding binding_; |
687 | 698 |
688 DISALLOW_COPY_AND_ASSIGN(MojoClientBootstrap); | 699 DISALLOW_COPY_AND_ASSIGN(MojoClientBootstrap); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
756 | 767 |
757 bool MojoBootstrap::HasFailed() const { | 768 bool MojoBootstrap::HasFailed() const { |
758 return state() == STATE_ERROR; | 769 return state() == STATE_ERROR; |
759 } | 770 } |
760 | 771 |
761 mojo::ScopedMessagePipeHandle MojoBootstrap::TakeHandle() { | 772 mojo::ScopedMessagePipeHandle MojoBootstrap::TakeHandle() { |
762 return std::move(handle_); | 773 return std::move(handle_); |
763 } | 774 } |
764 | 775 |
765 } // namespace IPC | 776 } // namespace IPC |
OLD | NEW |