Commit Graph
801 Commits
Author SHA1 Message Date
Max Brunsfeld 8b914262a6 Start work on implementing ::file on remote WorktreeHandles 2021-06-18 13:32:38 -07:00
Antonio Scandurra 1409e5d9b3 WIP 2021-06-18 19:28:39 +02:00
Antonio Scandurra 06ac0a95a8 Add worktree to workspace when joining a remote worktree 2021-06-18 14:52:38 +02:00
Antonio Scandurra 1cefc76f11 Replace Worktree with an enum
For now this enum only contains a `Local` variant, but the next step is
to add a `Remote` variant that will be constructed when joining a remote
worktree.
2021-06-18 12:07:57 +02:00
Max Brunsfeld c292e916c0 Implement Display for ConnectionId 2021-06-17 20:53:20 -07:00
Max Brunsfeld 0b67637a52 Add a name to EnvelopedMessage for logging purposes 2021-06-17 20:48:26 -07:00
Max Brunsfeld 34230ef1ba Add menu command to join worktree using URL on clipboard
Introduce rpc::Client struct that wraps zed_rpc::Peer
2021-06-17 20:42:36 -07:00
Max Brunsfeld b20681a257 Use strings for paths and buffer contents 2021-06-17 16:25:30 -07:00
Max BrunsfeldandAntonio Scandurra 4d16ebaf4b Replace POST /worktrees rest endpoint with GET /rpc-address
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-06-17 16:11:54 -07:00
Max Brunsfeld 369af450e2 Make TypedEnvelope fields public 2021-06-17 15:54:55 -07:00
Max Brunsfeld 3adee4fb53 Ignore message-handling error in disconnect unit test 2021-06-17 15:20:56 -07:00
Max Brunsfeld 2dd0a2b962 Don't generate bindgen layout tests 2021-06-17 15:20:12 -07:00
Max BrunsfeldandNathan Sobo 6dc1a68ed7 Allow peers to receive individual messages before starting message loop
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-06-17 14:19:15 -07:00
Antonio Scandurra 90c2c561a3 Rename handle_message to on_message 2021-06-17 17:25:10 +02:00
Antonio Scandurra a6ed6b2992 Move handle_messages into an extension method for Arc<Peer> 2021-06-17 16:32:28 +02:00
Antonio Scandurra 8c44ba98e5 Use an i32 for user_id in RPC authentication message 2021-06-17 14:51:06 +02:00
Max Brunsfeld 4047b8ede5 Fix termination of peer's incoming future
* Re-enable peer tests
* Enhance request/response unit test to exercise
  peers interacting with each other end-to-end
