/**
 * Copyright © 2016-2023 The Thingsboard Authors
 *
 * Licensed 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.
 */
syntax = "proto3";
package msgqueue;

option java_package = "org.thingsboard.server.common.msg.gen";
option java_outer_classname = "MsgProtos";

// Stores message metadata as map of strings
message TbMsgMetaDataProto {
    map<string, string> data = 1;
}

// Stores stack of nested (caller) rule chains
message TbMsgProcessingStackItemProto {
    int64 ruleChainIdMSB = 1;
    int64 ruleChainIdLSB = 2;
    int64 ruleNodeIdMSB = 3;
    int64 ruleNodeIdLSB = 4;
}

message TbMsgProcessingCtxProto {
    int32 ruleNodeExecCounter = 1;
    repeated TbMsgProcessingStackItemProto stack = 2;
}

message TbMsgProto {
    string id = 1;
    string type = 2;
    string entityType = 3;
    int64 entityIdMSB = 4;
    int64 entityIdLSB = 5;

    int64 ruleChainIdMSB = 6;
    int64 ruleChainIdLSB = 7;

    int64 ruleNodeIdMSB = 8;
    int64 ruleNodeIdLSB = 9;
    int64 clusterPartition = 10;

    TbMsgMetaDataProto metaData = 11;

    // Transaction Data (12) was removed in 2.5

    int32 dataType = 13;
    string data = 14;

    int64 ts = 15;
    // Will be removed in 3.4. Moved to processing context
    int32 ruleNodeExecCounter = 16;

    int64 customerIdMSB = 17;
    int64 customerIdLSB = 18;

    TbMsgProcessingCtxProto ctx = 19;
}