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

Side by Side Diff: components/cast_channel/cast_socket.h

Issue 2925053005: [cast_channel] Implement CastSocketService::OpenSocket() (Closed)
Patch Set: move |logger_| from cast_channel_api to cast_socket_service Created 3 years, 5 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 unified diff | Download patch
« no previous file with comments | « components/cast_channel/cast_channel_enum.h ('k') | components/cast_channel/cast_socket.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 COMPONENTS_CAST_CHANNEL_CAST_SOCKET_H_ 5 #ifndef COMPONENTS_CAST_CHANNEL_CAST_SOCKET_H_
6 #define COMPONENTS_CAST_CHANNEL_CAST_SOCKET_H_ 6 #define COMPONENTS_CAST_CHANNEL_CAST_SOCKET_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <queue> 10 #include <queue>
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 VIDEO_OUT = 1 << 0, 49 VIDEO_OUT = 1 << 0,
50 VIDEO_IN = 1 << 1, 50 VIDEO_IN = 1 << 1,
51 AUDIO_OUT = 1 << 2, 51 AUDIO_OUT = 1 << 2,
52 AUDIO_IN = 1 << 3, 52 AUDIO_IN = 1 << 3,
53 DEV_MODE = 1 << 4 53 DEV_MODE = 1 << 4
54 }; 54 };
55 55
56 // Public interface of the CastSocket class. 56 // Public interface of the CastSocket class.
57 class CastSocket { 57 class CastSocket {
58 public: 58 public:
59 using OnOpenCallback =
60 base::Callback<void(int channel_id, ChannelError error_state)>;
61
59 class Observer { 62 class Observer {
60 public: 63 public:
61 virtual ~Observer() {} 64 virtual ~Observer() {}
62 65
63 // Invoked when an error occurs on |socket|. 66 // Invoked when an error occurs on |socket|.
64 virtual void OnError(const CastSocket& socket, 67 virtual void OnError(const CastSocket& socket,
65 ChannelError error_state) = 0; 68 ChannelError error_state) = 0;
66 69
67 // Invoked when |socket| receives a message. 70 // Invoked when |socket| receives a message.
68 virtual void OnMessage(const CastSocket& socket, 71 virtual void OnMessage(const CastSocket& socket,
69 const CastMessage& message) = 0; 72 const CastMessage& message) = 0;
70 }; 73 };
71 74
72 virtual ~CastSocket() {} 75 virtual ~CastSocket() {}
73 76
74 // Used by BrowserContextKeyedAPIFactory. 77 // Used by BrowserContextKeyedAPIFactory.
75 static const char* service_name() { return "CastSocketImplManager"; } 78 static const char* service_name() { return "CastSocketImplManager"; }
76 79
77 // Connects the channel to the peer. If successful, the channel will be in 80 // Connects the channel to the peer. If successful, the channel will be in
78 // READY_STATE_OPEN. DO NOT delete the CastSocket object in |callback|. 81 // READY_STATE_OPEN. DO NOT delete the CastSocket object in |callback|.
79 // Instead use Close(). 82 // Instead use Close().
80 // |callback| will be invoked with any ChannelError that occurred, or 83 // |callback| will be invoked with any ChannelError that occurred, or
81 // CHANNEL_ERROR_NONE if successful. 84 // CHANNEL_ERROR_NONE if successful.
82 // If the CastSocket is destroyed while the connection is pending, |callback| 85 // If the CastSocket is destroyed while the connection is pending, |callback|
83 // will be invoked with CHANNEL_ERROR_UNKNOWN. In this case, invoking 86 // will be invoked with CHANNEL_ERROR_UNKNOWN. In this case, invoking
84 // |callback| must not result in any re-entrancy behavior. 87 // |callback| must not result in any re-entrancy behavior.
85 virtual void Connect(base::Callback<void(ChannelError)> callback) = 0; 88 virtual void Connect(const OnOpenCallback& callback) = 0;
86 89
87 // Closes the channel if not already closed. On completion, the channel will 90 // Closes the channel if not already closed. On completion, the channel will
88 // be in READY_STATE_CLOSED. 91 // be in READY_STATE_CLOSED.
89 // 92 //
90 // It is fine to delete this object in |callback|. 93 // It is fine to delete this object in |callback|.
91 virtual void Close(const net::CompletionCallback& callback) = 0; 94 virtual void Close(const net::CompletionCallback& callback) = 0;
92 95
93 // The IP endpoint for the destination of the channel. 96 // The IP endpoint for the destination of the channel.
94 virtual const net::IPEndPoint& ip_endpoint() const = 0; 97 virtual const net::IPEndPoint& ip_endpoint() const = 0;
95 98
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 base::TimeDelta liveness_timeout, 163 base::TimeDelta liveness_timeout,
161 base::TimeDelta ping_interval, 164 base::TimeDelta ping_interval,
162 const scoped_refptr<Logger>& logger, 165 const scoped_refptr<Logger>& logger,
163 uint64_t device_capabilities, 166 uint64_t device_capabilities,
164 const AuthContext& auth_context); 167 const AuthContext& auth_context);
165 168
166 // Ensures that the socket is closed. 169 // Ensures that the socket is closed.
167 ~CastSocketImpl() override; 170 ~CastSocketImpl() override;
168 171
169 // CastSocket interface. 172 // CastSocket interface.
170 void Connect(base::Callback<void(ChannelError)> callback) override; 173 void Connect(const OnOpenCallback& callback) override;
171 CastTransport* transport() const override; 174 CastTransport* transport() const override;
172 void Close(const net::CompletionCallback& callback) override; 175 void Close(const net::CompletionCallback& callback) override;
173 const net::IPEndPoint& ip_endpoint() const override; 176 const net::IPEndPoint& ip_endpoint() const override;
174 int id() const override; 177 int id() const override;
175 void set_id(int channel_id) override; 178 void set_id(int channel_id) override;
176 ReadyState ready_state() const override; 179 ReadyState ready_state() const override;
177 ChannelError error_state() const override; 180 ChannelError error_state() const override;
178 bool keep_alive() const override; 181 bool keep_alive() const override;
179 bool audio_only() const override; 182 bool audio_only() const override;
180 void AddObserver(Observer* observer) override; 183 void AddObserver(Observer* observer) override;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 224
222 // Replaces the internally-constructed transport object with one provided 225 // Replaces the internally-constructed transport object with one provided
223 // by the caller (e.g. a mock). 226 // by the caller (e.g. a mock).
224 void SetTransportForTesting(std::unique_ptr<CastTransport> transport); 227 void SetTransportForTesting(std::unique_ptr<CastTransport> transport);
225 228
226 // Verifies whether the socket complies with cast channel policy. 229 // Verifies whether the socket complies with cast channel policy.
227 // Audio only channel policy mandates that a device declaring a video out 230 // Audio only channel policy mandates that a device declaring a video out
228 // capability must not have a certificate with audio only policy. 231 // capability must not have a certificate with audio only policy.
229 bool VerifyChannelPolicy(const AuthResult& result); 232 bool VerifyChannelPolicy(const AuthResult& result);
230 233
234 void Connect();
235
231 private: 236 private:
232 FRIEND_TEST_ALL_PREFIXES(CastSocketTest, TestConnectAuthMessageCorrupted); 237 FRIEND_TEST_ALL_PREFIXES(CastSocketTest, TestConnectAuthMessageCorrupted);
233 FRIEND_TEST_ALL_PREFIXES(CastSocketTest, 238 FRIEND_TEST_ALL_PREFIXES(CastSocketTest,
234 TestConnectChallengeReplyReceiveError); 239 TestConnectChallengeReplyReceiveError);
235 FRIEND_TEST_ALL_PREFIXES(CastSocketTest, 240 FRIEND_TEST_ALL_PREFIXES(CastSocketTest,
236 TestConnectChallengeVerificationFails); 241 TestConnectChallengeVerificationFails);
237 FRIEND_TEST_ALL_PREFIXES(CastSocketTest, TestObservers); 242 FRIEND_TEST_ALL_PREFIXES(CastSocketTest, TestObservers);
238 friend class AuthTransportDelegate; 243 friend class AuthTransportDelegate;
239 friend class CastSocketMessageDelegate; 244 friend class CastSocketMessageDelegate;
240 friend class CastSocketTest; 245 friend class CastSocketTest;
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 // Certificate of the peer. This field may be empty if the peer 352 // Certificate of the peer. This field may be empty if the peer
348 // certificate is not yet fetched. 353 // certificate is not yet fetched.
349 scoped_refptr<net::X509Certificate> peer_cert_; 354 scoped_refptr<net::X509Certificate> peer_cert_;
350 355
351 // The challenge context for the current connection. 356 // The challenge context for the current connection.
352 const AuthContext auth_context_; 357 const AuthContext auth_context_;
353 358
354 // Reply received from the receiver to a challenge request. 359 // Reply received from the receiver to a challenge request.
355 std::unique_ptr<CastMessage> challenge_reply_; 360 std::unique_ptr<CastMessage> challenge_reply_;
356 361
357 // Callback invoked when the socket is connected or fails to connect. 362 // Callbacks invoked when the socket is connected or fails to connect.
358 base::Callback<void(ChannelError)> connect_callback_; 363 std::vector<OnOpenCallback> connect_callbacks_;
359 364
360 // Callback invoked by |connect_timeout_timer_| to cancel the connection. 365 // Callback invoked by |connect_timeout_timer_| to cancel the connection.
361 base::CancelableClosure connect_timeout_callback_; 366 base::CancelableClosure connect_timeout_callback_;
362 367
363 // Duration to wait before timing out. 368 // Duration to wait before timing out.
364 base::TimeDelta connect_timeout_; 369 base::TimeDelta connect_timeout_;
365 370
366 // Timer invoked when the connection has timed out. 371 // Timer invoked when the connection has timed out.
367 std::unique_ptr<base::Timer> connect_timeout_timer_; 372 std::unique_ptr<base::Timer> connect_timeout_timer_;
368 373
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 AuthTransportDelegate* auth_delegate_; 415 AuthTransportDelegate* auth_delegate_;
411 416
412 // List of socket observers. 417 // List of socket observers.
413 base::ObserverList<Observer> observers_; 418 base::ObserverList<Observer> observers_;
414 419
415 DISALLOW_COPY_AND_ASSIGN(CastSocketImpl); 420 DISALLOW_COPY_AND_ASSIGN(CastSocketImpl);
416 }; 421 };
417 } // namespace cast_channel 422 } // namespace cast_channel
418 423
419 #endif // COMPONENTS_CAST_CHANNEL_CAST_SOCKET_H_ 424 #endif // COMPONENTS_CAST_CHANNEL_CAST_SOCKET_H_
OLDNEW
« no previous file with comments | « components/cast_channel/cast_channel_enum.h ('k') | components/cast_channel/cast_socket.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698