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

Unified Diff: remoting/protocol/connection_to_host_impl.h

Issue 976233003: Adding the base ChromotingInstance implementation and unittests. This class will be used by the ap… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing Release Build Break Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: remoting/protocol/connection_to_host_impl.h
diff --git a/remoting/protocol/connection_to_host_impl.h b/remoting/protocol/connection_to_host_impl.h
new file mode 100644
index 0000000000000000000000000000000000000000..57b5319074b9fffd0645b3aa46b3a845ca637669
--- /dev/null
+++ b/remoting/protocol/connection_to_host_impl.h
@@ -0,0 +1,145 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef REMOTING_PROTOCOL_CONNECTION_TO_HOST_IMPL_H_
+#define REMOTING_PROTOCOL_CONNECTION_TO_HOST_IMPL_H_
+
+#include <set>
+#include <string>
+
+#include "base/callback_forward.h"
+#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/threading/non_thread_safe.h"
+#include "remoting/proto/internal.pb.h"
+#include "remoting/protocol/channel_dispatcher_base.h"
+#include "remoting/protocol/clipboard_filter.h"
+#include "remoting/protocol/connection_to_host.h"
+#include "remoting/protocol/errors.h"
+#include "remoting/protocol/input_filter.h"
+#include "remoting/protocol/message_reader.h"
+#include "remoting/protocol/monitored_video_stub.h"
+#include "remoting/protocol/session.h"
+#include "remoting/protocol/session_config.h"
+#include "remoting/protocol/session_manager.h"
+#include "remoting/signaling/signal_strategy.h"
+
+namespace remoting {
+
+class XmppProxy;
+class VideoPacket;
+
+namespace protocol {
+
+class AudioReader;
+class AudioStub;
+class Authenticator;
+class ClientControlDispatcher;
+class ClientEventDispatcher;
+class ClientStub;
+class ClipboardStub;
+class HostStub;
+class InputStub;
+class SessionConfig;
+class TransportFactory;
+class ClientVideoDispatcher;
+class VideoStub;
Sergey Ulanov 2015/03/11 20:22:17 Many of these classes are already forward-declared
+
+class ConnectionToHostImpl : public ConnectionToHost,
+ public SignalStrategy::Listener,
+ public SessionManager::Listener,
+ public Session::EventHandler,
+ public ChannelDispatcherBase::EventHandler,
+ public base::NonThreadSafe {
+ public:
+ ConnectionToHostImpl();
+ ~ConnectionToHostImpl() override;
+
+ // ConnectionToHost interface.
+ void set_candidate_config(scoped_ptr<CandidateSessionConfig> config) override;
+ void set_client_stub(ClientStub* client_stub) override;
+ void set_clipboard_stub(ClipboardStub* clipboard_stub) override;
+ void set_video_stub(VideoStub* video_stub) override;
+ void set_audio_stub(AudioStub* audio_stub) override;
+ void Connect(SignalStrategy* signal_strategy,
+ scoped_ptr<TransportFactory> transport_factory,
+ scoped_ptr<Authenticator> authenticator,
+ const std::string& host_jid,
+ HostEventCallback* event_callback) override;
+ const SessionConfig& config() override;
+ ClipboardStub* clipboard_forwarder() override;
+ HostStub* host_stub() override;
+ InputStub* input_stub() override;
+ State state() const override;
+
+ // SignalStrategy::StatusObserver interface.
Sergey Ulanov 2015/03/11 20:22:17 please move all interfaces other than ConnectionTo
+ void OnSignalStrategyStateChange(SignalStrategy::State state) override;
+ bool OnSignalStrategyIncomingStanza(const buzz::XmlElement* stanza) override;
+
+ // SessionManager::Listener interface.
+ void OnSessionManagerReady() override;
+ void OnIncomingSession(
+ Session* session,
+ SessionManager::IncomingSessionResponse* response) override;
+
+ // Session::EventHandler interface.
+ void OnSessionStateChange(Session::State state) override;
+ void OnSessionRouteChange(const std::string& channel_name,
+ const TransportRoute& route) override;
+
+ // ChannelDispatcherBase::EventHandler interface.
+ void OnChannelInitialized(ChannelDispatcherBase* channel_dispatcher) override;
+ void OnChannelError(ChannelDispatcherBase* channel_dispatcher,
+ ErrorCode error) override;
+
+ // MonitoredVideoStub::EventHandler interface.
+ virtual void OnVideoChannelStatus(bool active);
+
+ private:
+ void NotifyIfChannelsReady();
+
+ void CloseOnError(ErrorCode error);
+
+ // Stops writing in the channels.
+ void CloseChannels();
+
+ void SetState(State state, ErrorCode error);
+
+ std::string host_jid_;
+ std::string host_public_key_;
+ scoped_ptr<Authenticator> authenticator_;
+
+ HostEventCallback* event_callback_;
+
+ scoped_ptr<CandidateSessionConfig> candidate_config_;
+
+ // Stub for incoming messages.
+ ClientStub* client_stub_;
+ ClipboardStub* clipboard_stub_;
+ AudioStub* audio_stub_;
+
+ SignalStrategy* signal_strategy_;
+ scoped_ptr<SessionManager> session_manager_;
+ scoped_ptr<Session> session_;
+ scoped_ptr<MonitoredVideoStub> monitored_video_stub_;
+
+ scoped_ptr<ClientVideoDispatcher> video_dispatcher_;
+ scoped_ptr<AudioReader> audio_reader_;
+ scoped_ptr<ClientControlDispatcher> control_dispatcher_;
+ scoped_ptr<ClientEventDispatcher> event_dispatcher_;
+ ClipboardFilter clipboard_forwarder_;
+ InputFilter event_forwarder_;
+
+ // Internal state of the connection.
+ State state_;
+ ErrorCode error_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ConnectionToHostImpl);
+};
+
+} // namespace protocol
+} // namespace remoting
+
+#endif // REMOTING_PROTOCOL_CONNECTION_TO_HOST_IMPL_H_

Powered by Google App Engine
This is Rietveld 408576698