| 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 a665052ac841c74aa53b56c83063699f5799d080..823b4c320877e84c3141879d8ce81d92e9bb8dd9 100644
|
| --- a/extensions/browser/api/cast_channel/logger.cc
|
| +++ b/extensions/browser/api/cast_channel/logger.cc
|
| @@ -108,10 +108,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
|
| @@ -127,11 +124,9 @@ void Logger::LogNewSocketEvent(const CastSocket& cast_socket) {
|
|
|
| int channel_id = cast_socket.id();
|
| SocketEvent event = CreateEvent(proto::CAST_SOCKET_CREATED);
|
| - LogSocketEvent(channel_id, event);
|
| -
|
| AggregatedSocketEvent& aggregated_socket_event =
|
| - aggregated_socket_events_.find(channel_id)
|
| - ->second->aggregated_socket_event;
|
| + LogSocketEvent(channel_id, 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() ==
|
| @@ -166,7 +161,19 @@ void Logger::LogSocketEventWithRv(int channel_id,
|
| SocketEvent event = CreateEvent(event_type);
|
| event.set_net_return_value(rv);
|
|
|
| - LogSocketEvent(channel_id, event);
|
| + AggregatedSocketEvent& aggregated_socket_event =
|
| + LogSocketEvent(channel_id, event);
|
| +
|
| + if ((event_type == proto::SOCKET_READ || event_type == proto::SOCKET_WRITE) &&
|
| + rv > 0) {
|
| + 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) {
|
| @@ -250,7 +257,8 @@ SocketEvent Logger::CreateEvent(EventType event_type) {
|
| return event;
|
| }
|
|
|
| -void Logger::LogSocketEvent(int channel_id, const SocketEvent& socket_event) {
|
| +AggregatedSocketEvent& Logger::LogSocketEvent(int channel_id,
|
| + const SocketEvent& socket_event) {
|
| AggregatedSocketEventLogMap::iterator it =
|
| aggregated_socket_events_.find(channel_id);
|
| if (it == aggregated_socket_events_.end()) {
|
| @@ -258,8 +266,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);
|
| }
|
| @@ -274,7 +285,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);
|
| @@ -289,15 +300,17 @@ void Logger::LogSocketEvent(int channel_id, const SocketEvent& socket_event) {
|
| }
|
| if (socket_event.has_nss_error_code())
|
| it->second->last_errors.nss_error_code = socket_event.nss_error_code();
|
| +
|
| + return it->second->aggregated_socket_event;
|
| }
|
|
|
| scoped_ptr<char[]> Logger::GetLogs(size_t* length) const {
|
| *length = 0;
|
|
|
| Log log;
|
| - log.set_num_evicted_aggregated_socket_events(
|
| - num_evicted_aggregated_socket_events_);
|
| - log.set_num_evicted_socket_events(num_evicted_socket_events_);
|
| + // Copy "global" values from |log_|. Don't use |log_| directly since this
|
| + // function is const.
|
| + log.CopyFrom(log_);
|
|
|
| for (AggregatedSocketEventLogMap::const_iterator it =
|
| aggregated_socket_events_.begin();
|
| @@ -329,8 +342,7 @@ scoped_ptr<char[]> Logger::GetLogs(size_t* length) const {
|
|
|
| void Logger::Reset() {
|
| aggregated_socket_events_.clear();
|
| - num_evicted_aggregated_socket_events_ = 0;
|
| - num_evicted_socket_events_ = 0;
|
| + log_.Clear();
|
| }
|
|
|
| LastErrors Logger::GetLastErrors(int channel_id) const {
|
|
|