Index: webrtc/p2p/base/transport.h |
diff --git a/webrtc/p2p/base/transport.h b/webrtc/p2p/base/transport.h |
index d7ebc9cbe4adbcdb2af886bb8dbb648dd2af8695..308ce044d287ebf0c084ffb5faa97c91d3d440bf 100644 |
--- a/webrtc/p2p/base/transport.h |
+++ b/webrtc/p2p/base/transport.h |
@@ -61,6 +61,14 @@ enum TransportState { |
TRANSPORT_STATE_ALL |
}; |
+// When checking transport operation, we need to differentiate between |
+// "readable", "writable", or "flaky" check. |
+enum TransportOperation { |
pthatcher1
2015/06/24 23:42:52
Maybe TransportStateType?
honghaiz3
2015/08/05 23:56:56
Done.
|
+ TRANSPORT_READABLE = 0, |
pthatcher1
2015/06/24 23:42:52
TRANSPORT_OPERATION_READABLE or TRANSPORT_READABLE
honghaiz3
2015/08/05 23:56:56
Done. Took the latter one.
|
+ TRANSPORT_WRITABLE, |
+ TRANSPORT_FLAKY |
+}; |
+ |
// Stats that we can return about the connections for a transport channel. |
// TODO(hta): Rename to ConnectionStats |
struct ConnectionInfo { |
@@ -172,8 +180,13 @@ class Transport : public rtc::MessageHandler, |
bool all_channels_writable() const { |
return (writable_ == TRANSPORT_STATE_ALL); |
} |
+ bool all_channels_flaky() const { |
+ return (flaky_ == TRANSPORT_STATE_ALL); |
+ } |
pthatcher1
2015/06/24 23:42:52
Is all_channels_flaky() ever used? If not, we sho
honghaiz3
2015/08/05 23:56:56
Yes in webrtcsession.cc
|
+ |
sigslot::signal1<Transport*> SignalReadableState; |
sigslot::signal1<Transport*> SignalWritableState; |
+ sigslot::signal1<Transport*> SignalFlakyState; |
sigslot::signal1<Transport*> SignalCompleted; |
sigslot::signal1<Transport*> SignalFailed; |
@@ -363,6 +376,9 @@ class Transport : public rtc::MessageHandler, |
void OnChannelReadableState(TransportChannel* channel); |
void OnChannelWritableState(TransportChannel* channel); |
+ // Called when the flakiness of a channel changes. |
+ void OnChannelFlakyState(TransportChannel* channel); |
+ |
// Called when a channel requests signaling. |
void OnChannelRequestSignaling(TransportChannelImpl* channel); |
@@ -393,6 +409,7 @@ class Transport : public rtc::MessageHandler, |
void OnRemoteCandidate_w(const Candidate& candidate); |
void OnChannelReadableState_s(); |
void OnChannelWritableState_s(); |
+ void OnChannelFlakyState_s(); |
void OnChannelRequestSignaling_s(); |
void OnConnecting_s(); |
void OnChannelRouteChange_s(const TransportChannel* channel, |
@@ -403,8 +420,9 @@ class Transport : public rtc::MessageHandler, |
typedef void (TransportChannelImpl::* TransportChannelFunc)(); |
void CallChannels_w(TransportChannelFunc func); |
- // Computes the OR of the channel's read or write state (argument picks). |
- TransportState GetTransportState_s(bool read); |
+ // Computes the AND and OR of the channel's read/write/flaky state |
+ // (argument picks the operation). |
+ TransportState GetTransportState_s(TransportOperation operation); |
void OnChannelCandidateReady_s(); |
@@ -430,6 +448,7 @@ class Transport : public rtc::MessageHandler, |
bool destroyed_; |
TransportState readable_; |
TransportState writable_; |
+ TransportState flaky_; |
bool was_writable_; |
bool connect_requested_; |
IceRole ice_role_; |