aboutsummaryrefslogtreecommitdiff
path: root/cast
diff options
context:
space:
mode:
authorJordan Bayles <jophba@chromium.org>2021-06-29 11:28:40 -0700
committerOpenscreen LUCI CQ <openscreen-scoped@luci-project-accounts.iam.gserviceaccount.com>2021-07-01 00:18:27 +0000
commit29efcb654d85ac926666aabdc489f8084fd3b172 (patch)
treef0a7b2e0e79284133914d16e2bfced1fc31930d6 /cast
parentfb98aabab3ee63d07f0a56c8873e8e24c18b2055 (diff)
downloadopenscreen-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.h87
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) {