d-engine-proto 0.2.4

gRPC protocol definitions - for building non-Rust d-engine clients
Documentation
syntax = "proto3";
package d_engine.server.replication;

import "proto/common.proto";

option go_package = "github.com/deventlab/d-engine/proto/server/replication";

message AppendEntriesRequest {
  uint64 term = 1;
  uint32 leader_id = 2;
  uint64 prev_log_index = 3;
  uint64 prev_log_term = 4;
  repeated d_engine.common.Entry entries = 5;
  uint64 leader_commit_index = 6;
}

message AppendEntriesResponse {
  uint32 node_id = 1;
  uint64 term = 2;
  oneof result {
    SuccessResult success = 3;
    ConflictResult conflict = 4;
    uint64 higher_term = 5;
  }
}

message SuccessResult {
  d_engine.common.LogId last_match = 1;
}

message ConflictResult {
  optional uint64 conflict_term = 1;
  optional uint64 conflict_index = 2;
}

service RaftReplicationService {
  rpc AppendEntries(AppendEntriesRequest) returns (AppendEntriesResponse);

  // Persistent bidirectional stream per peer; eliminates per-batch h2 stream open/close overhead.
  rpc StreamAppendEntries(stream AppendEntriesRequest) returns (stream AppendEntriesResponse);
}