feat(batch23): implement route lifecycle, solicitation, dedupe, and iteration
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user