| 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 // Implementation of InputStub using sockets created from jingle connection. | 5 // Implementation of InputStub using sockets created from jingle connection. |
| 6 // It sends messages through the socket after serializing it. | 6 // It sends messages through the socket after serializing it. |
| 7 // | 7 // |
| 8 // Object of this class can only be created by ConnectionToHost. | 8 // Object of this class can only be created by ConnectionToHost. |
| 9 // | 9 // |
| 10 // This class can be used on any thread. An object of socket is given to this | 10 // This class can be used on any thread. An object of socket is given to this |
| 11 // class, its lifetime is strictly greater than this object. | 11 // class, its lifetime is strictly greater than this object. |
| 12 | 12 |
| 13 #ifndef REMOTING_PROTOCOL_INPUT_SENDER_H_ | 13 #ifndef REMOTING_PROTOCOL_INPUT_SENDER_H_ |
| 14 #define REMOTING_PROTOCOL_INPUT_SENDER_H_ | 14 #define REMOTING_PROTOCOL_INPUT_SENDER_H_ |
| 15 | 15 |
| 16 #include "base/basictypes.h" | 16 #include "base/basictypes.h" |
| 17 #include "base/memory/ref_counted.h" | 17 #include "base/memory/ref_counted.h" |
| 18 #include "remoting/protocol/input_stub.h" | 18 #include "remoting/protocol/input_stub.h" |
| 19 | 19 |
| 20 class Task; | 20 class Task; |
| 21 | 21 |
| 22 namespace base { |
| 23 class MessageLoopProxy; |
| 24 } // namespace base |
| 25 |
| 22 namespace net { | 26 namespace net { |
| 23 class Socket; | 27 class Socket; |
| 24 } // namespace net | 28 } // namespace net |
| 25 | 29 |
| 26 namespace remoting { | 30 namespace remoting { |
| 27 namespace protocol { | 31 namespace protocol { |
| 28 | 32 |
| 29 class BufferedSocketWriter; | 33 class BufferedSocketWriter; |
| 30 | 34 |
| 31 // Implementation of InputStub that sends messages on a socket. Must | 35 // Implementation of InputStub that sends messages on a socket. Must |
| 32 // be created and closed on the network thread, but can be used on any | 36 // be created and closed on the network thread, but can be used on any |
| 33 // other thread. | 37 // other thread. |
| 34 class InputSender : public InputStub { | 38 class InputSender : public InputStub { |
| 35 public: | 39 public: |
| 36 // Create a stub using a socket. | 40 // Create a stub using a socket. |
| 37 explicit InputSender(net::Socket* socket); | 41 explicit InputSender(base::MessageLoopProxy* message_loop, |
| 42 net::Socket* socket); |
| 38 virtual ~InputSender(); | 43 virtual ~InputSender(); |
| 39 | 44 |
| 40 // InputStub implementation. | 45 // InputStub implementation. |
| 41 virtual void InjectKeyEvent(const KeyEvent* event, Task* done); | 46 virtual void InjectKeyEvent(const KeyEvent* event, Task* done); |
| 42 virtual void InjectMouseEvent(const MouseEvent* event, Task* done); | 47 virtual void InjectMouseEvent(const MouseEvent* event, Task* done); |
| 43 | 48 |
| 44 // Stop writing. Must be called on the network thread when the | 49 // Stop writing. Must be called on the network thread when the |
| 45 // underlying socket is being destroyed. | 50 // underlying socket is being destroyed. |
| 46 void Close(); | 51 void Close(); |
| 47 | 52 |
| 48 private: | 53 private: |
| 49 // Helper method to run the task and delete it afterwards. | 54 // Helper method to run the task and delete it afterwards. |
| 50 void RunTask(Task* done); | 55 void RunTask(Task* done); |
| 51 | 56 |
| 52 // Buffered socket writer holds the serialized message and sends it on the | 57 // Buffered socket writer holds the serialized message and sends it on the |
| 53 // right thread. | 58 // right thread. |
| 54 scoped_refptr<BufferedSocketWriter> buffered_writer_; | 59 scoped_refptr<BufferedSocketWriter> buffered_writer_; |
| 55 | 60 |
| 56 DISALLOW_COPY_AND_ASSIGN(InputSender); | 61 DISALLOW_COPY_AND_ASSIGN(InputSender); |
| 57 }; | 62 }; |
| 58 | 63 |
| 59 } // namespace protocol | 64 } // namespace protocol |
| 60 } // namespace remoting | 65 } // namespace remoting |
| 61 | 66 |
| 62 #endif // REMOTING_PROTOCOL_INPUT_SENDER_H_ | 67 #endif // REMOTING_PROTOCOL_INPUT_SENDER_H_ |
| OLD | NEW |