cast_channel_enum.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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.
  4. #ifndef COMPONENTS_CAST_CHANNEL_CAST_CHANNEL_ENUM_H_
  5. #define COMPONENTS_CAST_CHANNEL_CAST_CHANNEL_ENUM_H_
  6. #include <string>
  7. namespace cast_channel {
  8. // Helper function to convert scoped enums to their underlying type, for use
  9. // with ostreams.
  10. template <typename Enumeration>
  11. auto AsInteger(Enumeration const value) ->
  12. typename std::underlying_type<Enumeration>::type {
  13. return static_cast<typename std::underlying_type<Enumeration>::type>(value);
  14. }
  15. // Maps to enum ReadyState in cast_channel.idl
  16. enum class ReadyState {
  17. NONE,
  18. CONNECTING,
  19. OPEN,
  20. CLOSING, // TODO(zhaobin): Remove this value because it is unused.
  21. CLOSED,
  22. };
  23. // Maps to enum ChannelError in cast_channel.idl
  24. enum class ChannelError {
  25. NONE,
  26. CHANNEL_NOT_OPEN,
  27. AUTHENTICATION_ERROR,
  28. CONNECT_ERROR,
  29. CAST_SOCKET_ERROR,
  30. TRANSPORT_ERROR,
  31. INVALID_MESSAGE,
  32. INVALID_CHANNEL_ID,
  33. CONNECT_TIMEOUT,
  34. PING_TIMEOUT,
  35. UNKNOWN,
  36. };
  37. // Used in ErrorInfo.eventType in cast_channel.idl
  38. enum class ChannelEvent {
  39. UNKNOWN = 0,
  40. CAST_SOCKET_CREATED,
  41. READY_STATE_CHANGED,
  42. CONNECTION_STATE_CHANGED,
  43. READ_STATE_CHANGED,
  44. WRITE_STATE_CHANGED,
  45. ERROR_STATE_CHANGED,
  46. CONNECT_FAILED,
  47. TCP_SOCKET_CONNECT, // Logged with RV.
  48. TCP_SOCKET_SET_KEEP_ALIVE,
  49. SSL_CERT_WHITELISTED,
  50. SSL_SOCKET_CONNECT, // Logged with RV.
  51. SSL_INFO_OBTAINED,
  52. DER_ENCODED_CERT_OBTAIN, // Logged with RV.
  53. RECEIVED_CHALLENGE_REPLY,
  54. AUTH_CHALLENGE_REPLY,
  55. CONNECT_TIMED_OUT,
  56. SEND_MESSAGE_FAILED,
  57. MESSAGE_ENQUEUED, // Message
  58. SOCKET_WRITE, // Logged with RV.
  59. MESSAGE_WRITTEN, // Message
  60. SOCKET_READ, // Logged with RV.
  61. MESSAGE_READ, // Message
  62. SOCKET_CLOSED,
  63. SSL_CERT_EXCESSIVE_LIFETIME,
  64. CHANNEL_POLICY_ENFORCED,
  65. TCP_SOCKET_CONNECT_COMPLETE, // Logged with RV.
  66. SSL_SOCKET_CONNECT_COMPLETE, // Logged with RV.
  67. SSL_SOCKET_CONNECT_FAILED, // Logged with RV.
  68. SEND_AUTH_CHALLENGE_FAILED, // Logged with RV.
  69. AUTH_CHALLENGE_REPLY_INVALID,
  70. PING_WRITE_ERROR, // Logged with RV.
  71. };
  72. // Used in ErrorInfo.challengeReplyErrorType in cast_channel.idl
  73. enum class ChallengeReplyError {
  74. NONE = 1,
  75. PEER_CERT_EMPTY,
  76. WRONG_PAYLOAD_TYPE,
  77. NO_PAYLOAD,
  78. PAYLOAD_PARSING_FAILED,
  79. MESSAGE_ERROR,
  80. NO_RESPONSE,
  81. FINGERPRINT_NOT_FOUND,
  82. CERT_PARSING_FAILED,
  83. CERT_NOT_SIGNED_BY_TRUSTED_CA,
  84. CANNOT_EXTRACT_PUBLIC_KEY,
  85. SIGNED_BLOBS_MISMATCH,
  86. TLS_CERT_VALIDITY_PERIOD_TOO_LONG,
  87. TLS_CERT_VALID_START_DATE_IN_FUTURE,
  88. TLS_CERT_EXPIRED,
  89. CRL_INVALID,
  90. CERT_REVOKED,
  91. SENDER_NONCE_MISMATCH,
  92. SIGNATURE_EMPTY,
  93. DIGEST_UNSUPPORTED,
  94. };
  95. // Used by CastSocket/CastTransport to track connection state.
  96. enum class ConnectionState {
  97. UNKNOWN,
  98. TCP_CONNECT,
  99. TCP_CONNECT_COMPLETE,
  100. SSL_CONNECT,
  101. SSL_CONNECT_COMPLETE,
  102. AUTH_CHALLENGE_SEND,
  103. AUTH_CHALLENGE_SEND_COMPLETE,
  104. AUTH_CHALLENGE_REPLY_COMPLETE,
  105. START_CONNECT,
  106. FINISHED, // Terminal states here and below.
  107. CONNECT_ERROR,
  108. TIMEOUT,
  109. };
  110. // Used by CastSocket/CastTransport to track read state.
  111. enum class ReadState {
  112. UNKNOWN,
  113. READ,
  114. READ_COMPLETE,
  115. DO_CALLBACK,
  116. HANDLE_ERROR,
  117. READ_ERROR, // Terminal state.
  118. };
  119. // Used by CastSocket/CastTransport to track write state.
  120. enum class WriteState {
  121. UNKNOWN,
  122. WRITE,
  123. WRITE_COMPLETE,
  124. DO_CALLBACK,
  125. HANDLE_ERROR,
  126. WRITE_ERROR, // Terminal states here and below.
  127. IDLE,
  128. };
  129. std::string ReadyStateToString(ReadyState ready_state);
  130. std::string ChannelErrorToString(ChannelError channel_error);
  131. } // namespace cast_channel
  132. #endif // COMPONENTS_CAST_CHANNEL_CAST_CHANNEL_ENUM_H_