2021-06-16 21:18:22 -07:00
Max Brunsfeld 25f2346dea Remove peer message listeners when their receiver is dropped 2021-06-16 17:02:40 -07:00
Antonio ScandurraandNathan Sobo a11c5e35c4 Move RpcClient to zed_rpc and rename it to Peer
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-06-16 18:01:26 +02:00
Antonio ScandurraandNathan Sobo 8eed102467 Replace Request and Message with a single TypedEnvelope
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-06-16 17:43:53 +02:00
Antonio Scandurra 62367b985e Replace callback-based requests/messages with streams 2021-06-16 14:26:54 +02:00
Max Brunsfeld 9657fc2f22 WIP - Allow RpcClient to register handlers for incoming messages 2021-06-15 17:22:48 -07:00
Max BrunsfeldandNathan Sobo 3d1d92b8e4 Remove gpui dependency from rpc_client
Also, avoid any contention between connections.

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-06-15 15:18:40 -07:00
Max Brunsfeld 013b9d2787 Allow RpcClient to encapsulate arbitrarily many connections 2021-06-15 14:12:42 -07:00
Max BrunsfeldandNathan Sobo 0f7b79df73 Flatten protobuf message namespace
* Remove `FromClient`/`FromServer` distinction.
* Remove `subscribe` concept - clients will need to handle
  unprompted messages from the server.

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-06-15 13:06:50 -07:00
Antonio Scandurra c65e11adff Start sharing paths with the server via RPC 2021-06-15 16:14:08 +02:00
Antonio Scandurra d9beb5b977 Simplify saving RpcClient by removing the generic connection param 2021-06-15 15:36:58 +02:00
Antonio Scandurra a77be0fc7e Move worktree sharing down into Workspace
This will make it easier to pick a worktree and give it an `RpcClient`.
2021-06-15 15:14:17 +02:00
Antonio Scandurra 16b35d865c Ensure that futures returns from RpcClient are 'static 2021-06-15 11:15:55 +02:00
Antonio Scandurra 1748aa844e 💄 2021-06-15 11:03:14 +02:00
Antonio Scandurra 9f625c0aee Use an async Mutex to guard access to write stream in RpcClient 2021-06-15 10:57:27 +02:00
Antonio Scandurra d37060cec3 Test RpcClient::subscribe 2021-06-15 10:46:23 +02:00
Max BrunsfeldandAntonio Scandurra 41e1c80f71 Report io errors when sending payloads for RpcClient methods
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-06-14 16:11:24 -07:00
Antonio ScandurraandMax Brunsfeld 03b21ebaf8 Change RpcClient methods to take shared references
This will make it easier to spawn a future on gpui's executors
when calling `RpcClient` methods.

Co-Authored-By: Max Brunsfeld <max@zed.dev>
2021-06-14 19:59:46 +02:00
Antonio ScandurraandMax Brunsfeld 09fc3b3cdb Add RpcClient::subscribe
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2021-06-14 19:06:28 +02:00
Antonio ScandurraandMax Brunsfeld 6db5f5ebf4 Use a fixed-length delimiter for encoding/decoding messages in RPC
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2021-06-14 18:33:34 +02:00
Antonio Scandurra b6f76a8c29 Make drop test more reliable 2021-06-14 17:27:00 +02:00
Antonio Scandurra c193cda042 Close connection when RpcClient is dropped and add unit tests 2021-06-14 14:32:49 +02:00
Max Brunsfeld be47d6ded4 Start work on RpcClient 2021-06-11 14:47:13 -07:00
Max BrunsfeldandAntonio Scandurra d77b3268da Use tiny_http for handling login HTTP request
Our manual HTTP parsing and encoding was not working with Safari.

Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-06-11 10:28:00 -07:00
Max BrunsfeldandAntonio Scandurra e9bcd31ad5 Avoid crash when user denies keychain access
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-06-11 09:47:24 -07:00
Antonio Scandurra f9aa4ab099 Switch CreateWorktreeResponse::worktree_id to be a i32
Apparently all IDs in `sqlx` on the server are represented as i32s.
2021-06-11 16:15:06 +02:00
Max BrunsfeldandAntonio Scandurra 1a5f20809d Start work on connecting to RPC endpoint
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-06-10 22:12:04 -07:00
Max Brunsfeld d6535e0650 Update collaboration doc
Add some diagrams
2021-06-10 14:27:05 -07:00
Max Brunsfeld 99f1d297c7 Add initial messages for setting up a worktree share 2021-06-09 18:14:30 -07:00
Max BrunsfeldandNathan Sobo 2922be13ba Introduce zed_rpc::proto module containing protobuf stream logic
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-06-09 13:19:12 -07:00
Max Brunsfeld 5e9b134626 Store credentials in the keychain on login 2021-06-08 18:08:09 -07:00
Max Brunsfeld 84bbd7f717 Add a platform API for accessing the keychain 2021-06-08 17:44:45 -07:00
Max Brunsfeld 1d0f0e85ed Ensure that base64 token values are URL-safe 2021-06-08 13:58:38 -07:00
Max Brunsfeld 50b5d80870 Introduce zed-rpc with some shared auth utilities 2021-06-08 13:07:06 -07:00