Chromium Code Reviews| Index: extensions/browser/api/cast_channel/logger.h |
| diff --git a/extensions/browser/api/cast_channel/logger.h b/extensions/browser/api/cast_channel/logger.h |
| index 3453f541ce922d9f636ff8efe2b0be187c1f8d94..685ece7fc5950a08cdf8810babcb573969dc46d6 100644 |
| --- a/extensions/browser/api/cast_channel/logger.h |
| +++ b/extensions/browser/api/cast_channel/logger.h |
| @@ -15,125 +15,66 @@ |
| #include "base/macros.h" |
| #include "base/memory/ref_counted.h" |
| #include "base/threading/thread_checker.h" |
| -#include "extensions/browser/api/cast_channel/logger_util.h" |
| #include "extensions/common/api/cast_channel/logging.pb.h" |
| -#include "net/base/ip_endpoint.h" |
| -namespace base { |
| -class Clock; |
| -} |
| namespace extensions { |
| namespace api { |
| namespace cast_channel { |
| struct AuthResult; |
| -class CastSocket; |
| -static const int kMaxSocketsToLog = 50; |
| -static const int kMaxEventsPerSocket = 2000; |
| +// Holds the most recent errors encountered by a CastSocket. |
| +struct LastErrors { |
|
Kevin M
2017/02/09 19:28:54
low pri nit: LastErrors seems like a misnomer; thi
mark a. foltz
2017/02/10 21:55:16
It's designed to collect the last net:: error and
|
| + public: |
| + LastErrors(); |
| + ~LastErrors(); |
| + |
| + // The most recent event that occurred at the time of the error. |
| + proto::EventType event_type; |
| -// Logs information of each channel and sockets and exports the log as |
| -// a blob. Logger is done on the IO thread. |
| + // The most recent ChallengeReplyErrorType logged for the socket. |
| + proto::ChallengeReplyErrorType challenge_reply_error_type; |
| + |
| + // The most recent net_return_value logged for the socket. |
| + int net_return_value; |
| +}; |
| + |
| +// Called with events that occur on a Cast Channel and remembers any that |
| +// warrant reporting to the caller in LastErrors. |
| class Logger : public base::RefCounted<Logger> { |
| public: |
| - // |clock|: Clock used for generating timestamps for the events. Owned by |
| - // this class. |
| - // |unix_epoch_time|: The Time that corresponds to the Unix epoch. |
| - // Can be set to other values (e.g. zero) for testing purposes. |
| - // |
| - // See crbug.com/518951 for information on why base::Clock |
| - // is used instead of base::TickClock. |
| - Logger(std::unique_ptr<base::Clock> clock, base::Time unix_epoch_time); |
| - |
| - // For newly created sockets. Will create an event and log a |
| - // CAST_SOCKET_CREATED event. |
| - void LogNewSocketEvent(const CastSocket& cast_socket); |
| - |
| - void LogSocketEvent(int channel_id, proto::EventType event_type); |
| - void LogSocketEventWithDetails(int channel_id, |
| - proto::EventType event_type, |
| - const std::string& details); |
| + Logger(); |
| // For events that involves socket / crypto operations that returns a value. |
| void LogSocketEventWithRv(int channel_id, |
| proto::EventType event_type, |
| int rv); |
| - // For *_STATE_CHANGED events. |
| - void LogSocketReadyState(int channel_id, proto::ReadyState new_state); |
| - void LogSocketConnectState(int channel_id, proto::ConnectionState new_state); |
| - void LogSocketReadState(int channel_id, proto::ReadState new_state); |
| - void LogSocketWriteState(int channel_id, proto::WriteState new_state); |
| - void LogSocketErrorState(int channel_id, proto::ErrorState new_state); |
| - |
| // For AUTH_CHALLENGE_REPLY event. |
| void LogSocketChallengeReplyEvent(int channel_id, |
| const AuthResult& auth_result); |
| - void LogSocketEventForMessage(int channel_id, |
| - proto::EventType event_type, |
| - const std::string& message_namespace, |
| - const std::string& details); |
| - |
| - // Assembles logs collected so far and return it as a serialized Log proto, |
| - // compressed in gzip format. |
| - // If serialization or compression failed, returns nullptr. |
| - // |length|: If successful, assigned with size of compressed content. |
| - std::unique_ptr<char[]> GetLogs(size_t* length) const; |
| - |
| - // Clears the internal map. |
| - void Reset(); |
| - |
| - // Returns the last errors logged for |channel_id|. If the the logs for |
| - // |channel_id| are evicted before this is called, returns a LastErrors with |
| - // no errors. This may happen if errors are logged and retrieved in different |
| - // tasks. |
| + // Returns the last errors logged for |channel_id|. |
| LastErrors GetLastErrors(int channel_id) const; |
| + // Removes a LastErrors entry for |channel_id| if one exists. |
| + void ClearLastErrors(int channel_id); |
| + |
| private: |
| friend class base::RefCounted<Logger>; |
| ~Logger(); |
| - struct AggregatedSocketEventLog { |
| - public: |
| - AggregatedSocketEventLog(); |
| - ~AggregatedSocketEventLog(); |
| - |
| - // Partially constructed AggregatedSocketEvent proto populated by Logger. |
| - // Contains top level info such as channel ID, IP end point and channel |
| - // auth type. |
| - proto::AggregatedSocketEvent aggregated_socket_event; |
| - // Events to be assigned to the AggregatedSocketEvent proto. Contains the |
| - // most recent |kMaxEventsPerSocket| entries. The oldest events are |
| - // evicted as new events are logged. |
| - std::deque<proto::SocketEvent> socket_events; |
| - |
| - // The most recent errors logged for the socket. |
| - LastErrors last_errors; |
| - }; |
| - |
| - using AggregatedSocketEventLogMap = |
| - std::map<int, std::unique_ptr<AggregatedSocketEventLog>>; |
| + using LastErrorsMap = std::map<int, LastErrors>; |
| // Returns a SocketEvent proto with common fields (EventType, timestamp) |
| // populated. |
| proto::SocketEvent CreateEvent(proto::EventType event_type); |
| - // Records |event| associated with |channel_id|. |
| - // If the internal map is already logging maximum number of sockets and this |
| - // is a new socket, the socket with the smallest channel id will be discarded. |
| - // Returns a reference to the AggregatedSocketEvent proto created/modified. |
| - proto::AggregatedSocketEvent& LogSocketEvent( |
| - int channel_id, |
| - const proto::SocketEvent& socket_event); |
| - |
| - std::unique_ptr<base::Clock> clock_; |
| - AggregatedSocketEventLogMap aggregated_socket_events_; |
| - base::Time unix_epoch_time_; |
| + // Uses |event| associated with |channel_id| to update its LastErrors. |
| + void LogSocketEvent(int channel_id, const proto::SocketEvent& socket_event); |
| - // Log proto holding global statistics. |
| - proto::Log log_; |
| + LastErrorsMap last_errors_; |
| base::ThreadChecker thread_checker_; |