#!/usr/local/bin/python3

# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
message_types = {
    -2: "NOT_PUBLIC_API_WITH_TIMEOUT",
    -1: "INVALID",
    0: "REQUEST",
    1: "RESPONSE",
    2: "EXCEPTION",
    3: "REQUEST_DATA_ERROR",
    4: "DATA_NOT_FOUND_ERROR",
    5: "PING",
    6: "REPLY",
    7: "PUT",
    8: "PUT_DATA_ERROR",
    9: "DESTROY",
    10: "DESTROY_DATA_ERROR",
    11: "DESTROY_REGION",
    12: "DESTROY_REGION_DATA_ERROR",
    13: "CLIENT_NOTIFICATION",
    14: "UPDATE_CLIENT_NOTIFICATION",
    15: "LOCAL_INVALIDATE",
    16: "LOCAL_DESTROY",
    17: "LOCAL_DESTROY_REGION",
    18: "CLOSE_CONNECTION",
    19: "PROCESS_BATCH",
    20: "REGISTER_INTEREST",
    21: "REGISTER_INTEREST_DATA_ERROR",
    22: "UNREGISTER_INTEREST",
    23: "UNREGISTER_INTEREST_DATA_ERROR",
    24: "REGISTER_INTEREST_LIST",
    25: "UNREGISTER_INTEREST_LIST",
    26: "UNKNOWN_MESSAGE_TYPE_ERROR",
    27: "LOCAL_CREATE",
    28: "LOCAL_UPDATE",
    29: "CREATE_REGION",
    30: "CREATE_REGION_DATA_ERROR",
    31: "MAKE_PRIMARY",
    32: "RESPONSE_FROM_PRIMARY",
    33: "RESPONSE_FROM_SECONDARY",
    34: "QUERY",
    35: "QUERY_DATA_ERROR",
    36: "CLEAR_REGION",
    37: "CLEAR_REGION_DATA_ERROR",
    38: "CONTAINS_KEY",
    39: "CONTAINS_KEY_DATA_ERROR",
    40: "KEY_SET",
    41: "KEY_SET_DATA_ERROR",
    42: "EXECUTECQ_MSG_TYPE",
    43: "EXECUTECQ_WITH_IR_MSG_TYPE",
    44: "STOPCQ_MSG_TYPE",
    45: "CLOSECQ_MSG_TYPE",
    46: "CLOSECLIENTCQS_MSG_TYPE",
    47: "CQDATAERROR_MSG_TYPE",
    48: "GETCQSTATS_MSG_TYPE",
    49: "MONITORCQ_MSG_TYPE",
    50: "CQ_EXCEPTION_TYPE",
    51: "REGISTER_INSTANTIATORS",
    52: "PERIODIC_ACK",
    53: "CLIENT_READY",
    54: "CLIENT_MARKER",
    55: "INVALIDATE_REGION",
    56: "PUTALL",
    58: "GET_ALL_DATA_ERROR",
    59: "EXECUTE_REGION_FUNCTION",
    60: "EXECUTE_REGION_FUNCTION_RESULT",
    61: "EXECUTE_REGION_FUNCTION_ERROR",
    62: "EXECUTE_FUNCTION",
    63: "EXECUTE_FUNCTION_RESULT",
    64: "EXECUTE_FUNCTION_ERROR",
    65: "CLIENT_REGISTER_INTEREST",
    66: "CLIENT_UNREGISTER_INTEREST",
    67: "REGISTER_DATASERIALIZERS",
    68: "REQUEST_EVENT_VALUE",
    69: "REQUEST_EVENT_VALUE_ERROR",
    70: "PUT_DELTA_ERROR",
    71: "GET_CLIENT_PR_METADATA",
    72: "RESPONSE_CLIENT_PR_METADATA",
    73: "GET_CLIENT_PARTITION_ATTRIBUTES",
    74: "RESPONSE_CLIENT_PARTITION_ATTRIBUTES",
    75: "GET_CLIENT_PR_METADATA_ERROR",
    76: "GET_CLIENT_PARTITION_ATTRIBUTES_ERROR",
    77: "USER_CREDENTIAL_MESSAGE",
    78: "REMOVE_USER_AUTH",
    79: "EXECUTE_REGION_FUNCTION_SINGLE_HOP",
    80: "QUERY_WITH_PARAMETERS",
    81: "SIZE",
    82: "SIZE_ERROR",
    83: "INVALIDATE",
    84: "INVALIDATE_ERROR",
    85: "COMMIT",
    86: "COMMIT_ERROR",
    87: "ROLLBACK",
    88: "TX_FAILOVER",
    89: "GET_ENTRY",
    90: "TX_SYNCHRONIZATION",
    91: "GET_FUNCTION_ATTRIBUTES",
    92: "GET_PDX_TYPE_BY_ID",
    93: "GET_PDX_ID_FOR_TYPE",
    94: "ADD_PDX_TYPE",
    96: "ADD_PDX_ENUM",
    97: "GET_PDX_ID_FOR_ENUM",
    98: "GET_PDX_ENUM_BY_ID",
    99: "SERVER_TO_CLIENT_PING",
    100: "GET_ALL_70",
    103: "TOMBSTONE_OPERATION",
    105: "GETDURABLECQS_MSG_TYPE",
    106: "GET_DURABLE_CQS_DATA_ERROR",
    107: "GET_ALL_WITH_CALLBACK",
    108: "PUT_ALL_WITH_CALLBACK",
    109: "REMOVE_ALL",
}
