| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #ifndef REMOTING_PROTOCOL_JINGLE_SESSION_H_ | 5 #ifndef REMOTING_PROTOCOL_JINGLE_SESSION_H_ |
| 6 #define REMOTING_PROTOCOL_JINGLE_SESSION_H_ | 6 #define REMOTING_PROTOCOL_JINGLE_SESSION_H_ |
| 7 | 7 |
| 8 #include <list> | |
| 9 #include <set> | |
| 10 #include <string> | 8 #include <string> |
| 9 #include <vector> |
| 11 | 10 |
| 12 #include "base/macros.h" | 11 #include "base/macros.h" |
| 13 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
| 14 #include "base/rand_util.h" | 13 #include "base/rand_util.h" |
| 15 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
| 16 #include "base/threading/thread_checker.h" | 15 #include "base/threading/thread_checker.h" |
| 17 #include "base/timer/timer.h" | 16 #include "base/timer/timer.h" |
| 18 #include "crypto/rsa_private_key.h" | 17 #include "crypto/rsa_private_key.h" |
| 19 #include "net/base/completion_callback.h" | 18 #include "net/base/completion_callback.h" |
| 20 #include "remoting/protocol/authenticator.h" | 19 #include "remoting/protocol/authenticator.h" |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 // Called by OnIncomingMessage() to process the incoming Jingle messages | 89 // Called by OnIncomingMessage() to process the incoming Jingle messages |
| 91 // in the same order that they are sent. | 90 // in the same order that they are sent. |
| 92 void ProcessIncomingMessage(std::unique_ptr<JingleMessage> message, | 91 void ProcessIncomingMessage(std::unique_ptr<JingleMessage> message, |
| 93 const ReplyCallback& reply_callback); | 92 const ReplyCallback& reply_callback); |
| 94 | 93 |
| 95 // Message handlers for incoming messages. | 94 // Message handlers for incoming messages. |
| 96 void OnAccept(std::unique_ptr<JingleMessage> message, | 95 void OnAccept(std::unique_ptr<JingleMessage> message, |
| 97 const ReplyCallback& reply_callback); | 96 const ReplyCallback& reply_callback); |
| 98 void OnSessionInfo(std::unique_ptr<JingleMessage> message, | 97 void OnSessionInfo(std::unique_ptr<JingleMessage> message, |
| 99 const ReplyCallback& reply_callback); | 98 const ReplyCallback& reply_callback); |
| 99 void OnTransportInfo(std::unique_ptr<JingleMessage> message, |
| 100 const ReplyCallback& reply_callback); |
| 100 void OnTerminate(std::unique_ptr<JingleMessage> message, | 101 void OnTerminate(std::unique_ptr<JingleMessage> message, |
| 101 const ReplyCallback& reply_callback); | 102 const ReplyCallback& reply_callback); |
| 102 | 103 |
| 103 // Called from OnAccept() to initialize session config. | 104 // Called from OnAccept() to initialize session config. |
| 104 bool InitializeConfigFromDescription(const ContentDescription* description); | 105 bool InitializeConfigFromDescription(const ContentDescription* description); |
| 105 | 106 |
| 106 // Called after the initial incoming authenticator message is processed. | 107 // Called after the initial incoming authenticator message is processed. |
| 107 void ContinueAcceptIncomingConnection(); | 108 void ContinueAcceptIncomingConnection(); |
| 108 | 109 |
| 109 // Called after subsequent authenticator messages are processed. | 110 // Called after subsequent authenticator messages are processed. |
| 110 void ProcessAuthenticationStep(); | 111 void ProcessAuthenticationStep(); |
| 111 | 112 |
| 112 // Called after the authenticating step is finished. | |
| 113 void ContinueAuthenticationStep(); | |
| 114 | |
| 115 // Called when authentication is finished. | 113 // Called when authentication is finished. |
| 116 void OnAuthenticated(); | 114 void OnAuthenticated(); |
| 117 | 115 |
| 118 // Sets |state_| to |new_state| and calls state change callback. | 116 // Sets |state_| to |new_state| and calls state change callback. |
| 119 void SetState(State new_state); | 117 void SetState(State new_state); |
| 120 | 118 |
| 121 // Returns true if the state of the session is not CLOSED or FAILED | 119 // Returns true if the state of the session is not CLOSED or FAILED |
| 122 bool is_session_active(); | 120 bool is_session_active(); |
| 123 | 121 |
| 124 // Returns the value of the ID attribute of the next outgoing set IQ with the | 122 // Returns the value of the ID attribute of the next outgoing set IQ with the |
| (...skipping 10 matching lines...) Expand all Loading... |
| 135 State state_; | 133 State state_; |
| 136 ErrorCode error_; | 134 ErrorCode error_; |
| 137 | 135 |
| 138 std::unique_ptr<SessionConfig> config_; | 136 std::unique_ptr<SessionConfig> config_; |
| 139 | 137 |
| 140 std::unique_ptr<Authenticator> authenticator_; | 138 std::unique_ptr<Authenticator> authenticator_; |
| 141 | 139 |
| 142 Transport* transport_ = nullptr; | 140 Transport* transport_ = nullptr; |
| 143 | 141 |
| 144 // Pending Iq requests. Used for all messages except transport-info. | 142 // Pending Iq requests. Used for all messages except transport-info. |
| 145 std::set<std::unique_ptr<IqRequest>> pending_requests_; | 143 std::vector<std::unique_ptr<IqRequest>> pending_requests_; |
| 146 | 144 |
| 147 // Pending transport-info requests. | 145 // Pending transport-info requests. |
| 148 std::list<std::unique_ptr<IqRequest>> transport_info_requests_; | 146 std::vector<std::unique_ptr<IqRequest>> transport_info_requests_; |
| 149 | 147 |
| 150 struct PendingMessage { | 148 struct PendingMessage { |
| 149 PendingMessage(); |
| 150 PendingMessage(PendingMessage&& moved); |
| 151 PendingMessage(std::unique_ptr<JingleMessage> message, | 151 PendingMessage(std::unique_ptr<JingleMessage> message, |
| 152 const ReplyCallback& reply_callback); | 152 const ReplyCallback& reply_callback); |
| 153 ~PendingMessage(); | 153 ~PendingMessage(); |
| 154 PendingMessage& operator=(PendingMessage&& moved); |
| 154 std::unique_ptr<JingleMessage> message; | 155 std::unique_ptr<JingleMessage> message; |
| 155 const ReplyCallback reply_callback; | 156 ReplyCallback reply_callback; |
| 156 }; | 157 }; |
| 157 | 158 |
| 158 // A message queue to guarantee the incoming messages are processed in order. | 159 // A message queue to guarantee the incoming messages are processed in order. |
| 159 class OrderedMessageQueue; | 160 class OrderedMessageQueue; |
| 160 std::unique_ptr<OrderedMessageQueue> message_queue_; | 161 std::unique_ptr<OrderedMessageQueue> message_queue_; |
| 161 | 162 |
| 162 // This prefix is necessary to disambiguate between the ID's sent from the | 163 // This prefix is necessary to disambiguate between the ID's sent from the |
| 163 // client and the ID's sent from the host. | 164 // client and the ID's sent from the host. |
| 164 std::string outgoing_id_prefix_ = base::Uint64ToString(base::RandUint64()); | 165 std::string outgoing_id_prefix_ = base::Uint64ToString(base::RandUint64()); |
| 165 int next_outgoing_id_ = 0; | 166 int next_outgoing_id_ = 0; |
| 166 | 167 |
| 168 // Transport info messages that are received while the session is being |
| 169 // authenticated. |
| 170 std::vector<PendingMessage> pending_transport_info_; |
| 171 |
| 167 base::WeakPtrFactory<JingleSession> weak_factory_; | 172 base::WeakPtrFactory<JingleSession> weak_factory_; |
| 168 | 173 |
| 169 DISALLOW_COPY_AND_ASSIGN(JingleSession); | 174 DISALLOW_COPY_AND_ASSIGN(JingleSession); |
| 170 }; | 175 }; |
| 171 | 176 |
| 172 } // namespace protocol | 177 } // namespace protocol |
| 173 } // namespace remoting | 178 } // namespace remoting |
| 174 | 179 |
| 175 #endif // REMOTING_PROTOCOL_JINGLE_SESSION_H_ | 180 #endif // REMOTING_PROTOCOL_JINGLE_SESSION_H_ |
| OLD | NEW |