/*
 * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
 *
 * DMS is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 *
 *          http://license.coscl.org.cn/MulanPSL2
 *
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 * -------------------------------------------------------------------------
 *
 * dms_msg_command.h
 *
 *
 * IDENTIFICATION
 *    src/common/dms_msg_command.h
 *
 * -------------------------------------------------------------------------
 */
#ifndef __DMS_MSG_COMMAND_H__
#define __DMS_MSG_COMMAND_H__

#ifdef __cplusplus
extern "C" {
#endif

typedef enum en_msg_command {
    MSG_REQ_BEGIN = 0,
    MSG_REQ_ASK_MASTER_FOR_PAGE = MSG_REQ_BEGIN,
    MSG_REQ_ASK_OWNER_FOR_PAGE = 1,
    MSG_REQ_INVALIDATE_SHARE_COPY = 2,
    MSG_REQ_CLAIM_OWNER = 3,
    MSG_REQ_CR_PAGE = 4,
    MSG_REQ_ASK_MASTER_FOR_CR_PAGE = 5,
    MSG_REQ_ASK_OWNER_FOR_CR_PAGE = 6,
    MSG_REQ_CHECK_VISIBLE = 7,
    MSG_REQ_TRY_ASK_MASTER_FOR_PAGE_OWNER_ID = 8,
    MSG_REQ_BROADCAST = 9,
    MSG_REQ_TXN_INFO = 10,
    MSG_REQ_TXN_SNAPSHOT = 11,
    MSG_REQ_WAIT_TXN = 12,
    MSG_REQ_AWAKE_TXN = 13,
    MSG_REQ_MASTER_CKPT_EDP = 14,
    MSG_REQ_OWNER_CKPT_EDP = 15,
    MSG_REQ_MASTER_CLEAN_EDP = 16,
    MSG_REQ_OWNER_CLEAN_EDP = 17,
    MES_REQ_MGRT_MASTER_DATA = 18,
    MSG_REQ_RELEASE_OWNER = 19,
    MSG_REQ_BOC = 20,
    MSG_REQ_SMON_DLOCK_INFO = 21,
    MSG_REQ_SMON_DEADLOCK_SQL = 22,
    MSG_REQ_SMON_DEADLOCK_ITL = 23,
    MSG_REQ_SMON_BROADCAST = 24,
    MSG_REQ_SMON_TLOCK_BY_TID = 25,
    MSG_REQ_SMON_TLOCK_BY_RM = 26,
    MSG_REQ_PAGE_REBUILD = 27,
    MSG_REQ_LOCK_REBUILD = 28,
    MSG_REQ_OPENGAUSS_TXN_STATUS = 29,
    MSG_REQ_OPENGAUSS_TXN_SNAPSHOT = 30,
    MSG_REQ_OPENGAUSS_TXN_UPDATE_XID = 31,
    MSG_REQ_OPENGAUSS_XID_CSN = 32,
    MSG_REQ_REPAIR_NEW = 33,
    MSG_REQ_SYNC_STEP = 34,
    MSG_REQ_SYNC_SHARE_INFO = 35,
    MSG_REQ_DMS_STATUS = 36,
    MSG_REQ_REFORM_PREPARE = 37,
    MSG_REQ_SYNC_NEXT_STEP = 38,
    MSG_REQ_PAGE = 39,
    MSG_REQ_SWITCHOVER = 40,
    MSG_REQ_CANCEL_REQUEST_RES = 41,
    MSG_REQ_OPENGAUSS_DDLLOCK = 42,
    MSG_REQ_CONFIRM_CVT = 43,
    MSG_REQ_CHECK_REFORM_DONE = 44,
    MSG_REQ_MAP_INFO = 45,
    MSG_REQ_DDL_SYNC = 46,
    MSG_REQ_REFORM_GCV_SYNC = 47,
    MSG_REQ_INVALID_OWNER = 48,
    MSG_REQ_ASK_RES_OWNER_ID = 49,
    MSG_REQ_OPENGAUSS_ONDEMAND_REDO = 50,
    MSG_REQ_OPENGAUSS_TXN_SWINFO = 51,
    MSG_REQ_OPENGAUSS_PAGE_STATUS = 52,
    MSG_REQ_SEND_OPENGAUSS_OLDEST_XMIN = 53,
    MSG_REQ_NODE_FOR_BUF_INFO = 54,
    MSG_REQ_PROTOCOL_MAINTAIN_VERSION = 55,
    MSG_REQ_CREATE_GLOBAL_XA_RES = 56,
    MSG_REQ_DELETE_GLOBAL_XA_RES = 57,
    MSG_REQ_ASK_XA_OWNER_ID = 58,
    MSG_REQ_END_XA = 59,
    MSG_REQ_ASK_XA_IN_USE = 60,
    MSG_REQ_XA_REBUILD = 61,
    MSG_REQ_RECYCLE = 62,
    MSG_REQ_OPENGAUSS_IMMEDIATE_CKPT = 63,
    MSG_REQ_TLOCK_REBUILD = 64,
    MSG_REQ_AZ_SWITCHOVER_DEMOTE = 65,
    MSG_REQ_AZ_SWITCHOVER_PROMOTE = 66,
    MSG_REQ_AZ_FAILOVER = 67,
    MSG_REQ_ALOCK_REBUILD = 68,
    MSG_REQ_SMON_ALOCK_BY_DRID = 69,
    MSG_REQ_CHECK_OWNERSHIP = 70,
    MSG_REQ_IMCSTORE_DELTA = 71,
    MSG_REQ_END,

    MSG_ACK_BEGIN = 128,
    MSG_ACK_CHECK_VISIBLE = MSG_ACK_BEGIN,
    MSG_ACK_PAGE_OWNER_ID = 129,
    MSG_ACK_BROADCAST = 130,
    MSG_ACK_BROADCAST_WITH_MSG = 131,
    MSG_ACK_PAGE_READY = 132,
    MSG_ACK_GRANT_OWNER = 133,
    MSG_ACK_ALREADY_OWNER = 134,
    MSG_ACK_CR_PAGE = 135,
    MSG_ACK_TXN_WAIT = 136,
    MSG_ACK_LOCK = 137,
    MSG_ACK_TXN_INFO = 138,
    MSG_ACK_TXN_SNAPSHOT = 139,
    MSG_ACK_WAIT_TXN = 140,
    MSG_ACK_AWAKE_TXN = 141,
    MSG_ACK_MASTER_CKPT_EDP = 142,
    MSG_ACK_OWNER_CKPT_EDP = 143,
    MSG_ACK_MASTER_CLEAN_EDP = 144,
    MSG_ACK_OWNER_CLEAN_EDP = 145,
    MSG_ACK_ERROR = 146,
    MSG_ACK_RELEASE_PAGE_OWNER = 147,
    MSG_ACK_INVLDT_SHARE_COPY = 148,
    MSG_ACK_BOC = 149,
    MSG_ACK_SMON_DLOCK_INFO = 150,
    MSG_ACK_SMON_DEADLOCK_SQL = 151,
    MSG_ACK_SMON_DEADLOCK_ITL = 152,
    MSG_ACK_SMON_BROADCAST = 153,
    MSG_ACK_SMON_TLOCK_BY_TID = 154,
    MSG_ACK_SMON_TLOCK_BY_RM = 155,
    MSG_ACK_OPENGAUSS_TXN_STATUS = 156,
    MSG_ACK_OPENGAUSS_TXN_SNAPSHOT = 157,
    MES_ACK_RELEASE_OWNER_BATCH = 158,
    MSG_ACK_OPENGAUSS_TXN_UPDATE_XID = 159,
    MSG_ACK_OPENGAUSS_XID_CSN = 160,
    MSG_ACK_OPENGAUSS_LOCK_BUFFER = 161,
    MSG_ACK_SMON_ALOCK_BY_DRID = 162,
    MSG_ACK_CHECK_OWNERSHIP = 163,
    MSG_ACK_REFORM_COMMON = 164,
    MSG_ACK_CONFIRM_CVT = 165,
    MSG_ACK_MAP_INFO = 166,
    MSG_ACK_REFORM_GCV_SYNC = 167,
    MSG_ACK_INVLD_OWNER = 168,
    MSG_ACK_ASK_RES_OWNER_ID = 169,
    MSG_ACK_OPENGAUSS_ONDEMAND_REDO = 170,
    MSG_ACK_OPENGAUSS_TXN_SWINFO = 171,
    MSG_ACK_OPENGAUSS_PAGE_STATUS = 172,
    MSG_ACK_SEND_OPENGAUSS_OLDEST_XMIN = 173,
    MSG_ACK_PROTOCOL_VERSION_NOT_MATCH = 174,
    MSG_ACK_NODE_FOR_BUF_INFO = 175,
    MSG_ACK_CREATE_GLOBAL_XA_RES = 176,
    MSG_ACK_DELETE_GLOBAL_XA_RES = 177,
    MSG_ACK_ASK_XA_OWNER_ID = 178,
    MSG_ACK_END_XA = 179,
    MSG_ACK_XA_IN_USE = 180,
    MSG_ACK_OPENGAUSS_IMMEDIATE_CKPT = 181,
    MSG_ACK_IMCSTORE_DELTA = 182,
    MSG_ACK_END,
    MSG_CMD_CEIL = MSG_ACK_END
} msg_command_t;

#define DMS_CMD_SIZE (MSG_CMD_CEIL - (MSG_ACK_BEGIN - MSG_REQ_END))
#define MSG_REQ_REFORM_TLOCK_TYPE(cmd) ((cmd) == MSG_REQ_TLOCK_REBUILD || (cmd) == MSG_REQ_TLOCK_VALIDATE)

#ifdef __cplusplus
}
#endif

#endif // __DMS_MSG_COMMAND_H__