| 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
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a1f3efe66c859625c1385cd6e737e18fc24e5c5e
|
| --- /dev/null
|
| +++ b/extensions/browser/api/cast_channel/logger.h
|
| @@ -0,0 +1,87 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef EXTENSIONS_BROWSER_API_CAST_CHANNEL_LOGGER_H_
|
| +#define EXTENSIONS_BROWSER_API_CAST_CHANNEL_LOGGER_H_
|
| +
|
| +#include <stddef.h>
|
| +
|
| +#include <deque>
|
| +#include <map>
|
| +#include <memory>
|
| +#include <string>
|
| +
|
| +#include "base/macros.h"
|
| +#include "base/memory/ref_counted.h"
|
| +#include "base/threading/thread_checker.h"
|
| +#include "extensions/common/api/cast_channel/logging.pb.h"
|
| +
|
| +
|
| +namespace extensions {
|
| +namespace api {
|
| +namespace cast_channel {
|
| +
|
| +struct AuthResult;
|
| +
|
| +// Holds the most recent errors encountered by a CastSocket.
|
| +struct LastErrors {
|
| + public:
|
| + LastErrors();
|
| + ~LastErrors();
|
| +
|
| + // The most recent event that occurred at the time of the error.
|
| + proto::EventType event_type;
|
| +
|
| + // 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::RefCountedThreadSafe<Logger> {
|
| + public:
|
| + Logger();
|
| +
|
| + // For events that involves socket / crypto operations that returns a value.
|
| + void LogSocketEventWithRv(int channel_id,
|
| + proto::EventType event_type,
|
| + int rv);
|
| +
|
| + // For AUTH_CHALLENGE_REPLY event.
|
| + void LogSocketChallengeReplyEvent(int channel_id,
|
| + const AuthResult& auth_result);
|
| +
|
| + // 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::RefCountedThreadSafe<Logger>;
|
| + ~Logger();
|
| +
|
| + using LastErrorsMap = std::map<int, LastErrors>;
|
| +
|
| + // Returns a SocketEvent proto with common fields (EventType, timestamp)
|
| + // populated.
|
| + proto::SocketEvent CreateEvent(proto::EventType event_type);
|
| +
|
| + // Uses |event| associated with |channel_id| to update its LastErrors.
|
| + void LogSocketEvent(int channel_id, const proto::SocketEvent& socket_event);
|
| +
|
| + LastErrorsMap last_errors_;
|
| +
|
| + base::ThreadChecker thread_checker_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(Logger);
|
| +};
|
| +} // namespace cast_channel
|
| +} // namespace api
|
| +} // namespace extensions
|
| +
|
| +#endif // EXTENSIONS_BROWSER_API_CAST_CHANNEL_LOGGER_H_
|
|
|