Antonio Scandurra and Nathan Sobo
2352725c58
💄
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-09-23 17:32:37 +02:00
Antonio Scandurra
511cbaa2bd
Version the zrpc protocol using a X-ZRPC-VERSION header
2021-09-23 15:35:35 +02:00
Max Brunsfeld
9352c4e076
Ignore empty ZED_IMPERSONATE env var
2021-09-21 13:29:06 -07:00
Antonio Scandurra
4a723a1fb9
Merge branch 'main' into people-panel
2021-09-21 17:29:07 +02:00
Max Brunsfeld and Nathan Sobo
a068019d94
Add ZED_IMPERSONATE env var, for testing
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-09-20 15:44:28 -07:00
Antonio Scandurra
3d4dbf3140
Maintain collaborators in UserStore
2021-09-20 15:05:41 +02:00
Antonio Scandurra
6f2c8ffb00
Introduce a Client::subscribe method that doesn't need an entity
2021-09-20 14:14:07 +02:00
Nathan Sobo
9a9c8aec3f
Fix deadlock when handling incoming RPC messages
...
We need to drop the lock on the rpc::ClientState when handling an incoming messages in case those message handlers attempt to interact with the client and grab the lock.
2021-09-17 16:12:03 -07:00
Nathan Sobo and Antonio Scandurra
ec7c6f3f91
Always assign credentials on rpc::Client after connecting
...
Co-Authored-By: Antonio Scandurra <me@as-cii.com >
2021-09-15 05:13:05 -06:00
Antonio Scandurra and Nathan Sobo
603f1d820d
Authenticate via the browser if keychain credentials are invalid
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-09-15 11:45:08 +02:00
Nathan Sobo
7e4d5b7d04
Clear cached credentials when establishing a websocket connection with an invalid token
2021-09-14 20:36:03 -06:00
Nathan Sobo and Max Brunsfeld
4a9918979e
WIP: Clear cached credentials if authentication fails
...
Still need to actually handle an HTTP response from the server indicating there was an invalid token.
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com >
2021-09-14 19:19:11 -06:00
Nathan Sobo and Max Brunsfeld
77a4a36eb3
Test that we reuse credentials when reconnecting
...
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com >
2021-09-14 18:30:17 -06:00
Nathan Sobo and Max Brunsfeld
44a457e8b6
Cache credentials in memory separately from connection status
...
This prevents us from re-prompting for keychain access when we retry connections after the connection is lost.
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com >
2021-09-14 18:21:46 -06:00
Nathan Sobo
f0019e3725
WIP
2021-09-14 12:29:56 -06:00
Antonio Scandurra and Max Brunsfeld
201b923248
Don't panic if heartbeat messages can't be sent
...
Co-Authored-By: Max Brunsfeld <max@zed.dev >
2021-09-14 10:56:09 +02:00
Max Brunsfeld
38bfaba135
Add a generic Ack message, use it instead of Pong
...
Remove the `id` field from `Ping`, because it isn't used.
There is already an id on the message envelope.
2021-09-09 11:24:16 -07:00
Antonio Scandurra and Nathan Sobo
d08ec8bd53
Reduce backoff and add some jitter to avoid thundering herd issues
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-09-09 17:00:18 +02:00
Antonio Scandurra and Nathan Sobo
8de18b5a84
Re-join channel when reconnecting
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-09-09 15:34:46 +02:00
Antonio Scandurra
ad7631de9f
Refactor and write a simple unit test to verify reconnection logic
2021-09-09 11:00:43 +02:00
Max Brunsfeld
6baa9fe37b
WIP - Start work on reconnect logic
2021-09-08 18:20:32 -07:00
Max Brunsfeld
edbd424b75
Introduce test-only APIs for configuring how Client reconnects
2021-09-08 18:19:59 -07:00
Max Brunsfeld
b6eac57f63
Introduce a concrete Conn type for peer's websocket connection
...
This is mostly to set us up to test the rpc::Client's reconnect
logic.
There are multiple ways that the `rpc::Client` may establish
its websocket connection: (SSL in production, plain TCP during
local development, and using an in-memory connection for tests).
Now we can represent all of those connections using a common type.
Also, several long methods no longer need to be generic, which
is good for compile time.
2021-09-08 18:14:47 -07:00
Max Brunsfeld
c3e29e0a2d
Finish implementing DeterministicExecutor::advance_clock
...
* Start by running all non-timer futures to completion, to ensure that
timers have a chance to be registered.
* Release executor's state lock before waking any timers
2021-09-08 11:27:30 -07:00
Antonio Scandurra and Max Brunsfeld
900010160f
WIP
...
Co-Authored-By: Max Brunsfeld <max@zed.dev >
2021-09-08 18:58:59 +02:00
Antonio Scandurra
a3bbf71390
🎨
2021-09-08 17:10:48 +02:00
Antonio Scandurra and Nathan Sobo
6c3551bff1
Use watch::Sender::borrow_mut instead of send
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-09-08 17:09:58 +02:00
Antonio Scandurra
af6e931da7
Start on a Client::status method that can be observed
2021-09-08 15:58:16 +02:00
Antonio Scandurra
058691d2b2
Focus chat input editor after signing in
2021-09-07 13:57:30 +02:00
Antonio Scandurra
cb62d53b49
Return errors instead of panicking when interacting with the keychain
...
Closes #134
2021-09-06 10:40:19 +02:00
Max Brunsfeld
d9d52b8aa5
When loggin in, send user id instead of creating a new watch channel
2021-08-24 13:11:37 -07:00
Nathan Sobo and Antonio Scandurra
39ad7f6a60
Make RPC client's current user_id observable
...
Co-Authored-By: Antonio Scandurra <me@as-cii.com >
2021-08-24 08:37:32 -06:00
Nathan Sobo and Antonio Scandurra
9b636fb81e
Add "Zed > Sign" In menu item
...
Co-Authored-By: Antonio Scandurra <me@as-cii.com >
2021-08-24 08:29:36 -06:00
Max Brunsfeld
10868cf0ea
Start work on sending channel messages
2021-08-19 18:04:49 -07:00
Max Brunsfeld
620b988e22
WIP
2021-08-19 13:07:28 -07:00
Max Brunsfeld and Nathan Sobo
86c819757d
Move Arc outside of rpc::Client
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-08-19 12:56:50 -07:00
5338b30c00
Remove remaining instances of router
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
Co-Authored-By: Max Brunsfeld <max@zed.dev >
2021-08-19 19:38:17 +02:00
Antonio Scandurra
d6412fdbde
Delete old Peer implementation and adapt previous code paths
...
This still doesn't compile but should be close.
2021-08-19 15:02:30 +02:00
Nathan Sobo
3f5db7284d
Remove shared_worktrees map from ClientState
...
Each worktree instance now handles its own messages.
2021-08-18 19:16:40 -06:00
Nathan Sobo and Max Brunsfeld
37f24d10ec
Subscribe to worktree messages at the entity level
...
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com >
2021-08-18 19:06:46 -06:00
541f58e12c
Start on subscribing to messages in channel entity instances
...
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com >
Co-Authored-By: Antonio Scandurra <me@as-cii.com >
2021-08-18 11:45:29 -06:00
Max Brunsfeld
ff822c9158
wip
2021-08-06 14:47:18 -07:00
391ad489ff
Rename zed-rpc to zrpc
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
Co-Authored-By: Max Brunsfeld <max@zed.dev >
2021-07-13 18:22:00 +02:00
Antonio Scandurra
ccff27a157
Ignore whitespaces surrounding a shared worktree's URL
2021-07-12 14:16:36 +02:00
Nathan Sobo
4aab70d7fb
Remove authentication at the RPC layer
...
This means we can remove IOHandler and return a simple future that is Send
2021-07-09 21:57:10 -06:00
Nathan Sobo
89ef4d760d
Send an Authorization HTTP header when connecting web sockets
2021-07-09 21:27:33 -06:00
Max Brunsfeld
eeebc761b6
Restructure Peer to handle connections' messages in order
2021-07-09 16:27:34 -07:00
Max Brunsfeld and Nathan Sobo
b2aa961b4f
Allow rpc client to connect to an in-memory stream
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2021-07-08 17:38:54 -07:00
Antonio Scandurra and Max Brunsfeld
7335e70eb7
Use async-tungstenite's built-in TLS connector
...
Co-Authored-By: Max Brunsfeld <max@zed.dev >
2021-07-07 19:55:26 +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