MCPcopy Create free account
hub / github.com/apache/brpc / ReleaseReferenceIfIdle

Method ReleaseReferenceIfIdle

src/brpc/socket.cpp:1078–1094  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1076}
1077
1078int Socket::ReleaseReferenceIfIdle(int idle_seconds) {
1079 const int64_t last_active_us = last_active_time_us();
1080 if (butil::cpuwide_time_us() - last_active_us <= idle_seconds * 1000000L) {
1081 return 0;
1082 }
1083 LOG_IF(WARNING, FLAGS_log_idle_connection_close)
1084 << "Close " << *this << " due to no data transmission for "
1085 << idle_seconds << " seconds";
1086 if (shall_fail_me_at_server_stop()) {
1087 // sockets for streaming purposes (say RTMP) are probably referenced
1088 // by many places, ReleaseAdditionalReference() cannot notify other
1089 // places to release refs, SetFailed() is a must.
1090 return SetFailed(EUNUSED, "No data transmission for %d seconds",
1091 idle_seconds);
1092 }
1093 return ReleaseAdditionalReference();
1094}
1095
1096
1097int Socket::SetFailed() {

Callers 2

WatchConnectionsMethod · 0.80
CloseIdleConnectionsMethod · 0.80

Calls 3

last_active_time_usFunction · 0.85
cpuwide_time_usFunction · 0.85

Tested by

no test coverage detected