Node.Lib 1.2.91

This package has a SemVer 2.0.0 package version: 1.2.91+7ce2908bbacfc2a3d505120ef117eb14c463638b.
dotnet add package Node.Lib --version 1.2.91
                    
NuGet\Install-Package Node.Lib -Version 1.2.91
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Node.Lib" Version="1.2.91" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Node.Lib" Version="1.2.91" />
                    
Directory.Packages.props
<PackageReference Include="Node.Lib" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Node.Lib --version 1.2.91
                    
#r "nuget: Node.Lib, 1.2.91"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Node.Lib@1.2.91
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Node.Lib&version=1.2.91
                    
Install as a Cake Addin
#tool nuget:?package=Node.Lib&version=1.2.91
                    
Install as a Cake Tool

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.NodeSocket is pilot's names (pilot2, PILOT_NODE_SOCKET) over a NodeSocketLocation; the node takes the lock and hosting from here; NodeHolder says how a refused node asks the holder who it is; its client starts the node with DetachedProcess, and --lan listens through ListenOnNodeNetwork.
  • tianwen: TianWen.Hosting.Contracts.Api.NodeSocket is its names over a NodeSocketLocation under its own data root (() => TianWenDataRoot.Directory.FullName); its clients ask TryGetNamed; the node takes the lock and hosting from here.
  • Both nodes' EventHubs put each client's events on a WebSocketEventQueue and 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • 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.

Version Downloads Last Updated
1.2.91 306 10/23/2026
1.1.61 1,092 10/20/2026
1.0.11 151 10/20/2026