Index: talk/media/sctp/sctpdataengine.h |
diff --git a/talk/media/sctp/sctpdataengine.h b/talk/media/sctp/sctpdataengine.h |
index 86bfa37a48c10dca4c3f5b0cad9a330d27aea10e..7d11097c3a152a5423cd8eecf1576c04ab4720cf 100644 |
--- a/talk/media/sctp/sctpdataengine.h |
+++ b/talk/media/sctp/sctpdataengine.h |
@@ -64,6 +64,8 @@ const uint32 kMaxSctpSid = 1023; |
// usrsctp.h) |
const int kSctpDefaultPort = 5000; |
+class SctpDataMediaChannel; |
+ |
// A DataEngine that interacts with usrsctp. |
// |
// From channel calls, data flows like this: |
@@ -88,18 +90,21 @@ const int kSctpDefaultPort = 5000; |
// 14. SctpDataMediaChannel::SignalDataReceived(data) |
// [from the same thread, methods registered/connected to |
// SctpDataMediaChannel are called with the recieved data] |
-class SctpDataEngine : public DataEngineInterface { |
+class SctpDataEngine : public DataEngineInterface, public sigslot::has_slots<> { |
public: |
SctpDataEngine(); |
virtual ~SctpDataEngine(); |
virtual DataMediaChannel* CreateChannel(DataChannelType data_channel_type); |
- |
virtual const std::vector<DataCodec>& data_codecs() { return codecs_; } |
+ static int SendThresholdCallback(struct socket* sock, uint32_t sb_free); |
private: |
+ static std::vector<SctpDataMediaChannel*> channels_; |
static int usrsctp_engines_count; |
std::vector<DataCodec> codecs_; |
+ |
+ void OnChannelDestroyed(SctpDataMediaChannel *channel); |
}; |
// TODO(ldixon): Make into a special type of TypedMessageData. |
@@ -188,6 +193,9 @@ class SctpDataMediaChannel : public DataMediaChannel, |
debug_name_ = debug_name; |
} |
const std::string& debug_name() const { return debug_name_; } |
+ const struct socket* socket() { return sock_; } |
+ |
+ sigslot::signal1<SctpDataMediaChannel*> SignalDestroyed; |
private: |
sockaddr_conn GetSctpSockAddr(int port); |