photoncloud-monorepo/chainfire/proto/internal.proto
centra 8f94aee1fa Fix R8: Convert submodule gitlinks to regular directories
- Remove gitlinks (160000 mode) for chainfire, flaredb, iam
- Add workspace contents as regular tracked files
- Update flake.nix to use simple paths instead of builtins.fetchGit

This resolves the nix build failure where submodule directories
appeared empty in the nix store.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 16:51:20 +09:00

93 lines
2.8 KiB
Protocol Buffer

syntax = "proto3";
package chainfire.internal;
// Internal Raft RPC service for node-to-node communication
service RaftService {
// Vote requests a vote from a peer
rpc Vote(VoteRequest) returns (VoteResponse);
// AppendEntries sends log entries to followers
rpc AppendEntries(AppendEntriesRequest) returns (AppendEntriesResponse);
// InstallSnapshot sends a snapshot to a follower
rpc InstallSnapshot(stream InstallSnapshotRequest) returns (InstallSnapshotResponse);
}
message VoteRequest {
// term is the candidate's term
uint64 term = 1;
// candidate_id is the candidate requesting the vote
uint64 candidate_id = 2;
// last_log_index is index of candidate's last log entry
uint64 last_log_index = 3;
// last_log_term is term of candidate's last log entry
uint64 last_log_term = 4;
}
message VoteResponse {
// term is the current term for the voter
uint64 term = 1;
// vote_granted is true if the candidate received the vote
bool vote_granted = 2;
// last_log_id is the voter's last log ID
uint64 last_log_index = 3;
uint64 last_log_term = 4;
}
message AppendEntriesRequest {
// term is the leader's term
uint64 term = 1;
// leader_id is the leader's ID
uint64 leader_id = 2;
// prev_log_index is index of log entry immediately preceding new ones
uint64 prev_log_index = 3;
// prev_log_term is term of prev_log_index entry
uint64 prev_log_term = 4;
// entries are log entries to append
repeated LogEntry entries = 5;
// leader_commit is leader's commit index
uint64 leader_commit = 6;
}
message LogEntry {
// index is the log entry index
uint64 index = 1;
// term is the term when entry was received
uint64 term = 2;
// data is the command data
bytes data = 3;
}
message AppendEntriesResponse {
// term is the current term
uint64 term = 1;
// success is true if follower contained entry matching prevLogIndex
bool success = 2;
// conflict_index is the first conflicting index (for optimization)
uint64 conflict_index = 3;
// conflict_term is the term of the conflicting entry
uint64 conflict_term = 4;
}
message InstallSnapshotRequest {
// term is the leader's term
uint64 term = 1;
// leader_id is the leader's ID
uint64 leader_id = 2;
// last_included_index is the snapshot replaces all entries up through and including this index
uint64 last_included_index = 3;
// last_included_term is term of last_included_index
uint64 last_included_term = 4;
// offset is byte offset where chunk is positioned in the snapshot file
uint64 offset = 5;
// data is raw bytes of the snapshot chunk
bytes data = 6;
// done is true if this is the last chunk
bool done = 7;
}
message InstallSnapshotResponse {
// term is the current term
uint64 term = 1;
}