//
// Licensed to the Apache Software Foundation (ASF) under one or more
// 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.
//

syntax = "proto3";

option java_multiple_files = true;
option java_package = "org.apache.servicecomb.pack.contract.grpc";
option java_outer_classname = "TxEventProto";

import "GrpcCommon.proto";

service TxEventService {
  rpc OnConnected (stream GrpcServiceConfig) returns (stream GrpcCompensateCommand) {
  }
  rpc OnTxEvent (GrpcTxEvent) returns (GrpcAck) {}
  rpc OnDisconnected (GrpcServiceConfig) returns (GrpcAck) {
  }
  rpc onGetServerMeta(GrpcServiceConfig) returns (ServerMeta) {}
}

message GrpcTxEvent {
  int64 timestamp = 1;
  string globalTxId = 2;
  string localTxId = 3;
  string parentTxId = 4;
  string type = 5;
  string compensationMethod = 6;
  bytes payloads = 7;
  string serviceName = 8;
  string instanceId = 9;
  int32 timeout = 10;
  int32 forwardTimeout = 11;
  int32 forwardRetries = 12;
  int32 reverseRetries = 13;
  int32 reverseTimeout = 14;
  int32 retryDelayInMilliseconds = 15;
  string retryMethod = 16;
}

message GrpcCompensateCommand {
  string globalTxId = 1;
  string localTxId = 2;
  string parentTxId = 3;
  string compensationMethod = 4;
  bytes payloads = 5;
}

