Node.Lib
1.2.91
dotnet add package Node.Lib --version 1.2.91
NuGet\Install-Package Node.Lib -Version 1.2.91
<PackageReference Include="Node.Lib" Version="1.2.91" />
<PackageVersion Include="Node.Lib" Version="1.2.91" />
<PackageReference Include="Node.Lib" />
paket add Node.Lib --version 1.2.91
#r "nuget: Node.Lib, 1.2.91"
#:package Node.Lib@1.2.91
#addin nuget:?package=Node.Lib&version=1.2.91
#tool nuget:?package=Node.Lib&version=1.2.91
Node.Lib
The hosting pieces every per-user local node in SharpAstro shares, lifted out of tianwen and pilot (phase 6 of pilot v2's design). Two packages:
| Assembly | What | Depends on |
|---|---|---|
Node.Lib |
NodeSocketLocation (where an application's per-user socket and data folder are; Resolve, TryGetNamed, the sun_path limit, the lock path, the socket-connected HTTP handler, a listening probe) and NodeLock (one node per socket, cleared and bound only by its holder); CircularBuffer<T> (a lock-free ring of the most recent items, with how many were ever added, so a client asks for only what it lacks: a notification feed, a job's last lines); LocalOnlyMode (a process binds nothing but loopback and its socket: an app's environment variable or --local-only, decided once); WebSocketEventQueue (one event-stream client's bounded queue and its one sender: a write never waits, order holds, a stalled send ends and the client is dropped); DetachedProcess (in Node.Lib.Processes; starts a node so it outlives its client: on Windows it breaks away from the client's job, has no window and its own process group, and says whether it could, OutlivesClient) |
nothing |
Node.Lib.Hosting |
NodeSocketHosting: Kestrel on the socket the lock admits it to, owner-only on Unix, and ListenOnNodeNetwork, a TCP listen on every address that binds only when the process's LocalOnlyMode allows it and says whether it did; NodeAccessGate: seeing is free, commands need control (a node's NodeAccessPolicy says which route is open, a command or this machine's, and checks the grant), the socket passes untouched |
ASP.NET Core |
A client takes Node.Lib alone, so it never carries ASP.NET.
Who uses it
- pilot:
Pilot.Contracts.NodeSocketis pilot's names (pilot2,PILOT_NODE_SOCKET) over aNodeSocketLocation; the node takes the lock and hosting from here;NodeHoldersays how a refused node asks the holder who it is; its client starts the node withDetachedProcess, and--lanlistens throughListenOnNodeNetwork. - tianwen:
TianWen.Hosting.Contracts.Api.NodeSocketis its names over aNodeSocketLocationunder its own data root (() => TianWenDataRoot.Directory.FullName); its clients askTryGetNamed; the node takes the lock and hosting from here. - Both nodes'
EventHubs put each client's events on aWebSocketEventQueueand keep their own policy: pilot resumes a dropped client from the last delta it applied, tianwen's resyncs by polling and keeps its two pools and presence.
Next
Jobs stay each node's own: tianwen's are in-process work holding a device or a kind (a second start joins or is
refused), pilot's are processes queued by count and free memory. They share the model (a state, a step, an error, start
and end), not code. (The grants'
file store is LAN.Lib's LanGrantFile.)
Build and test
dotnet build
dotnet test src/Node.Lib.Tests
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Node.Lib:
| Package | Downloads |
|---|---|
|
TianWen.Lib
Astronomical imaging and device-control library for .NET: cameras, mounts, focusers, filter wheels, cover/calibrators and guiders over ASCOM, Alpaca, ZWO, QHYCCD, Meade LX200, Skywatcher, OnStep and PHD2, plus plate solving, deep-sky and planetary stacking, auto-focus and unattended session automation. First-class multi-OTA (dual rig) support. AOT compatible. |
|
|
Node.Lib.Hosting
Node.Lib's node side: Kestrel on the Unix domain socket its NodeLock admits it to, owner-only on Unix. Apart from Node.Lib so a client never carries ASP.NET Core. |
GitHub repositories
This package is not used by any popular GitHub repositories.