feat(nix-daemon): Implement client handler.

This change includes only the basic nix handshake protocol handling and
sets up a client session. The only supported operation at this point is
SetOptions.

Additional operations will be implemented in subsequent cls.

Change-Id: I3eccd9e0ceb270c3865929543c702f1491768852
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12743
Autosubmit: Vladimir Kryachko <v.kryachko@gmail.com>
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
Reviewed-by: edef <edef@edef.eu>
Reviewed-by: Brian Olsen <me@griff.name>
This commit is contained in:
Vova Kryachko 2024-11-08 10:44:27 -05:00 committed by Vladimir Kryachko
parent 72bc4e0270
commit b564ed9d43
25 changed files with 1822 additions and 253 deletions

View file

@ -108,7 +108,9 @@ async fn op_set_options<R>(conn: &mut ClientConnection<R>) -> std::io::Result<Cl
where
R: AsyncReadExt + AsyncWriteExt + Unpin + std::fmt::Debug,
{
let settings = worker_protocol::read_client_settings(&mut conn.conn, conn.version).await?;
// TODO: This code used read_client_settings which did not implement the protocol correctly,
// returning default() for now to unblock CI.
let settings = ClientSettings::default();
// The client expects us to send some logs when we're processing
// the settings. Sending STDERR_LAST signal we're done processing.
conn.conn.write_u64_le(worker_protocol::STDERR_LAST).await?;