diff options
author | Jordan Bayles <jophba@chromium.org> | 2021-06-29 11:28:40 -0700 |
---|---|---|
committer | Openscreen LUCI CQ <openscreen-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2021-07-01 00:18:27 +0000 |
commit | 29efcb654d85ac926666aabdc489f8084fd3b172 (patch) | |
tree | f0a7b2e0e79284133914d16e2bfced1fc31930d6 /cast | |
parent | fb98aabab3ee63d07f0a56c8873e8e24c18b2055 (diff) | |
download | openscreen-29efcb654d85ac926666aabdc489f8084fd3b172.tar.gz |
Update message util to use EnumNameTable
This patch updates CastMessageType to use EnumNameTable, closing out a
TODO and somewhat cleaning up the code.
Change-Id: Icae46033db8487e71ea7e15c5d0cc40275794db8
Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/2994034
Reviewed-by: Brandon Tolsch <btolsch@chromium.org>
Commit-Queue: Jordan Bayles <jophba@chromium.org>
Diffstat (limited to 'cast')
-rw-r--r-- | cast/common/channel/message_util.h | 87 |
1 files changed, 30 insertions, 57 deletions
diff --git a/cast/common/channel/message_util.h b/cast/common/channel/message_util.h index 418e7ad6..6eef5b11 100644 --- a/cast/common/channel/message_util.h +++ b/cast/common/channel/message_util.h @@ -9,6 +9,7 @@ #include "absl/strings/string_view.h" #include "cast/common/channel/proto/cast_channel.pb.h" +#include "util/enum_name_table.h" namespace Json { class Value; @@ -162,63 +163,35 @@ enum class AppAvailabilityResult { std::string ToString(AppAvailabilityResult availability); -// TODO(crbug.com/openscreen/111): When this and/or other enums need the -// string->enum mapping, import EnumTable from Chromium's -// //components/cast_channel/enum_table.h. -inline constexpr const char* CastMessageTypeToString(CastMessageType type) { - switch (type) { - case CastMessageType::kPing: - return "PING"; - case CastMessageType::kPong: - return "PONG"; - case CastMessageType::kRpc: - return "RPC"; - case CastMessageType::kGetAppAvailability: - return "GET_APP_AVAILABILITY"; - case CastMessageType::kGetStatus: - return "GET_STATUS"; - case CastMessageType::kConnect: - return "CONNECT"; - case CastMessageType::kCloseConnection: - return "CLOSE"; - case CastMessageType::kBroadcast: - return "APPLICATION_BROADCAST"; - case CastMessageType::kLaunch: - return "LAUNCH"; - case CastMessageType::kStop: - return "STOP"; - case CastMessageType::kReceiverStatus: - return "RECEIVER_STATUS"; - case CastMessageType::kMediaStatus: - return "MEDIA_STATUS"; - case CastMessageType::kLaunchError: - return "LAUNCH_ERROR"; - case CastMessageType::kOffer: - return "OFFER"; - case CastMessageType::kAnswer: - return "ANSWER"; - case CastMessageType::kCapabilitiesResponse: - return "CAPABILITIES_RESPONSE"; - case CastMessageType::kStatusResponse: - return "STATUS_RESPONSE"; - case CastMessageType::kMultizoneStatus: - return "MULTIZONE_STATUS"; - case CastMessageType::kInvalidPlayerState: - return "INVALID_PLAYER_STATE"; - case CastMessageType::kLoadFailed: - return "LOAD_FAILED"; - case CastMessageType::kLoadCancelled: - return "LOAD_CANCELLED"; - case CastMessageType::kInvalidRequest: - return "INVALID_REQUEST"; - case CastMessageType::kPresentation: - return "PRESENTATION"; - case CastMessageType::kGetCapabilities: - return "GET_CAPABILITIES"; - case CastMessageType::kOther: - default: - return "OTHER"; - } +static const EnumNameTable<CastMessageType, 25> kCastMessageTypeNames{ + {{"PING", CastMessageType::kPing}, + {"PONG", CastMessageType::kPong}, + {"RPC", CastMessageType::kRpc}, + {"GET_APP_AVAILABILITY", CastMessageType::kGetAppAvailability}, + {"GET_STATUS", CastMessageType::kGetStatus}, + {"CONNECT", CastMessageType::kConnect}, + {"CLOSE", CastMessageType::kCloseConnection}, + {"APPLICATION_BROADCAST", CastMessageType::kBroadcast}, + {"LAUNCH", CastMessageType::kLaunch}, + {"STOP", CastMessageType::kStop}, + {"RECEIVER_STATUS", CastMessageType::kReceiverStatus}, + {"MEDIA_STATUS", CastMessageType::kMediaStatus}, + {"LAUNCH_ERROR", CastMessageType::kLaunchError}, + {"OFFER", CastMessageType::kOffer}, + {"ANSWER", CastMessageType::kAnswer}, + {"CAPABILITIES_RESPONSE", CastMessageType::kCapabilitiesResponse}, + {"STATUS_RESPONSE", CastMessageType::kStatusResponse}, + {"MULTIZONE_STATUS", CastMessageType::kMultizoneStatus}, + {"INVALID_PLAYER_STATE", CastMessageType::kInvalidPlayerState}, + {"LOAD_FAILED", CastMessageType::kLoadFailed}, + {"LOAD_CANCELLED", CastMessageType::kLoadCancelled}, + {"INVALID_REQUEST", CastMessageType::kInvalidRequest}, + {"PRESENTATION", CastMessageType::kPresentation}, + {"GET_CAPABILITIES", CastMessageType::kGetCapabilities}, + {"OTHER", CastMessageType::kOther}}}; + +inline const char* CastMessageTypeToString(CastMessageType type) { + return GetEnumName(kCastMessageTypeNames, type).value("OTHER"); } inline bool IsAuthMessage(const ::cast::channel::CastMessage& message) { |