mirror of
https://github.com/hexedtech/codemp.git
synced 2024-11-22 15:24:48 +01:00
features: create buffers from workspaces, list buffers and users
This commit is contained in:
parent
f687fcb1ad
commit
18290d768c
1 changed files with 158 additions and 0 deletions
158
proto/workspace.proto
Normal file
158
proto/workspace.proto
Normal file
|
@ -0,0 +1,158 @@
|
||||||
|
// Workspace effimero: sta in /tmp o proprio in memoria
|
||||||
|
// Workspace e` autenticato: come si decide mentre si rifa il server
|
||||||
|
// Workspace ha id univoco (stringa), usato per connettercisi
|
||||||
|
// Workspace implementera` access control:
|
||||||
|
// * accedere al workspace
|
||||||
|
// * i singoli buffer
|
||||||
|
// - i metadati maybe????
|
||||||
|
// Workspace offre le seguenti features:
|
||||||
|
// * listare i buffer DONE
|
||||||
|
// * listare gli user connessi DONE
|
||||||
|
// * creare buffers DONE REPLACE THE ONE ON buffer.proto
|
||||||
|
// * NO ATTACH: responsabilita` del buffer service
|
||||||
|
// * contiene metadata dei buffers:
|
||||||
|
// * path
|
||||||
|
// * data creazione
|
||||||
|
// Buffer id NON E` il path DONE
|
||||||
|
// BufferService NON ha metadata:
|
||||||
|
// Workspace tiene traccia di utenti attached (nel futuro) DONE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package workspace;
|
||||||
|
import "proto/user.proto";
|
||||||
|
import "proto/buffer.proto";
|
||||||
|
|
||||||
|
message Empty {}
|
||||||
|
|
||||||
|
message WorkspaceEvent {
|
||||||
|
oneof event {
|
||||||
|
CursorEvent cursor = 1;
|
||||||
|
FileEvent file = 2;
|
||||||
|
UserEvent user = 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message WorkspaceFileTree {
|
||||||
|
// list of strings may be more efficient but it's a lot more hassle
|
||||||
|
string payload = 1; // spappolata di json
|
||||||
|
}
|
||||||
|
|
||||||
|
message WorkspaceUserList {
|
||||||
|
repeated user.UserIdentity user = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message WorkspaceMessage {
|
||||||
|
int32 id = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message TreeRequest {} // empty
|
||||||
|
message UserRequest {}
|
||||||
|
message CursorResponse{}
|
||||||
|
message UserListRequest{}
|
||||||
|
|
||||||
|
service Workspace {
|
||||||
|
|
||||||
|
//
|
||||||
|
rpc Create (BufferPayload) returns (BufferCreateResponse);
|
||||||
|
|
||||||
|
rpc ListBuffers (BufferListRequest) returns (BufferList);
|
||||||
|
|
||||||
|
rpc ListUsers (UserListRequest) returns (UserList);
|
||||||
|
|
||||||
|
//
|
||||||
|
rpc Join (user.UserIdentity) returns (stream WorkspaceEvent);
|
||||||
|
|
||||||
|
//
|
||||||
|
rpc Tree (TreeRequest) returns (WorkspaceFileTree);
|
||||||
|
|
||||||
|
//
|
||||||
|
rpc Users (UserRequest) returns (WorkspaceUserList); // TODO could be handled by cursor service
|
||||||
|
|
||||||
|
// send cursor movement to server
|
||||||
|
rpc Cursor (CursorEvent) returns (CursorResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
// a tuple indicating row and column
|
||||||
|
message RowCol {
|
||||||
|
int32 row = 1;
|
||||||
|
int32 col = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cursor position object
|
||||||
|
message CursorPosition {
|
||||||
|
// cursor start position
|
||||||
|
RowCol start = 1;
|
||||||
|
// cursor end position
|
||||||
|
RowCol end = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cursor event, with user id and cursor position
|
||||||
|
message CursorEvent {
|
||||||
|
// user moving the cursor
|
||||||
|
string user = 1;
|
||||||
|
// path of current buffer this cursor is into
|
||||||
|
string buffer = 2;
|
||||||
|
// new cursor position
|
||||||
|
repeated CursorPosition position = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum FileEventType {
|
||||||
|
CREATE = 0;
|
||||||
|
DELETE = 1;
|
||||||
|
RENAME = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message FileEvent {
|
||||||
|
string buffer = 1;
|
||||||
|
|
||||||
|
FileEventType type = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum UserEventType {
|
||||||
|
JOIN = 0;
|
||||||
|
LEAVE = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message UserEvent {
|
||||||
|
user.UserIdentity user = 1;
|
||||||
|
|
||||||
|
UserEventType type = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
message BufferPayload {
|
||||||
|
// buffer path to operate onto
|
||||||
|
string path = 1;
|
||||||
|
|
||||||
|
// user id that is requesting the operation
|
||||||
|
user.UserIdentity user = 2;
|
||||||
|
|
||||||
|
// optional buffer full content for replacing
|
||||||
|
optional string content = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message BufferCreateResponse {
|
||||||
|
|
||||||
|
string status = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message BufferListRequest{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
message BufferList{
|
||||||
|
repeated buffer.BufferView buffers = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message UserList{
|
||||||
|
repeated user.UserIdentity users = 1;
|
||||||
|
}
|
Loading…
Reference in a new issue