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 #ifndef REMOTING_PROTOCOL_PROTOBUF_VIDEO_READER_H_
      6 #define REMOTING_PROTOCOL_PROTOBUF_VIDEO_READER_H_
      7 
      8 #include "base/compiler_specific.h"
      9 #include "remoting/proto/video.pb.h"
     10 #include "remoting/protocol/message_reader.h"
     11 #include "remoting/protocol/video_reader.h"
     12 
     13 namespace net {
     14 class StreamSocket;
     15 }  // namespace net
     16 
     17 namespace remoting {
     18 namespace protocol {
     19 
     20 class ChannelFactory;
     21 class Session;
     22 
     23 class ProtobufVideoReader : public VideoReader {
     24  public:
     25   ProtobufVideoReader(VideoPacketFormat::Encoding encoding);
     26   virtual ~ProtobufVideoReader();
     27 
     28   // VideoReader interface.
     29   virtual void Init(protocol::Session* session,
     30                     VideoStub* video_stub,
     31                     const InitializedCallback& callback) OVERRIDE;
     32   virtual bool is_connected() OVERRIDE;
     33 
     34  private:
     35   void OnChannelReady(scoped_ptr<net::StreamSocket> socket);
     36   void OnNewData(scoped_ptr<VideoPacket> packet,
     37                  const base::Closure& done_task);
     38 
     39   InitializedCallback initialized_callback_;
     40 
     41   VideoPacketFormat::Encoding encoding_;
     42 
     43   ChannelFactory* channel_factory_;
     44   scoped_ptr<net::StreamSocket> channel_;
     45 
     46   ProtobufMessageReader<VideoPacket> reader_;
     47 
     48   // The stub that processes all received packets.
     49   VideoStub* video_stub_;
     50 
     51   DISALLOW_COPY_AND_ASSIGN(ProtobufVideoReader);
     52 };
     53 
     54 }  // namespace protocol
     55 }  // namespace remoting
     56 
     57 #endif  // REMOTING_PROTOCOL_PROTOBUF_VIDEO_READER_H_
     58