1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef COMPONENTS_CAST_CHANNEL_CAST_CHANNEL_ENUM_H_
6 #define COMPONENTS_CAST_CHANNEL_CAST_CHANNEL_ENUM_H_
10 namespace cast_channel {
12 // Helper function to convert scoped enums to their underlying type, for use
14 template <typename Enumeration>
15 auto AsInteger(Enumeration const value) ->
16 typename std::underlying_type<Enumeration>::type {
17 return static_cast<typename std::underlying_type<Enumeration>::type>(value);
20 // Maps to enum ReadyState in cast_channel.idl
21 enum class ReadyState {
25 CLOSING, // TODO(zhaobin): Remove this value because it is unused.
29 // Maps to enum ChannelError in cast_channel.idl
30 enum class ChannelError {
44 // Used in ErrorInfo.eventType in cast_channel.idl
45 enum class ChannelEvent {
49 CONNECTION_STATE_CHANGED,
54 TCP_SOCKET_CONNECT, // Logged with RV.
55 TCP_SOCKET_SET_KEEP_ALIVE,
57 SSL_SOCKET_CONNECT, // Logged with RV.
59 DER_ENCODED_CERT_OBTAIN, // Logged with RV.
60 RECEIVED_CHALLENGE_REPLY,
64 MESSAGE_ENQUEUED, // Message
65 SOCKET_WRITE, // Logged with RV.
66 MESSAGE_WRITTEN, // Message
67 SOCKET_READ, // Logged with RV.
68 MESSAGE_READ, // Message
70 SSL_CERT_EXCESSIVE_LIFETIME,
71 CHANNEL_POLICY_ENFORCED,
72 TCP_SOCKET_CONNECT_COMPLETE, // Logged with RV.
73 SSL_SOCKET_CONNECT_COMPLETE, // Logged with RV.
74 SSL_SOCKET_CONNECT_FAILED, // Logged with RV.
75 SEND_AUTH_CHALLENGE_FAILED, // Logged with RV.
76 AUTH_CHALLENGE_REPLY_INVALID,
77 PING_WRITE_ERROR, // Logged with RV.
80 // Used in ErrorInfo.challengeReplyErrorType in cast_channel.idl
81 enum class ChallengeReplyError {
86 PAYLOAD_PARSING_FAILED,
89 FINGERPRINT_NOT_FOUND,
91 CERT_NOT_SIGNED_BY_TRUSTED_CA,
92 CANNOT_EXTRACT_PUBLIC_KEY,
93 SIGNED_BLOBS_MISMATCH,
94 TLS_CERT_VALIDITY_PERIOD_TOO_LONG,
95 TLS_CERT_VALID_START_DATE_IN_FUTURE,
99 SENDER_NONCE_MISMATCH,
104 // Used by CastSocket/CastTransport to track connection state.
105 enum class ConnectionState {
108 TCP_CONNECT_COMPLETE,
110 SSL_CONNECT_COMPLETE,
112 AUTH_CHALLENGE_SEND_COMPLETE,
113 AUTH_CHALLENGE_REPLY_COMPLETE,
115 FINISHED, // Terminal states here and below.
120 // Used by CastSocket/CastTransport to track read state.
121 enum class ReadState {
127 READ_ERROR, // Terminal state.
130 // Used by CastSocket/CastTransport to track write state.
131 enum class WriteState {
137 WRITE_ERROR, // Terminal states here and below.
141 std::string ReadyStateToString(ReadyState ready_state);
142 std::string ChannelErrorToString(ChannelError channel_error);
144 } // namespace cast_channel
146 #endif // COMPONENTS_CAST_CHANNEL_CAST_CHANNEL_ENUM_H_