Silk

silk/http_transport

Profiles: aarch64-apple-darwin, aarch64-unknown-linux-gnu, aarch64-unknown-linux-gnu-no-libc, wasm32-unknown-unknown, x86_64-unknown-linux-gnu, x86_64-unknown-linux-gnu-no-libc.

Rich HTTP byte transport adapters that retain the exact plain or authenticated TLS provider.

Details

plain and secured borrow one concrete provider exclusively. The outer owner retains physical resource ownership. close terminally closes the logical lease without a flush or TLS shutdown.

Import as HttpTransport with import silk.http_transport { HttpTransport }.

Public declarations: 8.

TransportError

pub union TransportError

A transport failure with its original structured cause.

Plain

TransportError.Plain { error: ByteIoError }: TransportError

A failure from the plain byte provider.

Field error

pub error: ByteIoError

The original byte operation failure.

Secured

TransportError.Secured { error: ConnectionError }: TransportError

A failure from the authenticated TLS connection.

Field error

pub error: ConnectionError

The original TLS connection failure.

HttpTransport

pub service HttpTransport

Partial HTTP byte transfers with unchanged absolute deadlines and rich failure causes.

Operation readSomeRaw

unsafe effect<'life0> fn readSomeRaw<'life0>(output: &'life0 mut [u8], deadline: silk/option.Option<silk/system_clock.Instant>) -> ReadTransfer ! TransportError | OutOfMemoryError ? &mut HttpTransport | &mut MonotonicClock | &mut Allocator | &mut Random

Performs one provider read before canonical transfer-count validation.

Operation writeSomeRaw

unsafe effect<'life0> fn writeSomeRaw<'life0>(input: &'life0 [u8], deadline: silk/option.Option<silk/system_clock.Instant>) -> usize ! TransportError | OutOfMemoryError ? &mut HttpTransport | &mut MonotonicClock | &mut Allocator | &mut Random

Performs one provider write before canonical transfer-count validation.

Operation flush

effect<'static> fn flush(deadline: silk/option.Option<silk/system_clock.Instant>) -> () ! TransportError | OutOfMemoryError ? &mut HttpTransport | &mut MonotonicClock | &mut Allocator | &mut Random

Flushes accepted bytes to the provider boundary.

Operation close

effect<'static> fn close() -> () ! TransportError ? &mut HttpTransport with Intrinsic.nonParking()

Closes the logical lease without parking; repeated calls complete locally.

Associated function HttpTransport.readSome

pub effect<'life0> fn readSome<'life0>(output: &'life0 mut [u8], deadline: silk/option.Option<silk/system_clock.Instant>) -> ReadTransfer ! TransportError | OutOfMemoryError ? &mut HttpTransport | &mut MonotonicClock | &mut Allocator | &mut Random

Reads one validated positive prefix or transport end; empty output completes locally.

Associated function HttpTransport.writeSome

pub effect<'life0> fn writeSome<'life0>(input: &'life0 [u8], deadline: silk/option.Option<silk/system_clock.Instant>) -> usize ! TransportError | OutOfMemoryError ? &mut HttpTransport | &mut MonotonicClock | &mut Allocator | &mut Random

Writes one validated positive prefix; empty input completes locally.

Plain

pub struct Plain<'provider, P>

An exclusive borrowed plain byte provider with terminal close state.

Secured

pub struct Secured<'provider, P>

An exclusive borrowed authenticated TLS connection with terminal close state.

plain

pub fn plain<'provider, P>(provider: &'provider mut P) -> silk/http_transport.Plain<'provider, P>

Borrows one exact plain provider without allocation or I/O.

secured

pub fn secured<'provider, P>(provider: &'provider mut silk/tls_connection.OwnedConnection<P>) -> silk/http_transport.Secured<'provider, P>

Borrows one exact authenticated connection without allocation or I/O.

Implementation HttpTransport for silk/http_transport.Plain<'provider, P>

impl HttpTransport for silk/http_transport.Plain<'provider, P>

Operation readSomeRaw

readSomeRaw = Plain.read

Operation writeSomeRaw

writeSomeRaw = Plain.write

Operation flush

flush = Plain.flushOutput

Operation close

close = Plain.closeLease

Implementation HttpTransport for silk/http_transport.Secured<'provider, P>

impl HttpTransport for silk/http_transport.Secured<'provider, P>

Operation readSomeRaw

readSomeRaw = Secured.read

Operation writeSomeRaw

writeSomeRaw = Secured.write

Operation flush

flush = Secured.flushOutput

Operation close

close = Secured.closeLease

Loan

pub struct Loan<'provider, P>

An exclusive logical loan of one exact HTTP transport provider.

borrow

pub fn borrow<'provider, P>(provider: &'provider mut P) -> silk/http_transport.Loan<'provider, P>

Borrows one HTTP provider for a scoped owned client session without allocation.

Implementation HttpTransport for silk/http_transport.Loan<'provider, P>

impl HttpTransport for silk/http_transport.Loan<'provider, P>

Operation readSomeRaw

readSomeRaw = Loan.read

Operation writeSomeRaw

writeSomeRaw = Loan.write

Operation flush

flush = Loan.flushOutput

Operation close

close = Loan.closeLease

Implementation ByteDuplex for silk/http_transport.Loan<'provider, P>

impl ByteDuplex for silk/http_transport.Loan<'provider, P>

Operation readSomeRaw

readSomeRaw = Loan.readBytes

Operation writeSomeRaw

writeSomeRaw = Loan.writeBytes

Operation flushRaw

flushRaw = Loan.flushBytes

Operation shutdownWriteRaw

shutdownWriteRaw = Loan.shutdownBytes

Operation closeRaw

closeRaw = Loan.closeBytes

On this page