Upstream version 10.38.222.0
[platform/framework/web/crosswalk.git] / src / remoting / protocol / protobuf_video_writer.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_WRITER_H_
6 #define REMOTING_PROTOCOL_PROTOBUF_VIDEO_WRITER_H_
7
8 #include <string>
9
10 #include "base/compiler_specific.h"
11 #include "base/memory/ref_counted.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "remoting/protocol/buffered_socket_writer.h"
14 #include "remoting/protocol/video_writer.h"
15
16 namespace net {
17 class StreamSocket;
18 }  // namespace net
19
20 namespace remoting {
21 namespace protocol {
22
23 class ChannelFactory;
24 class Session;
25
26 class ProtobufVideoWriter : public VideoWriter {
27  public:
28   ProtobufVideoWriter();
29   virtual ~ProtobufVideoWriter();
30
31   // VideoWriter interface.
32   virtual void Init(protocol::Session* session,
33                     const InitializedCallback& callback) OVERRIDE;
34   virtual void Close() OVERRIDE;
35   virtual bool is_connected() OVERRIDE;
36
37   // VideoStub interface.
38   virtual void ProcessVideoPacket(scoped_ptr<VideoPacket> packet,
39                                   const base::Closure& done) OVERRIDE;
40
41  private:
42   void OnChannelReady(scoped_ptr<net::StreamSocket> socket);
43
44   InitializedCallback initialized_callback_;
45
46   ChannelFactory* channel_factory_;
47   scoped_ptr<net::StreamSocket> channel_;
48
49   BufferedSocketWriter buffered_writer_;
50
51   DISALLOW_COPY_AND_ASSIGN(ProtobufVideoWriter);
52 };
53
54 }  // namespace protocol
55 }  // namespace remoting
56
57 #endif  // REMOTING_PROTOCOL_PROTOBUF_VIDEO_WRITER_H_