OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // The purpose of SessionManager is to facilitate creation of chromotocol | 5 // The purpose of SessionManager is to facilitate creation of chromotocol |
6 // sessions. Both host and client use it to establish chromotocol | 6 // sessions. Both host and client use it to establish chromotocol |
7 // sessions. JingleChromotocolServer implements this inteface using | 7 // sessions. JingleChromotocolServer implements this inteface using |
8 // libjingle. | 8 // libjingle. |
9 // | 9 // |
10 // OUTGOING SESSIONS | 10 // OUTGOING SESSIONS |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 #ifndef REMOTING_PROTOCOL_SESSION_MANAGER_H_ | 45 #ifndef REMOTING_PROTOCOL_SESSION_MANAGER_H_ |
46 #define REMOTING_PROTOCOL_SESSION_MANAGER_H_ | 46 #define REMOTING_PROTOCOL_SESSION_MANAGER_H_ |
47 | 47 |
48 #include <string> | 48 #include <string> |
49 | 49 |
50 #include "base/callback.h" | 50 #include "base/callback.h" |
51 #include "base/memory/ref_counted.h" | 51 #include "base/memory/ref_counted.h" |
52 #include "base/threading/non_thread_safe.h" | 52 #include "base/threading/non_thread_safe.h" |
53 #include "remoting/protocol/session.h" | 53 #include "remoting/protocol/session.h" |
54 | 54 |
55 namespace crypto { | |
56 class RSAPrivateKey; | |
57 } // namespace base | |
58 | |
59 namespace remoting { | 55 namespace remoting { |
60 | 56 |
61 class SignalStrategy; | 57 class SignalStrategy; |
62 | 58 |
63 namespace protocol { | 59 namespace protocol { |
64 | 60 |
| 61 class Authenticator; |
| 62 class AuthenticatorFactory; |
| 63 |
65 // Generic interface for Chromoting session manager. | 64 // Generic interface for Chromoting session manager. |
66 // | 65 // |
67 // TODO(sergeyu): Split this into two separate interfaces: one for the | 66 // TODO(sergeyu): Split this into two separate interfaces: one for the |
68 // client side and one for the host side. | 67 // client side and one for the host side. |
69 class SessionManager : public base::NonThreadSafe { | 68 class SessionManager : public base::NonThreadSafe { |
70 public: | 69 public: |
71 SessionManager() { } | 70 SessionManager() { } |
72 virtual ~SessionManager() { } | 71 virtual ~SessionManager() { } |
73 | 72 |
74 enum IncomingSessionResponse { | 73 enum IncomingSessionResponse { |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 // used when NAT traversal is disabled, so P2P connection will work | 105 // used when NAT traversal is disabled, so P2P connection will work |
107 // only when both peers are on the same network. If this object is | 106 // only when both peers are on the same network. If this object is |
108 // used in server mode, then |private_key| and |certificate| are | 107 // used in server mode, then |private_key| and |certificate| are |
109 // used to establish a secured communication with the client. It | 108 // used to establish a secured communication with the client. It |
110 // will also take ownership of these objects. On the client side | 109 // will also take ownership of these objects. On the client side |
111 // pass in NULL for |private_key| and empty string for | 110 // pass in NULL for |private_key| and empty string for |
112 // |certificate|. | 111 // |certificate|. |
113 virtual void Init(const std::string& local_jid, | 112 virtual void Init(const std::string& local_jid, |
114 SignalStrategy* signal_strategy, | 113 SignalStrategy* signal_strategy, |
115 Listener* listener, | 114 Listener* listener, |
116 crypto::RSAPrivateKey* private_key, | |
117 const std::string& certificate, | |
118 bool allow_nat_traversal) = 0; | 115 bool allow_nat_traversal) = 0; |
119 | 116 |
120 // Tries to create a session to the host |jid|. Must be called only | 117 // Tries to create a session to the host |jid|. Must be called only |
121 // after initialization has finished successfully, i.e. after | 118 // after initialization has finished successfully, i.e. after |
122 // Listener::OnInitialized() has been called. | 119 // Listener::OnInitialized() has been called. |
123 // | 120 // |
124 // |host_jid| is the full jid of the host to connect to. | 121 // |host_jid| is the full jid of the host to connect to. |
125 // |host_public_key| is used to for authentication. | 122 // |host_public_key| is used to for authentication. |
126 // |client_oauth_token| is a short-lived OAuth token identify the client. | 123 // |authenticator| is a client authenticator for the session. |
127 // |config| contains the session configurations that the client supports. | 124 // |config| contains the session configurations that the client supports. |
128 // |state_change_callback| is called when the connection state changes. | 125 // |state_change_callback| is called when the connection state changes. |
129 // | 126 // |
130 // Ownership of the |config| is passed to the new session. | 127 // Ownership of the |config| is passed to the new session. |
131 virtual Session* Connect( | 128 virtual Session* Connect( |
132 const std::string& host_jid, | 129 const std::string& host_jid, |
133 const std::string& host_public_key, | 130 Authenticator* authenticator, |
134 const std::string& client_token, | |
135 CandidateSessionConfig* config, | 131 CandidateSessionConfig* config, |
136 const Session::StateChangeCallback& state_change_callback) = 0; | 132 const Session::StateChangeCallback& state_change_callback) = 0; |
137 | 133 |
138 // Close session manager. Can be called only after all corresponding | 134 // Close session manager. Can be called only after all corresponding |
139 // sessions are destroyed. No callbacks are called after this method | 135 // sessions are destroyed. No callbacks are called after this method |
140 // returns. | 136 // returns. |
141 virtual void Close() = 0; | 137 virtual void Close() = 0; |
142 | 138 |
| 139 // Set authenticator factory that should be used to authenticate |
| 140 // incoming connection. No connections will be accepted if |
| 141 // authenticator factory isn't set. |
| 142 virtual void set_authenticator_factory( |
| 143 AuthenticatorFactory* authenticator_factory) = 0; |
| 144 |
143 private: | 145 private: |
144 DISALLOW_COPY_AND_ASSIGN(SessionManager); | 146 DISALLOW_COPY_AND_ASSIGN(SessionManager); |
145 }; | 147 }; |
146 | 148 |
147 } // namespace protocol | 149 } // namespace protocol |
148 } // namespace remoting | 150 } // namespace remoting |
149 | 151 |
150 #endif // REMOTING_PROTOCOL_SESSION_MANAGER_H_ | 152 #endif // REMOTING_PROTOCOL_SESSION_MANAGER_H_ |
OLD | NEW |