Honua.Sdk.Offline
1.13.1
dotnet add package Honua.Sdk.Offline --version 1.13.1
NuGet\Install-Package Honua.Sdk.Offline -Version 1.13.1
<PackageReference Include="Honua.Sdk.Offline" Version="1.13.1" />
<PackageVersion Include="Honua.Sdk.Offline" Version="1.13.1" />
<PackageReference Include="Honua.Sdk.Offline" />
paket add Honua.Sdk.Offline --version 1.13.1
#r "nuget: Honua.Sdk.Offline, 1.13.1"
#:package Honua.Sdk.Offline@1.13.1
#addin nuget:?package=Honua.Sdk.Offline&version=1.13.1
#tool nuget:?package=Honua.Sdk.Offline&version=1.13.1
Honua.Sdk.Offline
Provider-neutral offline sync engine. Pulls feature pages from any
IHonuaFeatureQueryClient, applies queued edits through IHonuaFeatureEditClient,
and tracks conflicts, checkpoints, retries, and state through the storage
contracts in the Honua.Sdk.Offline.Abstractions namespace, shipped by
Honua.Sdk.Abstractions.
Part of the Honua .NET SDK — see the repo README for the full package catalog, browser/WASM support, authentication, and release policy.
Install
Stable releases are on nuget.org and install anonymously. An unversioned add resolves to the newest stable release (the current SDK version is in the repo README). Prereleases stay on the authenticated GitHub Packages feed; see INSTALL.md.
dotnet add package Honua.Sdk.Offline
Quick usage
using Honua.Sdk.Abstractions.Features;
using Honua.Sdk.Offline;
using Honua.Sdk.Offline.Abstractions;
// Bring your own provider-neutral query/edit clients (FeatureServer, gRPC, OGC, ...)
// plus the storage adapters from your host (SQLite, IndexedDB, in-memory, ...).
IHonuaFeatureQueryClient queryClient = /* from your provider package */;
IHonuaFeatureEditClient editClient = /* from your provider package */;
IOfflineFeatureStore featureStore = /* host-provided */;
IOfflineChangeJournal changeJournal = /* host-provided */;
IOfflineSyncCheckpointStore checkpoints = /* host-provided */;
var engine = new OfflineSyncEngine(
queryClient,
editClient,
featureStore,
changeJournal,
checkpoints,
new OfflineSyncEngineOptions());
var manifest = new OfflinePackageManifest
{
PackageId = "field-pkg-1",
Sources = [/* OfflineSourceDescriptor entries */],
};
OfflinePushResult pushed = await engine.PushAsync(manifest.PackageId, cancellationToken);
OfflinePullResult pulled = await engine.PullAsync(manifest, cancellationToken);
OfflineSyncRunResult run = await engine.SyncAsync(manifest, cancellationToken);
Replica delta downloads
Use ReplicaSyncClient for server-driven replica changes. A synchronization
downloads changes and advances the server's delivery cursor. The returned
ServerGen describes that delivery; it does not mean the changes were applied
to your local store.
Pass the generation already applied locally as receivedServerGen. Apply all
LayerChanges (including DeleteIds tombstones) and persist the returned
generation together with those changes in your local transaction. If local
application fails, retry with the preceding applied generation so the server
can redeliver that window even if its stored cursor has advanced.
// Begin with the generation of the replica snapshot stored locally.
long appliedGeneration = /* load the local replica checkpoint */;
SynchronizeResult delivery;
do
{
delivery = await replicaClient.SynchronizeReplicaAsync(
serviceId, replicaId, receivedServerGen: appliedGeneration,
cancellationToken: cancellationToken);
// In one local transaction: apply adds/updates/deletes from LayerChanges,
// then save delivery.ServerGen as the checkpoint. Commit before continuing.
await ApplyAndCheckpointAsync(delivery.LayerChanges, delivery.ServerGen, cancellationToken);
appliedGeneration = delivery.ServerGen;
} while (delivery.ExceededTransferLimit);
ExceededTransferLimit means another delivery remains. LayerServerGens
retains the generations delivered for individual layers. ExtractChangesAsync
also exposes this metadata; after applying an extract, pass its delivered
generation to synchronization and apply that synchronization's changes too,
since remote edits may arrive between the two requests.
Documentation
License
| 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
- Honua.Sdk.Abstractions (>= 1.13.1)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.7)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Honua.Sdk.Offline:
| Package | Downloads |
|---|---|
|
Honua.Sdk
Umbrella / meta package for the Honua .NET SDK. Installing this package brings in every other Honua.Sdk.* package and exposes a single AddHonua(o => o.BaseAddress = ...) DI registration that fans out across every enabled sub-package. Use the narrower per-package facades (Honua.Sdk.Grpc, Honua.Sdk.Admin, etc.) directly if you want to depend on less. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.13.1 | 191 | 10/26/2026 |
| 1.12.0 | 1,688 | 10/19/2026 |
| 1.11.1 | 2,542 | 10/13/2026 |
| 1.11.0 | 1,891 | 10/12/2026 |
| 1.10.4 | 889 | 10/7/2026 |
| 1.10.3 | 278 | 10/5/2026 |
| 1.10.2 | 201 | 10/4/2026 |
| 1.10.1 | 465 | 9/29/2026 |
| 1.10.0 | 284 | 9/25/2026 |
| 1.9.0 | 125 | 9/25/2026 |
| 1.8.0 | 122 | 9/16/2026 |
| 1.7.0 | 145 | 9/15/2026 |
| 1.6.4 | 179 | 9/12/2026 |