diff options
author | garykac@chromium.org <garykac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-03 21:56:42 +0000 |
---|---|---|
committer | garykac@chromium.org <garykac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-03 21:56:42 +0000 |
commit | 230d2fd2e1cafaab5cd5e4d2a9f64b4ae272550a (patch) | |
tree | 8aa02e4a85f0d314a4419a434037e163a41981c8 /remoting/protocol/session.h | |
parent | 3296839602c5c54cae0b0fb0a9d6623a5ba65895 (diff) | |
download | chromium_src-230d2fd2e1cafaab5cd5e4d2a9f64b4ae272550a.zip chromium_src-230d2fd2e1cafaab5cd5e4d2a9f64b4ae272550a.tar.gz chromium_src-230d2fd2e1cafaab5cd5e4d2a9f64b4ae272550a.tar.bz2 |
Rename classes for Chromoting:
ChromotocolServer -> protocol::SessionManager
ChromotocolConnection -> protocol::Session
BUG=none
TEST=compiles + make chromoting connection
Review URL: http://codereview.chromium.org/4313001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64971 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/protocol/session.h')
-rw-r--r-- | remoting/protocol/session.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/remoting/protocol/session.h b/remoting/protocol/session.h new file mode 100644 index 0000000..9319fef --- /dev/null +++ b/remoting/protocol/session.h @@ -0,0 +1,98 @@ +// Copyright (c) 2010 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_SESSION_H_ +#define REMOTING_PROTOCOL_SESSION_H_ + +#include <string> + +#include "base/callback.h" +#include "remoting/protocol/chromotocol_config.h" + +class MessageLoop; +class Task; + +namespace net { +class Socket; +} // namespace net + +namespace remoting { + +namespace protocol { + +// Generic interface for Chromotocol connection used by both client and host. +// Provides access to the connection channels, but doesn't depend on the +// protocol used for each channel. +// TODO(sergeyu): Remove refcounting? +class Session + : public base::RefCountedThreadSafe<Session> { + public: + enum State { + INITIALIZING, + CONNECTING, + CONNECTED, + CLOSED, + FAILED, + }; + + typedef Callback1<State>::Type StateChangeCallback; + + // Set callback that is called when state of the connection is changed. + // Must be called on the jingle thread only. + virtual void SetStateChangeCallback(StateChangeCallback* callback) = 0; + + // Reliable PseudoTCP channels for this connection. + virtual net::Socket* control_channel() = 0; + virtual net::Socket* event_channel() = 0; + + // TODO(sergeyu): Remove VideoChannel, and use RTP channels instead. + virtual net::Socket* video_channel() = 0; + + // Unreliable channels for this connection. + virtual net::Socket* video_rtp_channel() = 0; + virtual net::Socket* video_rtcp_channel() = 0; + + // TODO(sergeyu): Make it possible to create/destroy additional channels + // on-fly? + + // JID of the other side. + virtual const std::string& jid() = 0; + + // Message loop that must be used to access the channels of this connection. + virtual MessageLoop* message_loop() = 0; + + // Configuration of the protocol that was sent or received in the + // session-initiate jingle message. Returned pointer is valid until + // connection is closed. + virtual const CandidateChromotocolConfig* candidate_config() = 0; + + // Protocol configuration. Can be called only after session has been accepted. + // Returned pointer is valid until connection is closed. + virtual const ChromotocolConfig* config() = 0; + + // Set protocol configuration for an incoming session. Must be called + // on the host before the connection is accepted, from + // ChromotocolServer::IncomingConnectionCallback. Ownership of |config| is + // given to the connection. + virtual void set_config(const ChromotocolConfig* config) = 0; + + // Closes connection. Callbacks are guaranteed not to be called after + // |closed_task| is executed. + virtual void Close(Task* closed_task) = 0; + + protected: + friend class base::RefCountedThreadSafe<Session>; + + Session() { } + virtual ~Session() { } + + private: + DISALLOW_COPY_AND_ASSIGN(Session); +}; + +} // namespace protocol + +} // namespace remoting + +#endif // REMOTING_PROTOCOL_SESSION_H_ |