- add sources.
[platform/framework/web/crosswalk.git] / src / remoting / protocol / protobuf_video_reader.h
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_