Index: remoting/protocol/libjingle_transport_factory.h |
diff --git a/remoting/protocol/libjingle_transport_factory.h b/remoting/protocol/libjingle_transport_factory.h |
index dfa0ab13c0dde43b16c749262df481c8971bb975..637410c97c3ba4666752a927c36b0d75ad4afd0b 100644 |
--- a/remoting/protocol/libjingle_transport_factory.h |
+++ b/remoting/protocol/libjingle_transport_factory.h |
@@ -5,6 +5,10 @@ |
#ifndef REMOTING_PROTOCOL_LIBJINGLE_TRANSPORT_FACTORY_H_ |
#define REMOTING_PROTOCOL_LIBJINGLE_TRANSPORT_FACTORY_H_ |
+#include <list> |
+ |
+#include "base/callback_forward.h" |
+#include "remoting/jingle_glue/network_settings.h" |
#include "remoting/protocol/transport.h" |
namespace cricket { |
@@ -19,34 +23,49 @@ class URLRequestContextGetter; |
namespace talk_base { |
class NetworkManager; |
class PacketSocketFactory; |
+class SocketAddress; |
} // namespace talk_base |
namespace remoting { |
-struct NetworkSettings; |
+class SignalStrategy; |
+class JingleInfoRequest; |
namespace protocol { |
class LibjingleTransportFactory : public TransportFactory { |
public: |
- // Need to use cricket::HttpPortAllocatorBase pointer for the |
- // |port_allocator|, so that it is possible to configure |
- // |port_allocator| with STUN/Relay addresses. |
- // TODO(sergeyu): Reconsider this design. |
+ // |signal_strategy| must outlive LibjingleTransportFactory. Need to use |
+ // cricket::HttpPortAllocatorBase pointer for the |port_allocator|, so that it |
+ // is possible to configure |port_allocator| with STUN/Relay addresses. |
LibjingleTransportFactory( |
+ SignalStrategy* signal_strategy, |
scoped_ptr<cricket::HttpPortAllocatorBase> port_allocator, |
- bool incoming_only); |
+ const NetworkSettings& network_settings); |
virtual ~LibjingleTransportFactory(); |
// TransportFactory interface. |
- virtual void SetTransportConfig(const TransportConfig& config) OVERRIDE; |
+ virtual void PrepareTokens() OVERRIDE; |
virtual scoped_ptr<StreamTransport> CreateStreamTransport() OVERRIDE; |
virtual scoped_ptr<DatagramTransport> CreateDatagramTransport() OVERRIDE; |
private: |
+ void EnsureFreshJingleInfo(); |
+ void OnJingleInfo(const std::string& relay_token, |
+ const std::vector<std::string>& relay_hosts, |
+ const std::vector<talk_base::SocketAddress>& stun_hosts); |
+ |
+ SignalStrategy* signal_strategy_; |
scoped_ptr<cricket::HttpPortAllocatorBase> port_allocator_; |
- bool incoming_only_; |
+ NetworkSettings network_settings_; |
+ |
+ base::TimeTicks last_jingle_info_update_time_; |
+ scoped_ptr<JingleInfoRequest> jingle_info_request_; |
+ |
+ // When there is an active |jingle_info_request_| stores list of callbacks to |
+ // be called once the |jingle_info_request_| is finished. |
+ std::list<base::Closure> on_jingle_info_callbacks_; |
DISALLOW_COPY_AND_ASSIGN(LibjingleTransportFactory); |
}; |