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

Side by Side Diff: remoting/client/chromoting_client.h

Issue 4229003: Add VideoReader and VideoWriter interfaces. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 10 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « remoting/base/encoder_vp8.cc ('k') | remoting/client/chromoting_client.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 (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 // ChromotingClient is the controller for the Client implementation. 5 // ChromotingClient is the controller for the Client implementation.
6 6
7 #ifndef REMOTING_CLIENT_CHROMOTING_CLIENT_H 7 #ifndef REMOTING_CLIENT_CHROMOTING_CLIENT_H
8 #define REMOTING_CLIENT_CHROMOTING_CLIENT_H 8 #define REMOTING_CLIENT_CHROMOTING_CLIENT_H
9 9
10 #include <list> 10 #include <list>
11 11
12 #include "base/task.h" 12 #include "base/task.h"
13 #include "remoting/client/host_connection.h" 13 #include "remoting/client/host_connection.h"
14 #include "remoting/client/client_config.h" 14 #include "remoting/client/client_config.h"
15 #include "remoting/client/chromoting_view.h" 15 #include "remoting/client/chromoting_view.h"
16 #include "remoting/protocol/video_stub.h"
16 17
17 class MessageLoop; 18 class MessageLoop;
18 19
19 namespace remoting { 20 namespace remoting {
20 21
21 class ChromotingHostMessage; 22 class ChromotingHostMessage;
22 class ClientContext; 23 class ClientContext;
23 class InitClientMessage; 24 class InitClientMessage;
24 class InputHandler; 25 class InputHandler;
25 class RectangleUpdateDecoder; 26 class RectangleUpdateDecoder;
26 27
27 class ChromotingClient : public HostConnection::HostEventCallback { 28 // TODO(sergeyu): Move VideoStub implementation to RectangleUpdateDecoder.
29 class ChromotingClient : public HostConnection::HostEventCallback,
30 public VideoStub {
28 public: 31 public:
29 // Objects passed in are not owned by this class. 32 // Objects passed in are not owned by this class.
30 ChromotingClient(const ClientConfig& config, 33 ChromotingClient(const ClientConfig& config,
31 ClientContext* context, 34 ClientContext* context,
32 HostConnection* connection, 35 HostConnection* connection,
33 ChromotingView* view, 36 ChromotingView* view,
34 RectangleUpdateDecoder* rectangle_decoder, 37 RectangleUpdateDecoder* rectangle_decoder,
35 InputHandler* input_handler, 38 InputHandler* input_handler,
36 CancelableTask* client_done); 39 CancelableTask* client_done);
37 virtual ~ChromotingClient(); 40 virtual ~ChromotingClient();
(...skipping 13 matching lines...) Expand all
51 // thread synchronously really. 54 // thread synchronously really.
52 virtual void SetViewport(int x, int y, int width, int height); 55 virtual void SetViewport(int x, int y, int width, int height);
53 56
54 // HostConnection::HostEventCallback implementation. 57 // HostConnection::HostEventCallback implementation.
55 virtual void HandleMessage(HostConnection* conn, 58 virtual void HandleMessage(HostConnection* conn,
56 ChromotingHostMessage* messages); 59 ChromotingHostMessage* messages);
57 virtual void OnConnectionOpened(HostConnection* conn); 60 virtual void OnConnectionOpened(HostConnection* conn);
58 virtual void OnConnectionClosed(HostConnection* conn); 61 virtual void OnConnectionClosed(HostConnection* conn);
59 virtual void OnConnectionFailed(HostConnection* conn); 62 virtual void OnConnectionFailed(HostConnection* conn);
60 63
64 // VideoStub implementation.
65 virtual void ProcessVideoPacket(const VideoPacket* packet, Task* done);
66
61 private: 67 private:
68 struct QueuedVideoPacket {
69 QueuedVideoPacket(const VideoPacket* packet, Task* done)
70 : packet(packet), done(done) {
71 }
72 const VideoPacket* packet;
73 Task* done;
74 };
75
62 MessageLoop* message_loop(); 76 MessageLoop* message_loop();
63 77
64 // Convenience method for modifying the state on this object's message loop. 78 // Convenience method for modifying the state on this object's message loop.
65 void SetConnectionState(ConnectionState s); 79 void SetConnectionState(ConnectionState s);
66 80
67 // If a message is not being processed, dispatches a single message from the 81 // If a packet is not being processed, dispatches a single message from the
68 // |received_messages_| queue. 82 // |received_packets_| queue.
69 void DispatchMessage(); 83 void DispatchPacket();
70 84
71 void OnMessageDone(ChromotingHostMessage* msg); 85 void OnPacketDone();
72 86
73 // Handles for chromotocol messages. 87 // Handles for chromotocol messages.
74 void InitClient(const InitClientMessage& msg, Task* done); 88 void InitClient(const InitClientMessage& msg);
75 89
76 // The following are not owned by this class. 90 // The following are not owned by this class.
77 ClientConfig config_; 91 ClientConfig config_;
78 ClientContext* context_; 92 ClientContext* context_;
79 HostConnection* connection_; 93 HostConnection* connection_;
80 ChromotingView* view_; 94 ChromotingView* view_;
81 RectangleUpdateDecoder* rectangle_decoder_; 95 RectangleUpdateDecoder* rectangle_decoder_;
82 InputHandler* input_handler_; 96 InputHandler* input_handler_;
83 97
84 // If non-NULL, this is called when the client is done. 98 // If non-NULL, this is called when the client is done.
85 CancelableTask* client_done_; 99 CancelableTask* client_done_;
86 100
87 ConnectionState state_; 101 ConnectionState state_;
88 102
89 // Contains all messages that have been received, but have not yet been 103 // Contains all video packets that have been received, but have not yet been
90 // processed. 104 // processed.
91 // 105 //
92 // Used to serialize sending of messages to the client. 106 // Used to serialize sending of messages to the client.
93 std::list<ChromotingHostMessage*> received_messages_; 107 std::list<QueuedVideoPacket> received_packets_;
94 108
95 // True if a message is being processed. Can be used to determine if it is 109 // True if a message is being processed. Can be used to determine if it is
96 // safe to dispatch another message. 110 // safe to dispatch another message.
97 bool message_being_processed_; 111 bool packet_being_processed_;
98 112
99 DISALLOW_COPY_AND_ASSIGN(ChromotingClient); 113 DISALLOW_COPY_AND_ASSIGN(ChromotingClient);
100 }; 114 };
101 115
102 } // namespace remoting 116 } // namespace remoting
103 117
104 DISABLE_RUNNABLE_METHOD_REFCOUNT(remoting::ChromotingClient); 118 DISABLE_RUNNABLE_METHOD_REFCOUNT(remoting::ChromotingClient);
105 119
106 #endif // REMOTING_CLIENT_CHROMOTING_CLIENT_H 120 #endif // REMOTING_CLIENT_CHROMOTING_CLIENT_H
OLDNEW
« no previous file with comments | « remoting/base/encoder_vp8.cc ('k') | remoting/client/chromoting_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698