| Index: webrtc/p2p/base/transport.cc
|
| diff --git a/webrtc/p2p/base/transport.cc b/webrtc/p2p/base/transport.cc
|
| index d626ad3d65acf284a6022428cbfb43615a6d07e3..3322e3898ab35f58f625e702081ee98b70a9f1c0 100644
|
| --- a/webrtc/p2p/base/transport.cc
|
| +++ b/webrtc/p2p/base/transport.cc
|
| @@ -25,6 +25,7 @@
|
| enum {
|
| MSG_ONSIGNALINGREADY = 1,
|
| MSG_ONREMOTECANDIDATE,
|
| + MSG_READSTATE,
|
| MSG_WRITESTATE,
|
| MSG_REQUESTSIGNALING,
|
| MSG_CANDIDATEREADY,
|
| @@ -237,6 +238,7 @@
|
| if (local_description_ && remote_description_)
|
| ApplyNegotiatedTransportDescription_w(impl, NULL);
|
|
|
| + impl->SignalReadableState.connect(this, &Transport::OnChannelReadableState);
|
| impl->SignalWritableState.connect(this, &Transport::OnChannelWritableState);
|
| impl->SignalReceivingState.connect(this, &Transport::OnChannelReceivingState);
|
| impl->SignalRequestSignaling.connect(
|
| @@ -491,6 +493,20 @@
|
| }
|
| }
|
|
|
| +void Transport::OnChannelReadableState(TransportChannel* channel) {
|
| + ASSERT(worker_thread()->IsCurrent());
|
| + signaling_thread()->Post(this, MSG_READSTATE, NULL);
|
| +}
|
| +
|
| +void Transport::OnChannelReadableState_s() {
|
| + ASSERT(signaling_thread()->IsCurrent());
|
| + TransportState readable = GetTransportState_s(TRANSPORT_READABLE_STATE);
|
| + if (readable_ != readable) {
|
| + readable_ = readable;
|
| + SignalReadableState(this);
|
| + }
|
| +}
|
| +
|
| void Transport::OnChannelWritableState(TransportChannel* channel) {
|
| ASSERT(worker_thread()->IsCurrent());
|
| signaling_thread()->Post(this, MSG_WRITESTATE, NULL);
|
| @@ -531,6 +547,9 @@
|
| for (const auto iter : channels_) {
|
| bool b = false;
|
| switch (state_type) {
|
| + case TRANSPORT_READABLE_STATE:
|
| + b = iter.second->readable();
|
| + break;
|
| case TRANSPORT_WRITABLE_STATE:
|
| b = iter.second->writable();
|
| break;
|
| @@ -851,6 +870,9 @@
|
| case MSG_CONNECTING:
|
| OnConnecting_s();
|
| break;
|
| + case MSG_READSTATE:
|
| + OnChannelReadableState_s();
|
| + break;
|
| case MSG_WRITESTATE:
|
| OnChannelWritableState_s();
|
| break;
|
|
|