| Index: webrtc/p2p/client/basicportallocator.h
|
| diff --git a/webrtc/p2p/client/basicportallocator.h b/webrtc/p2p/client/basicportallocator.h
|
| index 8ea66c431e76d560a6299c2831d77a1a83dfeb06..9cae6da668c5eb42b5c8bf6c3210d3e036cb368e 100644
|
| --- a/webrtc/p2p/client/basicportallocator.h
|
| +++ b/webrtc/p2p/client/basicportallocator.h
|
| @@ -47,7 +47,9 @@ class BasicPortAllocator : public PortAllocator {
|
|
|
| int network_ignore_mask() const { return network_ignore_mask_; }
|
|
|
| - rtc::NetworkManager* network_manager() { return network_manager_; }
|
| + rtc::NetworkManager* network_manager() const override {
|
| + return network_manager_;
|
| + }
|
|
|
| // If socket_factory() is set to NULL each PortAllocatorSession
|
| // creates its own socket factory.
|
| @@ -84,19 +86,36 @@ class BasicPortAllocatorSession : public PortAllocatorSession,
|
| const std::string& ice_pwd);
|
| ~BasicPortAllocatorSession();
|
|
|
| + // TODO(honghaiz): When continual gathering is fully enabled, we don't need
|
| + // the state STATE_STOPPED. A session can always start new allocation
|
| + // sequences.
|
| + enum State {
|
| + STATE_RUNNING, // Current allocation sequence is running, can start new
|
| + // allocation sequences.
|
| + STATE_CLEARED, // Current allocation sequence is complete, can start new
|
| + // allocation sequences.
|
| + STATE_STOPPED // Current allocation sequence is complete, cannot start
|
| + // new allocation sequences.
|
| + };
|
| +
|
| virtual BasicPortAllocator* allocator() { return allocator_; }
|
| rtc::Thread* network_thread() { return network_thread_; }
|
| rtc::PacketSocketFactory* socket_factory() { return socket_factory_; }
|
|
|
| void SetCandidateFilter(uint32_t filter) override;
|
| +
|
| void StartGettingPorts() override;
|
| void StopGettingPorts() override;
|
| void ClearGettingPorts() override;
|
| - bool IsGettingPorts() override { return running_; }
|
| + bool IsGettingPorts() override { return state_ == STATE_RUNNING; }
|
| + bool CanGetPorts() override { return state_ != STATE_STOPPED; }
|
| +
|
| // These will all be cricket::Ports.
|
| std::vector<PortInterface*> ReadyPorts() const override;
|
| std::vector<Candidate> ReadyCandidates() const override;
|
| + std::vector<Candidate> ReadyCandidates(PortInterface* port) const override;
|
| bool CandidatesAllocationDone() const override;
|
| + bool RegatherOnFailedNetworks() override;
|
|
|
| protected:
|
| void UpdateIceParametersInternal() override;
|
| @@ -170,7 +189,8 @@ class BasicPortAllocatorSession : public PortAllocatorSession,
|
| void MaybeSignalCandidatesAllocationDone();
|
| void OnPortAllocationComplete(AllocationSequence* seq);
|
| PortData* FindPort(Port* port);
|
| - void GetNetworks(std::vector<rtc::Network*>* networks);
|
| + std::vector<rtc::Network*> GetNetworks() const;
|
| + std::vector<rtc::Network*> GetFailedNetworks() const;
|
|
|
| bool CheckCandidateFilter(const Candidate& c) const;
|
| bool CandidatePairable(const Candidate& c, const Port* port) const;
|
| @@ -184,7 +204,7 @@ class BasicPortAllocatorSession : public PortAllocatorSession,
|
| rtc::PacketSocketFactory* socket_factory_;
|
| bool allocation_started_;
|
| bool network_manager_started_;
|
| - bool running_; // set when StartGetAllPorts is called
|
| + State state_ = STATE_RUNNING;
|
| bool allocation_sequences_created_;
|
| std::vector<PortConfiguration*> configs_;
|
| std::vector<AllocationSequence*> sequences_;
|
| @@ -255,11 +275,15 @@ class AllocationSequence : public rtc::MessageHandler,
|
| ~AllocationSequence();
|
| bool Init();
|
| void Clear();
|
| - void OnNetworkRemoved();
|
| + void OnNetworkInactivated();
|
|
|
| State state() const { return state_; }
|
| const rtc::Network* network() const { return network_; }
|
| - bool network_removed() const { return network_removed_; }
|
| +
|
| + bool network_inactive() const { return network_inactive_; }
|
| + void set_network_inactive(bool network_inactive) {
|
| + network_inactive_ = network_inactive;
|
| + }
|
|
|
| // Disables the phases for a new sequence that this one already covers for an
|
| // equivalent network setup.
|
| @@ -309,7 +333,7 @@ class AllocationSequence : public rtc::MessageHandler,
|
| void OnPortDestroyed(PortInterface* port);
|
|
|
| BasicPortAllocatorSession* session_;
|
| - bool network_removed_ = false;
|
| + bool network_inactive_ = false;
|
| rtc::Network* network_;
|
| rtc::IPAddress ip_;
|
| PortConfiguration* config_;
|
|
|