Skip to content
/ QwkSync Public

A small, dependency-free .NET library whose sole responsibility is to safely and predictably move QWK and REP files between a local application and a remote endpoint.

License

Notifications You must be signed in to change notification settings

57951/QwkSync

Repository files navigation

QWKSync.NET

QWKSync.NET is a small, dependency-free .NET library that safely and predictably moves QWK and REP files between a local application and a remote endpoint. It operates strictly at the transport and orchestration level—discovering files, ordering them deterministically, transferring them atomically, and reporting results—without parsing, validating, or interpreting packet contents.

Key Features

  • File-level transfer orchestration for QWK and REP packets
  • Atomic downloads with temporary file handling and cleanup
  • Deterministic ordering of packets (newest first, with lexicographic fallback)
  • Transport abstraction with built-in LocalFolderTransport
  • Single-flight concurrency guarantees to prevent conflicts
  • Stateless operation with no history or caching
  • Cancellation support throughout all operations
  • Progress reporting via standard .NET interfaces
  • Zero third-party dependencies

Install

QWKSync.NET is available on NuGet:

dotnet add package QwkSync

Or add to your .csproj:

<ItemGroup>
  <PackageReference Include="QwkSync" Version="1.0.0" />
</ItemGroup>

Quick Start

using QwkSync;

// Create a profile pointing to the remote endpoint
QwkSyncProfile profile = new QwkSyncProfile
{
  Endpoint = new Uri("file:///path/to/remote/folder"),
  TransportId = "local-folder"
};

// Create a plan specifying local directories
QwkSyncPlan plan = new QwkSyncPlan
{
  LocalInboxDirectory = "/path/to/local/inbox",
  LocalOutboxDirectory = "/path/to/local/outbox"
};

// Create a client and run the sync
QwkSyncClient client = new QwkSyncClient();

using CancellationTokenSource cts = new CancellationTokenSource();
QwkSyncResult result = await client.SyncAsync(profile, plan, cts.Token);

// Check the result
Console.WriteLine($"Outcome: {result.Outcome}");
if (result.Issues.Count > 0)
{
  foreach (QwkSyncIssue issue in result.Issues)
  {
    Console.WriteLine($"  - {issue.Description}");
  }
}

Project Structure

  • src/QwkSync/ - Core library
  • src/QwkSync.Http/ - HTTP transport extension
  • tests/QwkSync.Tests/ - Core library tests
  • tests/QwkSync.Http.Tests/ - HTTP transport tests
  • tools/QwkSync.LocalDemo/ - Demonstration tool
  • docs/ - Documentation

License

MIT License. See LICENSE file for details.

About

A small, dependency-free .NET library whose sole responsibility is to safely and predictably move QWK and REP files between a local application and a remote endpoint.

Topics

Resources

License

Stars

Watchers

Forks

Languages