Home | History | Annotate | Download | only in protocol
      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
      3 // found in the LICENSE file.
      4 
      5 #include "remoting/protocol/client_event_dispatcher.h"
      6 
      7 #include "base/message_loop/message_loop_proxy.h"
      8 #include "base/time/time.h"
      9 #include "net/socket/stream_socket.h"
     10 #include "remoting/base/constants.h"
     11 #include "remoting/proto/event.pb.h"
     12 #include "remoting/proto/internal.pb.h"
     13 #include "remoting/protocol/message_serialization.h"
     14 
     15 namespace remoting {
     16 namespace protocol {
     17 
     18 ClientEventDispatcher::ClientEventDispatcher()
     19     : ChannelDispatcherBase(kEventChannelName) {
     20 }
     21 
     22 ClientEventDispatcher::~ClientEventDispatcher() {
     23   writer_.Close();
     24 }
     25 
     26 void ClientEventDispatcher::OnInitialized() {
     27   // TODO(garykac): Set write failed callback.
     28   writer_.Init(channel(),
     29                 BufferedSocketWriter::WriteFailedCallback());
     30 }
     31 
     32 void ClientEventDispatcher::InjectKeyEvent(const KeyEvent& event) {
     33   DCHECK(event.has_usb_keycode());
     34   DCHECK(event.has_pressed());
     35   EventMessage message;
     36   message.set_sequence_number(base::Time::Now().ToInternalValue());
     37   message.mutable_key_event()->CopyFrom(event);
     38   writer_.Write(SerializeAndFrameMessage(message), base::Closure());
     39 }
     40 
     41 void ClientEventDispatcher::InjectTextEvent(const TextEvent& event) {
     42   DCHECK(event.has_text());
     43   EventMessage message;
     44   message.set_sequence_number(base::Time::Now().ToInternalValue());
     45   message.mutable_text_event()->CopyFrom(event);
     46   writer_.Write(SerializeAndFrameMessage(message), base::Closure());
     47 }
     48 
     49 void ClientEventDispatcher::InjectMouseEvent(const MouseEvent& event) {
     50   EventMessage message;
     51   message.set_sequence_number(base::Time::Now().ToInternalValue());
     52   message.mutable_mouse_event()->CopyFrom(event);
     53   writer_.Write(SerializeAndFrameMessage(message), base::Closure());
     54 }
     55 
     56 }  // namespace protocol
     57 }  // namespace remoting
     58