//
//  Copyright (c) 2024 Rally Tactical Systems, Inc.
//  All rights reserved.
//
/** @file EngageSemNames.h
 *  @brief Object and field names used for interaction with Engage Semaphore Service
 *
 */

#ifndef EngageSemNames_h
#define EngageSemNames_h

/** @brief The root name of the JSON object. */
#define ENSEM_JSON_OBJECT_NAME                              "ensem"

/** @brief Message type. */
#define ENSEM_JSON_FIELD_MESSAGE_TYPE                       "ty"

/** @brief The semaphore identifier.  Case insensitive.  */
#define ENSEM_JSON_FIELD_SEM_ID                             "i"

/** @brief Maximum number of owners the semaphore may have. */
#define ENSEM_JSON_FIELD_MAX_OWNERS                         "x"

/** @brief Number of tokens waiting on the semaphore. */
#define ENSEM_JSON_FIELD_WAITING_COUNT                      "w"

/** @brief Array of semaphore owners. */
#define ENSEM_JSON_FIELD_OWNERS                             "o"

/** @brief The toekn identifier.  Case insensitive. */
#define ENSEM_JSON_FIELD_TOKEN_ID                           "t"

/** @brief Local timestamp (milliseconds) until ownership expires. */
#define ENSEM_JSON_FIELD_OWNER_UNTIL                        "u"

/** @brief Local 64-bit timestamp - typically number of milliseconds since Jan 1, 1970 */
#define ENSEM_JSON_FIELD_LOCAL_TIMESTAMP                    "ts"

/** @brief Local 64-bit timestamp when the token request will expire. */
#define ENSEM_JSON_FIELD_LOCAL_EXPIRATION_TIMESTAMP         "es"

/** @brief Milliseconds of semaphore ownership. */
#define ENSEM_JSON_FIELD_DURATION_MS                        "r"

/** @brief Request priority 0 - 255 */
#define ENSEM_JSON_FIELD_PRIORITY                           "p"

/** @brief The intended use of the semaphore. */
#define ENSEM_JSON_FIELD_SEM_USE                            "us"

/** @brief The RTP SSRC associated with the stream the semaphore represents. */
#define ENSEM_JSON_FIELD_SSRC                               "s"

/** @brief The alias of the transmitter of the stream the semaphore represents. */
#define ENSEM_JSON_FIELD_ALIAS                              "a"

/** @brief The display name for the transmitter of the stream the semaphore represents. */
#define ENSEM_JSON_FIELD_DISPLAY_NAME                       "d"

/** @brief The node ID for the transmitter of the stream the semaphore represents. */
#define ENSEM_JSON_FIELD_NODE_ID                            "n"

#endif  // EngageSemNames_h
