Nathan Sobo
f81f043058
WIP
2021-07-23 12:25:09 -06:00
Max Brunsfeld
7260442d42
Move the fs module out of worktree
2021-07-13 15:40:11 -07:00
Antonio Scandurra and Nathan Sobo
7ad2071a51
Fix tests that were not aware of Worktree::open_local being async
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-07-13 17:27:40 +02:00
Antonio Scandurra
2ecdc65f38
WIP
2021-07-13 16:36:35 +02:00
Max Brunsfeld and Nathan Sobo
2a90347b82
Store an Fs on Workspace, pass it to each Worktree
...
Push test-only worktree behavior down into the Fs,
via a `watch` method which provides fs events.
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-07-12 17:26:14 -07:00
Antonio Scandurra and Nathan Sobo
59d61d33cb
Allow worktrees to be joined with no open window
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-07-12 17:44:53 +02:00
Max Brunsfeld
eeebc761b6
Restructure Peer to handle connections' messages in order
2021-07-09 16:27:34 -07:00
Antonio Scandurra
f55718cd18
Avoid adding the same entry when concurrently opening it more than once
2021-07-08 14:40:32 +02:00
Antonio Scandurra and Max Brunsfeld
024684e46c
Improve logging when there is an error in the RPC layer
...
Co-Authored-By: Max Brunsfeld <max@zed.dev >
2021-07-07 19:36:53 +02:00
Antonio Scandurra
ee962eab9b
Revert "Start work on handling TLS for the RPC endpoint"
...
This reverts commit 193c704875 .
2021-07-07 15:19:00 +02:00
Max Brunsfeld
193c704875
Start work on handling TLS for the RPC endpoint
2021-07-06 16:27:57 -07:00
Max Brunsfeld and Nathan Sobo
65e4e78cd7
Add unit test for worktree update messages, fix minor issues
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-07-05 17:55:48 -07:00
Nathan Sobo
bbf803d7dc
Store a reference to the LangageRegistry on the Worktree
2021-06-29 20:07:37 -06:00
34963ac80d
Use entry_id on File instead of worktree::Diff to detect when buffers' files change
...
Rather than computing a diff after processing a batch of FSEvents, we instead detect renames as we're inserting entries. We store an entry_id on the File object that is owned by each buffer, and use this to detect when the path of the File has changed.
We now also manage all File-related state and event emission for Buffers in the LocalWorktree, since the logic will need to be totally different in the remote case.
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com >
Co-Authored-By: Antonio Scandurra <me@as-cii.com >
2021-06-29 18:19:38 -06:00
Antonio Scandurra
e80439daaa
Merge branch 'main' into rpc
2021-06-29 10:25:42 +02:00
Nathan Sobo
b7a4393f29
Redesign Worktree save API and make test_rescan_simple pass
...
This commit does too much. The first goal was to change our approach to saving new buffers so that we don't need to construct a File for an entry that doesn't exist. Rather than doing that, we call `Worktree::save_buffer_as` with the buffer handle, the path, and the contents. This then saves the buffer and returns a handle to a `File` that references an entry that actually exists. I needed to do this so that we can store an entry id on `File`.
In the process, I noticed intermittent test failures on `test_rescan_simple`, so I made some changes required to fix those related to our reuse of existing ids. Our previous approach of removing a path when inserting a new entry was broken, because of the recursive nature of `remove_path`. Instead, I simply recycle the id of an existing worktree entry with the same path if one is present, then allow it to be replaced.
2021-06-28 19:05:38 -06:00
Nathan Sobo and Max Brunsfeld
7ee0862b99
Notify host when guests close buffers
...
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com >
2021-06-25 11:33:40 -07:00
Antonio Scandurra
d59267a7ef
Move remote module from workspace to worktree
2021-06-25 12:14:04 +02:00
Max Brunsfeld
ce2f3f664a
Consolidate more logic for joining worktree in Worktree::remote
...
This way we can use this method in tests and avoid
needing to construct a Workspace.
2021-06-23 18:07:09 -07:00
Max Brunsfeld and Nathan Sobo
6a166554e8
Add public method for connecting to RPC server with a given address
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-06-23 18:05:03 -07:00
Antonio Scandurra
f1587fbb6e
Make replica_id optional in OpenWorktreeResponse
2021-06-23 17:32:05 +02:00
Antonio Scandurra
02321af08a
Respond to proto::OpenBuffer requests
2021-06-23 16:20:02 +02:00
Nathan Sobo and Max Brunsfeld
c5e08b6548
Eagerly update worktree entries when saving
...
Don't use ModelHandles for storing Files.
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com >
2021-06-22 17:53:35 -07:00
Max Brunsfeld
dc8e216fcb
WIP - Maintain a set of open buffers on a LocalWorktree
2021-06-22 12:29:58 -07:00
Nathan Sobo and Max Brunsfeld
a364839e93
Replace FileHandle with File entity that subscribes to Worktree update events
...
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com >
2021-06-21 20:40:40 -06:00
Antonio Scandurra
7489e86c47
Fix deadlock when comparing FileHandles when handles are the same
2021-06-21 16:18:18 +02:00
Antonio Scandurra
2905ce3ba7
WIP: Load remote history
2021-06-21 12:15:58 +02:00
Antonio Scandurra
f4d6fbe14f
Issue only one OpenFile and CloseFile request per handle
2021-06-21 12:04:38 +02:00
Max Brunsfeld
96c118b4df
Stub in more logic for open_file and close_file
2021-06-20 22:36:01 -07:00
Nathan Sobo and Max Brunsfeld
0deaa3a61d
WIP
...
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com >
2021-06-18 17:26:12 -06:00
Max Brunsfeld
a2a6d67e1e
Start work on implementing ::file on remote WorktreeHandles
2021-06-18 13:32:38 -07:00
Antonio Scandurra
f9d8e952f2
WIP
2021-06-18 19:28:39 +02:00
Antonio Scandurra
89d25458ac
Add worktree to workspace when joining a remote worktree
2021-06-18 14:52:38 +02:00
Antonio Scandurra
79cac1340e
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
7a88e44264
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 and Antonio Scandurra
f4dccc5353
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
2fd0f0be50
Make TypedEnvelope fields public
2021-06-17 15:54:55 -07:00
Max Brunsfeld and Nathan Sobo
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
Antonio Scandurra and Nathan Sobo
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 and Nathan Sobo
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 and Nathan Sobo
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 and Nathan Sobo
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
Antonio Scandurra
546ce14cb9
Start sharing paths with the server via RPC
2021-06-15 16:14:08 +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