Commit graph

213 commits

Author SHA1 Message Date
kernel-sanders 8f7590dbc0
Merge branch 'main' into cli-ensure-code-tunnel-service-remains-headless-on-windows 2023-08-02 10:57:13 -04:00
Connor Peet 660d22c3ef
cli: automatically use file storage if storage in keychain fails (#189336)
Fixes #187380
2023-07-31 10:56:08 -07:00
Andrea Mah b448b21744
update license for OSS Tool (#188988)
* fixes to license and auto-generated thirdPartyNotices
2023-07-27 08:41:35 -07:00
Connor Peet 5a14d85f48
cli: adding forwarding for local port for remote tunnels (#188715)
This reuses a lot of the logic we use for the normal VS Code Server
tunnel to do port forwarding. It does use a _different_ tunnel than what
Remote Tunnels would otherwise use for the control server. The reason
for this is that ports exist on a tunnel instance, and if we reused the
same tunnel then a client would expect all CLI hosts to serve all
tunnels, where the port forwarding instance would not provide the VS
Code server. It also reuses the singleton logic so all ports on a
machine are handled by a single CLI instance for the same reason: we
can't have different instances hosting subsets of
ports on a single tunnel.

Currently all ports are under the default privacy: support for
public/private tunnels is either later today or next iteration.
2023-07-24 15:12:21 -07:00
Connor Peet c7195cef9b
cli: recycle tunnels more correctly (#188522)
Previously we only tried to recycle a tunnel once, so if the tunnel
limit changed and was reduced by >1 we'd fail even though we should
have actually just recycled multiple tunnels.

Also, only trigger recycling if the specific tunnel limit is hit.
2023-07-21 11:13:58 -07:00
Connor Peet b5038f81d1
cli: allow exec server to listen on a port and require token authentication (#188434)
* cli: allow exec server to listen on a port and require token authentication

For remote ssh on Windows where pipe forwarding doesn't work

* fix linux build
2023-07-21 18:32:20 +02:00
Connor Peet 3e0786633b
cli: allow exec server to listen on socket (#188123)
* cli: allow exec server to listen on socket

For remote ssh

* fix lint
2023-07-18 09:19:44 -07:00
Connor Peet bafd442c4e
cli: improve code tunnel with existing tunnels (#188091)
- Apply the name/tunnel-name from the CLI to automatically
	(do a normal tag sync). Previously the CLI could host tunnels that
	were unusable unless the consumer did the tag setup, which they
	should not.
- Allow "tunnel ID" to be specified in the new `<id>.<cluster>` format
  that devtunnels has adopted.
2023-07-17 10:56:27 -07:00
Connor Peet 12340da1f1
cli: allow installation as a service from the UI (#187869)
- When turning on remote tunnel access, a quickpick is now shown asking
  users whether it should be installed as a service or just run in
	the session.
- Picking the service install will install the tunnel as a service on
  the machine, and start it.
- Turning off remote tunnel access will uninstall the service only if
  we were the ones to install it.
- This involved some refactoring to add extra state to the RemoteTunnelService.
  There's now a "mode" that includes the previous "session" and reflects
	the desired end state.
- I also did a cleanup with a `StreamSplitter` to ensure output of the
  CLI gets read line-by-line. This was depended upon by the remote tunnel
	service code, but it's not actually guaranteed.
- Changes in the CLI: allow setting the tunnel name while installing the
  service, and make both service un/installation and renames idempotent.

Closes https://github.com/microsoft/vscode/issues/184663
2023-07-13 20:23:15 -07:00
Connor Peet 7bd35446a5
cli: fix windows service-mode not working (#187883)
It seems like we need to run the server (a batch file) with cmd explicitly when the server itself is not run from a command prompt.
2023-07-13 18:04:19 -07:00
Zuo Zongyuan b0620485c2
Fix: Remote tunnel service running on VM with XGETBV disabled exit with SIGILL when being connected (#187345)
fix: update cpufeatures from v0.2.5 to v0.2.8 (#187343)
2023-07-10 14:58:32 +00:00
Connor Peet 30fde0d369
fix: stall on "starting new singleton" on linux if keychain blocks (#187182)
Adds a 5s timeout to keychain access on Linux. We had an issue about this a long time ago, but I never repro'd it until today and can't find the original...

If this timeout is hit, it'll fall back to the file-based keychain.
2023-07-06 23:49:31 +02:00
Connor Peet 0207c66c87
ports: support resolver tunnel factories on the web (#186937)
@alexr00 I just copied the non-Node.js-specific code into the base port
class and things seem to work. What do you think?

Fixes https://github.com/microsoft/vscode-remote-release/issues/8595
2023-07-04 12:11:09 +02:00
Raymond Zhao 300617543f
chore: bump semver and openssl (#186949) 2023-07-03 19:48:04 -07:00
kernel-sanders fd89ea0423
fix: spawn code_serer with CREATE_NO_WINDOW
fixes #184058
2023-06-28 19:13:34 -04:00
Connor Peet d0d97015b0
cli: publish availability of wsl on tunnel tags (#186016)
I plan to use this in the explorer to add a 'connect to wsl' button on relevant tunnels
2023-06-23 12:12:18 -07:00
Taiyo Sogawa ea97852a3b
Add server message to user-facing error on 429 for tunnel creation (#185600)
* Add server message to user-facing error on 429 for tunnel creation

* Update cli/src/tunnels/dev_tunnels.rs

Co-authored-by: Connor Peet <connor@peet.io>

* fix lint error

---------

Co-authored-by: Connor Peet <connor@peet.io>
2023-06-19 13:16:29 -07:00
Connor Peet 2f867fa7a1
cli: fix macos build (#185401) 2023-06-17 09:38:58 +09:00
Connor Peet 8a006c7114
cli: improve dbus error messaging on linux
Fixes https://github.com/microsoft/vscode-remote-release/issues/7778
2023-06-16 14:45:26 -07:00
Connor Peet 95e90d22ec
cli: log startup and shutdown, don't clear service logs on restart
Fixes #183696
2023-06-16 12:40:43 -07:00
Connor Peet 8a74ad8ff5
cli: show service status in tunnel log
Fixes #183714
2023-06-16 10:42:13 -07:00
Connor Peet 382cdece5c
cli: bump enumflags2 for dependabot (#185181) 2023-06-15 08:29:27 +02:00
Connor Peet 13b1b90a83
tunnel: fix keyring panic on Linux (#185066)
tunnel: fix keyring panic on Linxu

Fixes #184792

Reported on https://github.com/hwchen/keyring-rs/issues/132
2023-06-14 23:34:03 +09:00
Connor Peet 6f568d087d
cli: ensure code tunnel service is headless on windows (#184621)
Fixes #184058
2023-06-08 10:50:44 -07:00
Connor Peet e686621e2e
cli: avoid running prepare a second time in ci (#184558) 2023-06-08 02:22:44 +02:00
Connor Peet 75c2f321b2
cli: update dependencies (#184189)
Up all the dependencies! Notably:

- russh to the latest main now that tunnel changes are merged
- secret-service-rs to 3.x and dropping our custom fork
- which also fixes SDL pings

Fixes https://github.com/microsoft/vscode-internalbacklog/issues/4328
Fixes https://github.com/microsoft/vscode-internalbacklog/issues/4077
2023-06-02 10:27:47 -07:00
Connor Peet 62c33b3ca2
cli: fix connection default being applied (#183827) 2023-05-30 20:44:42 +02:00
Connor Peet 69278e5326
cli: improve output for code tunnel status (#183571)
* testing: allow invalidateTestResults to take an array

* cli: improve output for code tunnel status

Fixes #183570
2023-05-26 13:36:04 -07:00
Connor Peet 1942c0eccc
cli: ensure ordering of rpc server messages (#183558)
* cli: ensure ordering of rpc server messages

Sending lots of messages to a stream would block them around the async
tokio mutex, which is "fair" so doesn't preserve ordering. Instead, use
the write_loop approach I introduced to the server_multiplexer for the
same reason some time ago.

* fix clippy
2023-05-26 18:48:06 +02:00
Connor Peet 8242d20803
fixes for wsl hosting (#183491) 2023-05-26 08:47:56 +02:00
Connor Peet 679bb967c3
cli: add stdio control server
* signing: implement signing service on the web

* wip

* cli: implement stdio service

This is used to implement the exec server for WSL. Guarded behind a signed handshake.

* update distro

* rm debug

* address pr comments
2023-05-19 17:19:52 +02:00
Connor Peet d3d9f86116
cli: store cli in user data dir, separate per quality (#182102)
* cli: store cli in user data dir, separate per quality

Fixes #181017

On first run, the `~/.vscode-cli` will be migrated inside the user data dir of the currently running quality.

* use create_dir_all instead

* clippy fixes
2023-05-10 13:09:23 -07:00
Martin Aeschlimann 0c85b95c48
stop tunnel when executable gets deleted (#181505)
stop when executable gets deleted
2023-05-09 09:25:51 +02:00
Connor Peet c8718e7290
cli: shut down service on windows more reliably (#181584)
* cli: shut down service on windows more reliably

Use the singleton kill logic.

Fixes #175268

* fix lint
2023-05-04 14:56:09 -07:00
Connor Peet 8b28c834bb
cli: do not set tunnel mutex when running from service only (#181574)
Fixes #181525
2023-05-04 21:11:33 +02:00
Connor Peet 5a139d4ffc
cli: fix tunnel names are case sensitive but remoteAuthorities are not (#181347)
Fixes #177222
2023-05-02 18:55:11 +02:00
Connor Peet d54402822a
cli: fix mutex names contain extra characters (#181335)
Fixes #181334
2023-05-02 17:16:17 +02:00
Connor Peet 06ff8779bd
cli: tunnels can sporadically become unresponsive (#181285)
Last iteration I moved some RPC logic to use Tokios "codecs" to give
them cancellation safety. These operate on streams of input data.

While this worked at first, I failed to take into account that the byte
buffer we read from the stream could have _more_ data than just the
current message under load scenarios. We were discarding any extra data
from the subsequent message. In most cases caused the next message
"length" to be read from the middle of the next message, which usually
(when parsed as a u32) was some number of gigabytes, then causing the
connection to stall forever.

Fixes #181284
2023-05-01 17:34:11 -07:00
Connor Peet cda21c19a7
cli: fix attach does not always work (#181273)
* fix: don't sync debug.lastExtensionDevelopmentWorkspace

* cli: fix attach does not always work

Seems like reading stdin when it's open but never written to blocks the process. Fix that, both by checking IS_INTERACTIVE_CLI before reading stdin, and by not passing stdin to the tunnel subprocess.

Fixes #179122
2023-05-01 14:58:25 -07:00
Connor Peet 43e0111e14
cli: only show other interactive attach commands when in a terminal (#181163)
* testing: another fix to avoid automatically queuing

Fixes #180041 again

* cli: only show other interactive attach commands when in a terminal

Fixes #178091
2023-04-28 15:13:26 -07:00
Connor Peet ab6ba2ebee
cli: fix problem restarting tunnel with uppercase letter in name (#180881)
Fixes #180693
2023-04-25 23:50:15 +02:00
Connor Peet cedf1eaa25
cli: add new control server messages for wsl (#180438)
* cli: add new control server messages for wsl

* support cwd in spawn
2023-04-20 15:19:05 -07:00
Benjamin Pasero 6d5b85427d
debt - remove unsupported max_old_space_size option (#180183) 2023-04-17 22:32:23 -07:00
Connor Peet 34f65dc1d7
cli: update hyper for cg (#180135) 2023-04-17 10:19:53 -07:00
dependabot[bot] 1e774371f2
Bump h2 from 0.3.14 to 0.3.17 in /cli (#179890)
Bumps [h2](https://github.com/hyperium/h2) from 0.3.14 to 0.3.17.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.14...v0.3.17)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-15 21:11:48 -07:00
Connor Peet f743297aa1
cli: add acquire_cli (#179837)
* cli: add acquire_cli

As given in my draft document, pipes a CLI of the given platform to the
specified process, for example:

```js
const cmd = await rpc.call('acquire_cli', {
	command: 'node',
	args: [
		'-e',
		'process.stdin.pipe(fs.createWriteStream("c:/users/conno/downloads/hello-cli"))',
	],
	platform: Platform.LinuxX64,
	quality: 'insider',
});
```

It genericizes caching so that the CLI is also cached on the host, just
like servers.

* fix bug
2023-04-13 19:18:48 +01:00
Connor Peet ca9404bd2f
cli: read tunnel lock from product.json (#179800)
Fixes #179265
2023-04-12 18:52:37 +01:00
Connor Peet 4180bbd21e
cli: fix macos build (#179794) 2023-04-12 18:33:29 +02:00
Connor Peet 2d8ff25c85
cli: add streams to rpc, generic 'spawn' command (#179732)
* cli: apply improvements from integrated wsl branch

* cli: add streams to rpc, generic 'spawn' command

For the "exec server" concept, fyi @aeschli.

* update clippy and apply fixes

* fix unused imports :(
2023-04-12 16:51:29 +01:00
Connor Peet b547b58db6
cli: use win32 app mutex to detect running tunnels and tunnel sevices (#179622)
* cli: fix distro mixin

* cli: use win32 app mutex to detect running tunnels and tunnel sevices

Fixes #179265

* cli: fix distro mixin more

* fix

* fix build
2023-04-10 20:25:14 +01:00
dependabot[bot] 29d93918d2
Bump openssl from 0.10.42 to 0.10.48 in /cli (#178296)
Bumps [openssl](https://github.com/sfackler/rust-openssl) from 0.10.42 to 0.10.48.
- [Release notes](https://github.com/sfackler/rust-openssl/releases)
- [Commits](https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.42...openssl-v0.10.48)

---
updated-dependencies:
- dependency-name: openssl
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-28 08:20:29 -07:00
Connor Peet dfbea0f578
cli: when attaching, always print the connection link (#178445)
Fixes #178090
2023-03-27 12:52:50 -07:00
Connor Peet b51e2f3613
cli: only connect to existing tunnel process when quality is the same (#178446)
Fixes #178089
2023-03-27 12:11:18 -07:00
Connor Peet 792114a7ec
cli: rename tunnels to lowercase names (#178272)
* cli: rename tunnels to lowercase names

Fixes #177222

* fix lint
2023-03-25 19:43:53 -07:00
Connor Peet f299f6f423
cli: fix windows terminal erroring on tunnel first run (#178267)
* cli: fix tunnel message command

Fixes #177394

* fix: windows terminal erroring on tunnel first run

Was fixed by https://github.com/console-rs/dialoguer/pull/192

Fixes #175747
2023-03-24 15:46:42 -07:00
Connor Peet 97af9cd323
cli: only show Ctrl+C to detach when in a terminal (#178276)
Fixes #178091
2023-03-24 15:46:16 -07:00
Connor Peet 3d7f6dec00
cli: fix tunnel message command (#178079)
Fixes #177394
2023-03-22 14:44:49 -07:00
Connor Peet 349c62ab30
cli: fix reading of client tunnel commands (#177919)
.read_line() appends to the string, so this caused the first command entered to always be read again
2023-03-21 16:33:28 -07:00
Connor Peet b9c2df39d1
cli: don't colorize file log output, collect internal logs for broadcast (#177420)
Fixes #177345
2023-03-17 17:14:41 +01:00
Connor Peet 120d0d2fdb
fix: make tunnel names case-insensitive (#177413)
Lowercase them, since Basis internally is case-sensitive.

Fixes #177222
2023-03-16 15:49:51 -07:00
Connor Peet 9fc16337d5
cli: code-insiders tunnel service install message should use code-insiders (#177394)
Fixes #177344
2023-03-16 21:18:22 +01:00
Connor Peet eab8ba65bf
cli: add tunnel status command (#177381)
Fixes #177372
2023-03-16 12:26:56 -07:00
Connor Peet 025e3194e1
fix: missing accept server license terms arg in service install (#177366)
Fixes #177351
2023-03-16 11:23:35 -07:00
Connor Peet 0e1ec3e87d
fix: not installing extensions in the directory that is being passed (#177303)
Fixes https://github.com/microsoft/vscode-internalbacklog/issues/3595
2023-03-16 00:14:53 +01:00
Connor Peet abab52dd94
cli: add tunnel kill/restart subcommands (#177286) 2023-03-15 15:09:12 -07:00
Connor Peet 0e7d14d32d
cli: allow client process to control singleton process (#177141)
Other connected clients will now print:

```
Connected to an existing tunnel process running on this machine. You can press:

- Ctrl+C to detach
- "x" to stop the tunnel and exit
- "r" to restart the tunnel
```

These are then sent to the server to have that take effect. This is
mostly some refactors in the singleton_server to make the lifecycle work.
2023-03-14 17:55:28 -07:00
Connor Peet 1b5fd140fb
Run tunnels as singleton process (for a --cli-data-dir) (#177002)
* wip on singleton

* wip

* windows support

* wip

* wip

* fix clippy
2023-03-14 08:09:47 -07:00
Connor Peet 863b9261a3
cli: bump tempfile->remove_dir_all for cve (#176206) 2023-03-06 10:10:01 +01:00
Simon Byrne ef46983a3a
cli: option to disable encryption of keychain matter
* option to disable encryption of keys

Avoids issue of token invalidation when switching machines with a shared home directory, as suggested by @connor4312 in https://github.com/microsoft/vscode-remote-release/issues/8110#issuecomment-1452270922

Fixes #8110

* Update cli/src/auth.rs

Co-authored-by: Connor Peet <connor@peet.io>

* Change variable to VSCODE_CLI_DISABLE_KEYCHAIN_ENCRYPT

Co-authored-by: Connor Peet <connor@peet.io>

---------

Co-authored-by: Connor Peet <connor@peet.io>
2023-03-02 20:28:57 +01:00
Connor Peet 26fe31fc66
update openssl-prebuild for musl failures (#175731)
* update openssl-prebuild for musl failures

* reapply vendoring

* reapply macos pipeline fix
2023-03-01 08:57:45 +01:00
Connor Peet f8119e9beb
Revert "cli: fix static import of openssl (#175681)" (#175727)
This reverts commit 7014a17b1f.
2023-03-01 07:43:32 +01:00
Connor Peet 7014a17b1f
cli: fix static import of openssl (#175681)
* cli: fix static import of openssl

* update dev tunnels
2023-02-28 11:20:58 -08:00
Benjamin Pasero 2cad803acf
Revert "Bump openssl-src from 111.22.0+1.1.1q to 111.25.0+1.1.1t in /cli (#173883)"
This reverts commit be0f82c93a.
2023-02-28 08:37:33 +01:00
dependabot[bot] be0f82c93a
Bump openssl-src from 111.22.0+1.1.1q to 111.25.0+1.1.1t in /cli (#173883)
Bumps [openssl-src](https://github.com/alexcrichton/openssl-src-rs) from 111.22.0+1.1.1q to 111.25.0+1.1.1t.
- [Release notes](https://github.com/alexcrichton/openssl-src-rs/releases)
- [Commits](https://github.com/alexcrichton/openssl-src-rs/commits)

---
updated-dependencies:
- dependency-name: openssl-src
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-27 16:05:56 +00:00
Martin Aeschlimann beb9ed3758
update tokio (#173784) 2023-02-08 17:10:14 +07:00
Connor Peet 40f31f92d0
cli: fix download for arm32 linux (#173374)
Once again, wishing target_* were statically typed...

Fixes https://github.com/microsoft/vscode-remote-release/issues/7631
2023-02-03 13:30:31 -08:00
Connor Peet 760c998cda
cli: remove debug print (#173223) 2023-02-02 15:32:47 -08:00
Connor Peet 953a039549
cli: use hostname-based generation instead of bird names (#173220)
Fixes #167708 by using a more predictable naming scheme.

```
me> Write a haiku about the extinction of birds
chatgpt>
	Silent skies above,
	Once lively songs now gone,
	Fading memories.
```
2023-02-02 15:05:38 -08:00
Connor Peet 339fd630e6
cli: fix macos build (#172712) 2023-01-28 17:43:32 -08:00
Connor Peet b5aa3e0a3d
cli: use better approach to Windows services (#172679)
Fixes #167741

This eschews the offical Windows service system in favor of registering
into `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run`.
Unlike services, this can be done without administrative permissions,
does not require the current username/password, and is not blocked by
miscellaneous and mysterious system policies.

Since the process is basically unmanaged by the OS, this requires a
little legwork to start and stop the process when registering and
unregistering.
2023-01-27 15:04:56 -08:00
Connor Peet 7a04589c16
cli: fix sleep inhibition not always working (#172428)
Seems like we should prevent _both_ "useridlesystemsleep" as well as "systemsleep"

Fixes https://github.com/microsoft/vscode-remote-release/issues/7913
2023-01-25 19:50:52 +01:00
Connor Peet 5beebeb170
cli: fall back to screensaver api for linux no-sleep (#172353) 2023-01-25 16:28:30 +09:00
Connor Peet 618da1e00a
cli: fix arch check for musl arm64 (#172092)
Fixes https://github.com/microsoft/vscode-remote-release/issues/7812

Wish Rust had compilation errors for bad compile time checks :(
2023-01-23 16:50:24 -08:00
Connor Peet 6d59c82ddc
cli: add option to enable --no-sleep for tunnel (#172043)
Fixes https://github.com/microsoft/vscode-remote-release/issues/7127

Also add auth logs for debugging, seemed like my OSS retained
a bad Github token.
2023-01-23 10:44:27 -08:00
Connor Peet 3ccb3ca7c3
Merge pull request #171927 from microsoft/connor4312/nosleep-linux
cli: implement --no-sleep for linux
2023-01-21 15:29:05 -08:00
Connor Peet 4a9bf44941
Merge pull request #171894 from microsoft/connor4312/nosleep-windows
cli: implement --no-sleep for windows
2023-01-21 15:24:19 -08:00
Connor Peet 2ef991a960 cli: implement --no-sleep on linux 2023-01-21 12:29:28 -08:00
Connor Peet bcc8232721
fix: build on windows (#171892)
🙈
2023-01-21 14:05:37 +09:00
Connor Peet 758bc69404
cli: implement --no-sleep for windows 2023-01-20 18:57:11 -08:00
Connor Peet 4cf496e905
cli: add --no-sleep flag, implementation for macos (#171885)
First part of https://github.com/microsoft/vscode-remote-release/issues/7127
2023-01-20 15:42:09 -08:00
Connor Peet 9bf083f846
fix sigpipe detection, use archive path given by client 2023-01-20 11:56:02 -08:00
Connor Peet c600c10579
Merge remote-tracking branch 'origin/main' into connor4312/cli-wsl-control-2 2023-01-20 11:32:17 -08:00
Connor Peet 4a7adb6667
cli: use x64 server for windows arm64 (#171861)
cli: use x64 server for arm64

We don't publish an arm64 server yet. Same thing as ssh does.
2023-01-20 20:13:22 +01:00
Connor Peet c010101bc4
wip 2023-01-19 20:03:47 -08:00
Connor Peet a4585b072e
dep: bump the bumpalo 🦬 (#171651)
Fixes https://github.com/microsoft/vscode-internalbacklog/issues/3426
2023-01-18 16:40:11 -08:00
Connor Peet 8965c48d30
wip 2023-01-18 16:15:43 -08:00
Connor Peet 2c2ead679b
cli: initial wsl control server
Adds an stdin/out json rpc server for wsl.

Exposes a singular install_local command to install+boot the vscode server on a port from a local archive.

Also refines the common rpc layer some more. I'm decently happy with it now.
2023-01-18 08:23:04 -08:00
Connor Peet 2aecc85c22 cli: update help text of cli for standalone differentiation 2023-01-17 08:19:36 -08:00
Connor Peet 4d882322ca
cli: start to extract a generic rpc interface (#171299)
I want to use the rpc interface for communication via stdin/out in wsl,
but currently RPC is tightly coupled to the control server. The control
server also speaks msgpack instead of JSON, since it deals with binary
messages. WSL won't, and we'll want to use JSON to interact with VS
Code, so some separation is needed.

This pulls out a base set of RPC types for use in both scenarios.
Currently these are only 'helper' structs that don't actually do any
i/o, but once I figure out the model I would like to have a cleaner way
to do i/o in a unified way as well.

For the control server, previously we basically handled all methods in
one big `switch` block with nasty macros, whereas now there's
nicer `register_a/sync` functions.

Some additional small refactors were needed to preserve the strict
ordering of server messages, since they need to be order else we get
decompression errors. This is the `start_bridge_write_loop`. As a small
benefit, this means we can avoid the relatively expensive async Tokio
mutex that we were using, and instead use the standard library mutex.
2023-01-16 21:43:41 -08:00
dependabot[bot] 2584c4b68b
Bump tokio from 1.21.2 to 1.23.1 in /cli (#170729)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.21.2 to 1.23.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.21.2...tokio-1.23.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-09 08:18:25 -08:00