Joseph Doherty
6fb7f43335
feat(mqtt): add MQTT listener, client creation, and shutdown wiring
...
Wire up the MQTT server-side orchestration layer (Task 1 of 7):
- Create NatsServer.Mqtt.cs with StartMqttListener(), CreateMqttClient(), MqttAddr()
- Forward MqttHandler.StartMqtt() to server.StartMqttListener()
- Add _mqttListener to Shutdown() doneExpected counting
- Fix ReadyForConnections to recognize active MQTT listener
- Handle RandomPort (-1) as ephemeral for MQTT listener
- Remove duplicate Mqtt field from ClientConnection.cs (already in ClientConnection.Mqtt.cs)
- Add 2 MQTT boot integration tests (accept + shutdown lifecycle)
2026-03-01 15:35:41 -05:00
Joseph Doherty
06779a1f77
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.
2026-02-26 15:08:23 -05:00