feat(batch23): implement route lifecycle, solicitation, dedupe, and iteration

This commit is contained in:
Joseph Doherty
2026-02-28 21:19:30 -05:00
parent acf51bf480
commit 51c899b651
5 changed files with 294 additions and 0 deletions

View File

@@ -449,4 +449,38 @@ public sealed partial class ClientConnection
if (buf.Length > 0)
EnqueueProto(buf);
}
internal bool ImportFilter(string subject) => CanImport(subject);
internal bool IsSolicitedRoute() => Route?.DidSolicit == true;
internal Exception? ProcessRouteConnect(byte[] arg)
{
if (arg is not { Length: > 0 })
return new FormatException("processRouteConnect parse error");
ConnectInfo? info;
try
{
info = JsonSerializer.Deserialize<ConnectInfo>(arg);
}
catch (Exception ex)
{
return ex;
}
if (info is null)
return new FormatException("processRouteConnect missing CONNECT payload");
lock (_mu)
{
Opts.Name = info.Name;
Opts.Headers = info.Headers;
Route ??= new Route();
Route.Lnoc = info.Lnoc;
Route.Lnocu = info.Lnocu;
}
return null;
}
}