Chromium Code Reviews| Index: extensions/browser/api/cast_channel/logger.cc |
| diff --git a/extensions/browser/api/cast_channel/logger.cc b/extensions/browser/api/cast_channel/logger.cc |
| index c1e8c9bc3949ea9debfbd991d4482e34dc5a0210..c06b52eeb75c68de63bdf1eadfb8d3f6b913ae94 100644 |
| --- a/extensions/browser/api/cast_channel/logger.cc |
| +++ b/extensions/browser/api/cast_channel/logger.cc |
| @@ -64,10 +64,7 @@ Logger::AggregatedSocketEventLog::~AggregatedSocketEventLog() { |
| Logger::Logger(scoped_ptr<base::TickClock> clock, |
| base::TimeTicks unix_epoch_time_ticks) |
| - : clock_(clock.Pass()), |
| - unix_epoch_time_ticks_(unix_epoch_time_ticks), |
| - num_evicted_aggregated_socket_events_(0), |
| - num_evicted_socket_events_(0) { |
| + : clock_(clock.Pass()), unix_epoch_time_ticks_(unix_epoch_time_ticks) { |
| DCHECK(clock_); |
| // Logger may not be necessarily be created on the IO thread, but logging |
| @@ -85,9 +82,12 @@ void Logger::LogNewSocketEvent(const CastSocket& cast_socket) { |
| SocketEvent event = CreateEvent(proto::CAST_SOCKET_CREATED); |
| LogSocketEvent(channel_id, event); |
| + AggregatedSocketEventLogMap::iterator it = |
| + aggregated_socket_events_.find(channel_id); |
| + CHECK(it != aggregated_socket_events_.end()); |
| + |
| AggregatedSocketEvent& aggregated_socket_event = |
| - aggregated_socket_events_.find(channel_id) |
| - ->second->aggregated_socket_event; |
| + it->second->aggregated_socket_event; |
| const net::IPAddressNumber& ip = cast_socket.ip_endpoint().address(); |
| aggregated_socket_event.set_endpoint_id(ip.back()); |
| aggregated_socket_event.set_channel_auth_type(cast_socket.channel_auth() == |
| @@ -123,6 +123,23 @@ void Logger::LogSocketEventWithRv(int channel_id, |
| event.set_return_value(rv); |
| LogSocketEvent(channel_id, event); |
| + |
| + if ((event_type == proto::SOCKET_READ || event_type == proto::SOCKET_WRITE) && |
| + rv > 0) { |
| + AggregatedSocketEventLogMap::iterator it = |
| + aggregated_socket_events_.find(channel_id); |
| + CHECK(it != aggregated_socket_events_.end()); |
| + |
| + AggregatedSocketEvent& aggregated_socket_event = |
| + it->second->aggregated_socket_event; |
| + if (event_type == proto::SOCKET_READ) { |
| + aggregated_socket_event.set_bytes_read( |
| + aggregated_socket_event.bytes_read() + rv); |
| + } else { |
| + aggregated_socket_event.set_bytes_written( |
| + aggregated_socket_event.bytes_written() + rv); |
| + } |
| + } |
| } |
| void Logger::LogSocketReadyState(int channel_id, proto::ReadyState new_state) { |
| @@ -214,8 +231,11 @@ void Logger::LogSocketEvent(int channel_id, const SocketEvent& socket_event) { |
| AggregatedSocketEventLogMap::iterator erase_it = |
| aggregated_socket_events_.begin(); |
| - num_evicted_aggregated_socket_events_++; |
| - num_evicted_socket_events_ += erase_it->second->socket_events.size(); |
| + log_.set_num_evicted_aggregated_socket_events( |
| + log_.num_evicted_aggregated_socket_events() + 1); |
| + log_.set_num_evicted_socket_events( |
| + log_.num_evicted_socket_events() + |
| + erase_it->second->socket_events.size()); |
| aggregated_socket_events_.erase(erase_it); |
| } |
| @@ -230,7 +250,7 @@ void Logger::LogSocketEvent(int channel_id, const SocketEvent& socket_event) { |
| std::deque<proto::SocketEvent>& socket_events = it->second->socket_events; |
| if (socket_events.size() >= kMaxEventsPerSocket) { |
| socket_events.pop_front(); |
| - num_evicted_socket_events_++; |
| + log_.set_num_evicted_socket_events(log_.num_evicted_socket_events() + 1); |
| } |
| socket_events.push_back(socket_event); |
| @@ -240,9 +260,7 @@ bool Logger::LogToString(std::string* output) const { |
| output->clear(); |
| Log log; |
| - log.set_num_evicted_aggregated_socket_events( |
| - num_evicted_aggregated_socket_events_); |
| - log.set_num_evicted_socket_events(num_evicted_socket_events_); |
| + log.CopyFrom(log_); |
|
Wez
2014/08/14 18:44:35
nit: This is just to get the evicted counts? Consi
imcheng
2014/08/14 22:43:19
Done.
|
| for (AggregatedSocketEventLogMap::const_iterator it = |
| aggregated_socket_events_.begin(); |
| @@ -268,8 +286,7 @@ bool Logger::LogToString(std::string* output) const { |
| void Logger::Reset() { |
| aggregated_socket_events_.clear(); |
| - num_evicted_aggregated_socket_events_ = 0; |
| - num_evicted_socket_events_ = 0; |
| + log_.Clear(); |
| } |
| } // namespace cast_channel |