feat: port session 10 — Server Core Runtime, Accept Loops & Listeners
Ports server/server.go lines 2577–4782 (~1,881 Go LOC), implementing ~97 features (IDs 3051–3147) across three new partial-class files. New files: - NatsServer.Lifecycle.cs: Shutdown, WaitForShutdown, RemoveClient, SendLDMToClients, LameDuckMode, LDMClientByID, rate-limit logging, DisconnectClientByID, SendAsyncInfoToClients - NatsServer.Listeners.cs: AcceptLoop, GetServerListener, InProcessConn, AcceptConnections, GenerateInfoJson, CopyInfo, CreateClient/Ex/InProcess, StartMonitoring (HTTP/HTTPS), AddConnectURLs/RemoveConnectURLs, TlsVersion/TlsVersionFromString, GetClientConnectURLs, ResolveHostPorts, PortsInfo/PortFile/LogPorts, ReadyForListeners, GetRandomIP, AcceptError - Internal/WaitGroup.cs: Go-style WaitGroup using TaskCompletionSource Modified: - Auth/AuthTypes.cs: Account now implements INatsAccount (stub) - NatsServerTypes.cs: ServerInfo.ShallowClone(), removed duplicate RefCountedUrlSet - NatsServer.cs: _info promoted to internal for test access - Properties/AssemblyInfo.cs: InternalsVisibleTo(DynamicProxyGenAssembly2) - ServerTests.cs: 20 new session-10 unit tests (GenerateInfoJson, TlsVersion, CopyInfo, GetRandomIP — Test IDs 2895, 2906) All 565 unit tests + 1 integration test pass.
This commit is contained in:
@@ -882,15 +882,26 @@ public sealed partial class NatsServer
|
||||
// =========================================================================
|
||||
|
||||
/// <summary>
|
||||
/// Sets the INFO host/port from the current listener endpoint.
|
||||
/// Full implementation in session 10 (listener startup).
|
||||
/// Stub sets to opts values.
|
||||
/// Sets the INFO host/port from either <c>ClientAdvertise</c> or the bind options.
|
||||
/// Mirrors Go <c>Server.setInfoHostPort()</c>.
|
||||
/// Returns non-null on parse error.
|
||||
/// </summary>
|
||||
internal void SetInfoHostPort()
|
||||
internal Exception? SetInfoHostPort()
|
||||
{
|
||||
var opts = GetOpts();
|
||||
_info.Host = opts.Host;
|
||||
_info.Port = opts.Port;
|
||||
if (!string.IsNullOrEmpty(opts.ClientAdvertise))
|
||||
{
|
||||
var (h, p, err) = Internal.ServerUtilities.ParseHostPort(opts.ClientAdvertise, opts.Port);
|
||||
if (err != null) return err;
|
||||
_info.Host = h;
|
||||
_info.Port = p;
|
||||
}
|
||||
else
|
||||
{
|
||||
_info.Host = opts.Host;
|
||||
_info.Port = opts.Port;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user