Commit graph

955 commits

Author SHA1 Message Date
Max Brunsfeld
05a662b35e 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
4d28d03e3f Rename handle_message to on_message 2021-06-17 17:25:10 +02:00
Antonio Scandurra
82ac7e2072 Move handle_messages into an extension method for Arc<Peer> 2021-06-17 16:32:28 +02:00
Antonio Scandurra
d243395e06 Use an i32 for user_id in RPC authentication message 2021-06-17 14:51:06 +02:00
Max Brunsfeld
c5cec247c4 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
fb736d5e78 Remove peer message listeners when their receiver is dropped 2021-06-16 17:02:40 -07:00
Antonio Scandurra
9de4d73ffb 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 Scandurra
5e4872fdf8 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
8112efd522 Replace callback-based requests/messages with streams 2021-06-16 14:26:54 +02:00
Max Brunsfeld
8b66e0aa7e WIP - Allow RpcClient to register handlers for incoming messages 2021-06-15 17:22:48 -07:00
Max Brunsfeld
d3a3ad2820 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
3db215418c Allow RpcClient to encapsulate arbitrarily many connections 2021-06-15 14:12:42 -07:00
Max Brunsfeld
e88f33851e 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
Max Brunsfeld
38891070e7
Merge pull request #91 from zed-industries/fix-save
Ensure all bytes are written when saving a buffer
2021-06-15 09:19:07 -07:00
Antonio Scandurra
37cc1e8e83 Ensure all bytes are written when saving a buffer 2021-06-15 17:20:36 +02:00
Antonio Scandurra
546ce14cb9 Start sharing paths with the server via RPC 2021-06-15 16:14:08 +02:00
Antonio Scandurra
cf67fc6589 Simplify saving RpcClient by removing the generic connection param 2021-06-15 15:36:58 +02:00
Antonio Scandurra
3e391c0785 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
7b96888ab1 Ensure that futures returns from RpcClient are 'static 2021-06-15 11:15:55 +02:00
Antonio Scandurra
04bf84af44 💄 2021-06-15 11:03:14 +02:00
Antonio Scandurra
1d9cfe6b64 Use an async Mutex to guard access to write stream in RpcClient 2021-06-15 10:57:27 +02:00
Antonio Scandurra
301531ae04 Test RpcClient::subscribe 2021-06-15 10:46:23 +02:00
Max Brunsfeld
1c597ed998 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 Scandurra
a87d4db155 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 Scandurra
e551894189 Add RpcClient::subscribe
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2021-06-14 19:06:28 +02:00
Antonio Scandurra
cd1a4c49cf 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
0ddbe0c757 Make drop test more reliable 2021-06-14 17:27:00 +02:00
Antonio Scandurra
8e3f40bfdd Close connection when RpcClient is dropped and add unit tests 2021-06-14 14:32:49 +02:00
Max Brunsfeld
b2b1ce5e81 Start work on RpcClient 2021-06-11 14:47:13 -07:00
Max Brunsfeld
86ff599285 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 Brunsfeld
71d64a837e 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
4efebdaa52 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
Antonio Scandurra
ba29b1d96d
Merge pull request #88 from zed-industries/seek-start
Introduce `Cursor::seek_start` and `Cursor::seek_end`
2021-06-11 09:03:35 +02:00
Antonio Scandurra
bd0a807ff6
Merge pull request #84 from zed-industries/new-workspace
Open a new workspace on File > New if none exists
2021-06-11 09:02:43 +02:00
Max Brunsfeld
20542f54ef 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
e897d1c98e Update collaboration doc
Add some diagrams
2021-06-10 14:27:05 -07:00
Antonio Scandurra
742241a903 Rename Cursor::{start,end} to Cursor::{sum_start,sum_end} 2021-06-10 14:06:27 +02:00
Antonio Scandurra
dc2805bb14 Add Cursor::seek_end and audit the codebase to use seek_start more 2021-06-10 14:05:56 +02:00
Antonio Scandurra
f294bfdbd9 Introduce Cursor::seek_start to compute VersionedOffset once 2021-06-10 13:42:43 +02:00
Max Brunsfeld
9c5c9fdc36 Add initial messages for setting up a worktree share 2021-06-09 18:14:30 -07:00
Nathan Sobo
66c76d5469 Test creating a new empty workspace and fix test compile errors 2021-06-09 16:38:32 -06:00
Nathan Sobo
b5cb41c7f0 Open a new workspace on File > New if none exists 2021-06-09 15:34:45 -06:00
Max Brunsfeld
a10f4bb4ff 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
Antonio Scandurra
71f50ce361 Restore random edits in test to 5 2021-06-09 20:51:14 +02:00
Antonio Scandurra
de803a6cfc
Merge pull request #82 from zed-industries/faster-undo
Batch undo
2021-06-09 12:08:20 +02:00
Max Brunsfeld
ee52a5d061 Store credentials in the keychain on login 2021-06-08 18:08:09 -07:00
Max Brunsfeld
5673f116c9 Add a platform API for accessing the keychain 2021-06-08 17:44:45 -07:00
Max Brunsfeld
3214fef727 Ensure that base64 token values are URL-safe 2021-06-08 13:58:38 -07:00
Max Brunsfeld
327c20510b Introduce zed-rpc with some shared auth utilities 2021-06-08 13:07:06 -07:00
Antonio Scandurra
072a57580d Delete leftover test 2021-06-08 11:55:17 +02:00