Livt packages

Livt.Net

Version 1.4.1

Ethernet, IPv4, TCP, UDP, ARP, TFTP, and Telnet networking components for Livt hardware.

Published files (163)

src/tftp/ITftpWriteSink.lvt

namespace Livt.Net

/**
 * Transactional destination for one TFTP upload in the caller's context. The
 * server borrows this sink exclusively. Calls wait for acceptance/completion;
 * server and sink borrow the same ITftpUploadBuffer bound at construction.
 * Read only the supplied prefix, without retaining a borrow after the call.
 * The sink never modifies staging. No network ownership.
 */
interface ITftpWriteSink
{
	/**
	 * Starts an unpublished replacement identified by 1..63 staged filename bytes.
	 * Requires no active upload. Returns false if unavailable or rejected,
	 * leaving no new upload active.
	 */
	fn Begin(length: int) bool

	/**
	 * Appends 0..512 staged data bytes exactly once. False aborts the transfer; no assumption
	 * is made about partial writes. The sink enforces its own capacity limit.
	 * A DATA packet may arrive as several ordered chunks; only Commit publishes it.
	 */
	fn Write(length: int) bool

	/**
	 * Validates and publishes the complete upload. False leaves the previous
	 * published content intact; the server subsequently calls Abort.
	 */
	fn Commit() bool

	/**
	 * Discards an unpublished upload, preserving previous committed content.
	 * Idempotent; never removes a successfully committed file.
	 */
	fn Abort()
}