codemp/proto/buffer.proto

76 lines
1.5 KiB
Protocol Buffer
Raw Normal View History

syntax = "proto3";
2023-08-16 17:08:31 +02:00
package buffer;
import "proto/user.proto";
// handle buffer changes, keep in sync users
service Buffer {
// attach to a buffer and receive operations
rpc Attach (BufferPayload) returns (stream RawOp);
// send an operation for a specific buffer
2023-08-16 17:08:31 +02:00
rpc Edit (OperationRequest) returns (BufferEditResponse);
// create a new buffer
2023-08-16 17:08:31 +02:00
rpc Create (BufferPayload) returns (BufferCreateResponse);
// get contents of buffer
2023-04-11 22:35:10 +02:00
rpc Sync (BufferPayload) returns (BufferResponse);
}
message BufferView {
int32 id = 1;
BufferMetadata metadata = 2;
}
message BufferMetadata {
string name = 2;
string path = 3;
uint64 created = 4; // unix timestamp
repeated user.UserIdentity attached_users = 5;
}
// empty request
2023-08-16 17:08:31 +02:00
message BufferCreateResponse {}
// empty request
2023-08-16 17:08:31 +02:00
message BufferEditResponse {}
// raw wire operation sequence event
message RawOp {
// operation seq serialized to json
string opseq = 1;
// user id that has executed the operation
string user = 2;
2023-04-12 03:29:42 +02:00
}
// client buffer operation request
message OperationRequest {
// buffer path to operate onto
string path = 1;
// buffer hash of source state
string hash = 2;
// raw operation sequence
RawOp op = 3;
}
// generic buffer operation request
message BufferPayload {
// buffer path to operate onto
string path = 1;
// user id that is requesting the operation
string user = 2;
// optional buffer full content for replacing
optional string content = 3;
}
// response from server with buffer content
message BufferResponse {
// current buffer content
string content = 1;
}