syntax = "proto3"; package workspace; service Workspace { rpc Join (JoinRequest) returns (stream WorkspaceEvent); rpc Subscribe (stream CursorUpdate) returns (stream CursorUpdate); rpc ListUsers (WorkspaceRequest) returns (UsersList); rpc Buffers (WorkspaceRequest) returns (BufferList); rpc NewBuffer (BufferRequest) returns (WorkspaceResponse); rpc RemoveBuffer (BufferRequest) returns (WorkspaceResponse); } message JoinRequest { string name = 1; } message WorkspaceEvent { int32 id = 1; optional string body = 2; } // nvim-rs passes everything as i64, so having them as i64 in the packet itself is convenient // TODO can we make them i32 and save some space? message CursorUpdate { string username = 1; int64 buffer = 2; int64 col = 3; int64 row = 4; } message WorkspaceRequest { string sessionKey = 1; } message BufferRequest { string sessionKey = 1; string path = 2; } message WorkspaceResponse { bool accepted = 1; } message BufferList { repeated string path = 1; } message UsersList { repeated string name = 1; }