Add initial messages for setting up a worktree share

This commit is contained in:
Max Brunsfeld 2021-06-09 18:14:30 -07:00
parent a10f4bb4ff
commit 9c5c9fdc36
2 changed files with 46 additions and 5 deletions

View file

@ -6,22 +6,52 @@ message FromClient {
oneof variant { oneof variant {
Auth auth = 2; Auth auth = 2;
NewWorktree new_worktree = 3;
ShareWorktree share_worktree = 4;
UploadFile upload_file = 5;
} }
message Auth { message Auth {
int32 user_id = 1; int32 user_id = 1;
string access_token = 2; string access_token = 2;
} }
message NewWorktree {}
message ShareWorktree {
uint64 worktree_id = 1;
repeated PathAndDigest files = 2;
}
message PathAndDigest {
bytes path = 1;
bytes digest = 2;
}
message UploadFile {
bytes path = 1;
bytes content = 2;
}
} }
message FromServer { message FromServer {
optional int32 request_id = 1; optional int32 request_id = 1;
oneof variant { oneof variant {
Ack ack = 2; AuthResponse auth_response = 2;
NewWorktreeResponse new_worktree_response = 3;
ShareWorktreeResponse share_worktree_response = 4;
} }
message Ack { message AuthResponse {
optional string error_message = 1; bool credentials_valid = 1;
}
message NewWorktreeResponse {
uint64 worktree_id = 1;
}
message ShareWorktreeResponse {
repeated int32 needed_file_indices = 1;
} }
} }

View file

@ -5,14 +5,25 @@ use std::io;
include!(concat!(env!("OUT_DIR"), "/zed.messages.rs")); include!(concat!(env!("OUT_DIR"), "/zed.messages.rs"));
use from_client as client;
use from_server as server;
pub trait Request { pub trait Request {
type Response; type Response;
} }
impl Request for from_client::Auth { macro_rules! request_response {
type Response = from_server::Ack; ($req:path, $resp:path) => {
impl Request for $req {
type Response = $resp;
}
};
} }
request_response!(client::Auth, server::AuthResponse);
request_response!(client::NewWorktree, server::NewWorktreeResponse);
request_response!(client::ShareWorktree, server::ShareWorktreeResponse);
/// A stream of protobuf messages. /// A stream of protobuf messages.
pub struct MessageStream<T> { pub struct MessageStream<T> {
byte_stream: T, byte_stream: T,