summaryrefslogtreecommitdiffstats
path: root/remoting/jingle_glue/jingle_channel.h
diff options
context:
space:
mode:
Diffstat (limited to 'remoting/jingle_glue/jingle_channel.h')
-rw-r--r--remoting/jingle_glue/jingle_channel.h180
1 files changed, 0 insertions, 180 deletions
diff --git a/remoting/jingle_glue/jingle_channel.h b/remoting/jingle_glue/jingle_channel.h
deleted file mode 100644
index ee53760..0000000
--- a/remoting/jingle_glue/jingle_channel.h
+++ /dev/null
@@ -1,180 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef REMOTING_JINGLE_GLUE_JINGLE_CHANNEL_H_
-#define REMOTING_JINGLE_GLUE_JINGLE_CHANNEL_H_
-
-#include <deque>
-#include <string>
-
-#include "base/basictypes.h"
-#include "base/condition_variable.h"
-#include "base/gtest_prod_util.h"
-#include "base/lock.h"
-#include "base/ref_counted.h"
-#include "base/scoped_ptr.h"
-#include "base/task.h"
-#include "third_party/libjingle/source/talk/base/sigslot.h"
-
-namespace base {
-class WaitableEvent;
-} // namespace base
-
-namespace talk_base {
-class StreamInterface;
-} // namespace talk_base
-
-namespace media {
-class Buffer;
-class DataBuffer;
-} // namespace media
-
-namespace remoting {
-class JingleThread;
-
-class JingleChannel : public base::RefCountedThreadSafe<JingleChannel> {
- public:
- enum State {
- INITIALIZING,
- CONNECTING,
- OPEN,
- CLOSED,
- FAILED,
- };
-
- class Callback {
- public:
- virtual ~Callback() {}
-
- // Called when state of the connection is changed.
- virtual void OnStateChange(JingleChannel* channel, State state) = 0;
-
- // Called when a new packet is received.
- virtual void OnPacketReceived(JingleChannel* channel,
- scoped_refptr<media::DataBuffer> data) = 0;
- };
-
- virtual ~JingleChannel();
-
- // Puts data to the write buffer.
- virtual void Write(scoped_refptr<media::DataBuffer> data);
-
- // Closes the tunnel. If specified, |closed_task| is executed after the
- // connection is successfully closed.
- virtual void Close();
- virtual void Close(Task* closed_task);
-
- // Current state of the tunnel.
- State state() const { return state_; }
-
- // JID of the other end of the channel.
- const std::string& jid() const { return jid_; }
-
- // Number of bytes currently stored in the write buffer.
- size_t write_buffer_size();
-
- protected:
- // Needs access to constructor, Init().
- friend class JingleClient;
-
- // Constructor used by unit test only.
- // TODO(hclam): Have to suppress warnings in MSVC.
- JingleChannel();
-
- // Used by JingleClient to create an instance of the channel. |callback|
- // must not be NULL.
- explicit JingleChannel(Callback* callback);
-
- // Initialized the channel. Ownership of the |stream| is transfered to
- // caller. Ownership of |thread| is not.
- void Init(JingleThread* thread, talk_base::StreamInterface* stream,
- const std::string& jid);
-
- private:
- friend class JingleChannelTest;
- FRIEND_TEST_ALL_PREFIXES(JingleChannelTest, Init);
- FRIEND_TEST_ALL_PREFIXES(JingleChannelTest, Write);
- FRIEND_TEST_ALL_PREFIXES(JingleChannelTest, Read);
-
- typedef std::deque<scoped_refptr<media::DataBuffer> > DataQueue;
-
- // Event handler for the stream. It passes stream events from the stream
- // to JingleChannel.
- class EventHandler : public sigslot::has_slots<> {
- protected:
- explicit EventHandler(JingleChannel* channel) : channel_(channel) {}
-
- // Constructor used only by unit test.
- EventHandler() : channel_(NULL) {}
-
- void OnStreamEvent(talk_base::StreamInterface* stream,
- int events, int error) {
- channel_->OnStreamEvent(stream, events, error);
- }
- private:
- friend class JingleChannel;
- JingleChannel* channel_;
- };
- friend class EventHandler;
-
- // Event handler for the stream.
- void OnStreamEvent(talk_base::StreamInterface* stream,
- int events, int error);
-
- // Writes data from the buffer to the stream. Called
- // from OnStreamEvent() in the jingle thread.
- void DoWrite();
-
- // Reads data from the stream and puts it to the read buffer.
- // Called from OnStreamEvent() in the jingle thread.
- void DoRead();
-
- // Used by Close() to actually close the channel.
- void DoClose();
-
- // Updates state and calels |callback_| if neccessary.
- void SetState(State new_state);
-
- // The thread this channel runs on.
- JingleThread* thread_;
-
- // The stream of this channel.
- scoped_ptr<talk_base::StreamInterface> stream_;
-
- // Current state of the channel.
- State state_;
-
- // Callback that is called on channel events. Initialized in the constructor.
- // Must not be called if |closed_| is set to true.
- Callback* callback_;
-
- // |closed_| must be set to true after Close() is called. |state_lock_| must
- // be locked whenever closed_ is accessed.
- Lock state_lock_;
- bool closed_;
- scoped_ptr<Task> closed_task_;
-
- // Event handler for stream events.
- EventHandler event_handler_;
-
- // Jid of the other end of the channel.
- std::string jid_;
-
- // Write buffer. |write_lock_| should be locked when accessing |write_queue_|
- // and |write_buffer_size_|, but isn't necessary for |current_write_buf_|.
- // |current_write_buf_| is accessed only by the jingle thread.
- // |write_buffer_size_| stores number of bytes currently in |write_queue_|
- // and in |current_write_buf_|.
- DataQueue write_queue_;
- size_t write_buffer_size_;
- Lock write_lock_;
- scoped_refptr<media::DataBuffer> current_write_buf_;
- size_t current_write_buf_pos_;
-
- DISALLOW_COPY_AND_ASSIGN(JingleChannel);
-};
-
-} // namespace remoting
-
-#endif // REMOTING_JINGLE_GLUE_JINGLE_CHANNEL_H_