necoherence/network_effect

Types

pub type AdapterObservation {
  ResponseObservation(
    attempt: AttemptIdentity,
    handle: ExecutionHandle,
    source: SourceSequence,
    response: RawHttpResponse,
    provenance: HeaderProvenance,
    effect: EffectStatus,
  )
  FailureObservation(
    attempt: AttemptIdentity,
    handle: ExecutionHandle,
    source: SourceSequence,
    failure: NetworkHostFailure,
    effect: EffectStatus,
  )
  CancellationObservation(
    attempt: AttemptIdentity,
    handle: ExecutionHandle,
    source: SourceSequence,
    effect: EffectStatus,
  )
  DeadlineObservation(
    attempt: AttemptIdentity,
    handle: ExecutionHandle,
    source: SourceSequence,
    deadline: Deadline,
    observed: MonotonicClockObservation,
    effect: EffectStatus,
  )
}

Constructors

pub type AttemptCondition {
  IsPrepared
  IsCommandIssued
  IsStarted
  IsSettled
}

Constructors

  • IsPrepared
  • IsCommandIssued
  • IsStarted
  • IsSettled
pub type AttemptDisposition {
  Prepared
  CommandIssued
  Started(ExecutionHandle)
  Settled(option.Option(ExecutionHandle), NetworkTerminal)
}

Constructors

pub type AttemptIdentity {
  AttemptIdentity(
    logical: request_progression.RequestIdentity,
    ordinal: Int,
  )
}

Constructors

pub type AttemptInput {
  AttemptInput(
    attempt: AttemptIdentity,
    instruction: HttpWireInstruction,
    deadline: option.Option(Deadline),
    configuration: HostConfiguration,
  )
}

Constructors

pub type AttemptLineage {
  Root
  RetryOf(RetryAuthorization)
}

Constructors

pub type AttemptRecord {
  AttemptRecord(
    input: AttemptInput,
    lineage: AttemptLineage,
    disposition: AttemptDisposition,
    first_delivery: option.Option(DeliveredObservation),
    late: List(LateObservation),
  )
}

Constructors

pub type AttemptTokenField {
  Instruction
  DeadlineField
  Configuration
  Lineage
  Handle
}

Constructors

  • Instruction
  • DeadlineField
  • Configuration
  • Lineage
  • Handle
pub type ByteString =
  List(Int)
pub type CancelCommand {
  CancelCommand(
    attempt: AttemptIdentity,
    handle: ExecutionHandle,
    capability: CancellationCapability,
  )
}

Constructors

pub type CancellationCapability {
  CancellationCapability(identity: OpaqueEvidence)
}

Constructors

pub type CapabilityKind {
  CancellationCapabilityKind
  MonotonicClock
}

Constructors

  • CancellationCapabilityKind
  • MonotonicClock
pub type ClockBasis {
  ClockBasis(value: String)
}

Constructors

  • ClockBasis(value: String)
pub type CommandStep(a) {
  CommandReady(NetworkState, a)
  CommandRejected(NetworkState, NetworkFailure)
}

Constructors

pub type Deadline {
  Deadline(
    clock_basis: ClockBasis,
    limit: Int,
    capability: MonotonicClockCapability,
  )
}

Constructors

pub type DeliveredObservation {
  DeliveredObservation(
    delivery: Int,
    observation: AdapterObservation,
  )
}

Constructors

pub type EffectObservation {
  EffectObservation(
    attempt: AttemptIdentity,
    status: EffectStatus,
  )
}

Constructors

pub type EffectStatus {
  NoEffect(EffectWitness)
  EffectOccurred(EffectWitness)
  Unknown(UnknownEffectReason)
}

Constructors

pub type EffectWitness {
  EffectWitness(
    attempt: AttemptIdentity,
    source: EffectWitnessSource,
    evidence: OpaqueEvidence,
  )
}

Constructors

pub type EffectWitnessSource {
  Adapter
  Protocol
}

Constructors

  • Adapter
  • Protocol
pub type ExecutionHandle {
  ExecutionHandle(value: String)
}

Constructors

  • ExecutionHandle(value: String)
pub type HeaderProvenance {
  WireObserved
  LibraryObserved
  LibraryNormalized
}

Constructors

  • WireObserved
  • LibraryObserved
  • LibraryNormalized
pub type HostConfiguration {
  HostConfiguration(
    request_body_limit: Int,
    response_body_limit: Int,
    cancellation: option.Option(CancellationCapability),
    monotonic_clock: option.Option(MonotonicClockCapability),
  )
}

Constructors

pub type HostFailure {
  UnsupportedUriScheme
  InvalidHostConfiguration
  ExecutionStartFailed
  NameResolutionFailed
  ConnectionFailed
  RequestWriteFailed
  ResponseHeadersFailed
  ResponseBodyFailed
  ResponseBodyLimitExceeded
  MalformedResponse
  HeaderRepresentationUnavailable
  RequestHeaderEncodingUnavailable
  CancellationRejected
  DeadlineControlUnavailable
  Timeout(stage: HostStage, cause: HostTimeoutCause)
  HostRuntimeFailure
  HostClosed
}

Constructors

  • UnsupportedUriScheme
  • InvalidHostConfiguration
  • ExecutionStartFailed
  • NameResolutionFailed
  • ConnectionFailed
  • RequestWriteFailed
  • ResponseHeadersFailed
  • ResponseBodyFailed
  • ResponseBodyLimitExceeded
  • MalformedResponse
  • HeaderRepresentationUnavailable
  • RequestHeaderEncodingUnavailable
  • CancellationRejected
  • DeadlineControlUnavailable
  • Timeout(stage: HostStage, cause: HostTimeoutCause)
  • HostRuntimeFailure
  • HostClosed
pub type HostObservation {
  Pending(AttemptIdentity, ExecutionHandle)
  Delivered(Int, AdapterObservation)
}

Constructors

pub type HostStage {
  Start
  RequestWrite
  ResponseHeaders
  ResponseBody
  Cancel
  DeadlineStage
}

Constructors

  • Start
  • RequestWrite
  • ResponseHeaders
  • ResponseBody
  • Cancel
  • DeadlineStage
pub type HostTimeoutCause {
  LibraryReported
  SocketReported
  PoolAcquisition
  HostOperation
}

Constructors

  • LibraryReported
  • SocketReported
  • PoolAcquisition
  • HostOperation
pub type HttpWireInstruction {
  HttpWireInstruction(
    method: String,
    target: String,
    headers: List(RawHeaderField),
    body: List(Int),
  )
}

Constructors

  • HttpWireInstruction(
      method: String,
      target: String,
      headers: List(RawHeaderField),
      body: List(Int),
    )
pub type LateObservation {
  LateObservation(delivered: DeliveredObservation)
}

Constructors

pub type MonotonicClockCapability {
  MonotonicClockCapability(
    identity: OpaqueEvidence,
    clock_basis: ClockBasis,
  )
}

Constructors

pub type MonotonicClockObservation {
  MonotonicClockObservation(clock_basis: ClockBasis, value: Int)
}

Constructors

  • MonotonicClockObservation(clock_basis: ClockBasis, value: Int)
pub type NetworkFailure {
  InvalidWireInstruction(String)
  InvalidDeadline
  InvalidNetworkState(NetworkStateViolation)
  RootAttemptRequired(AttemptIdentity)
  DuplicateAttempt(AttemptIdentity)
  UnknownAttempt(AttemptIdentity)
  AttemptConditionMismatch(
    AttemptIdentity,
    AttemptCondition,
    AttemptCondition,
  )
  AttemptTokenMismatch(AttemptIdentity, AttemptTokenField)
  ObservationRelationMismatch(AttemptIdentity, ObservationField)
  RequiredCapabilityUnavailable(AttemptIdentity, CapabilityKind)
  CommandAlreadyIssued(AttemptIdentity)
  IdentityMismatch(AttemptIdentity, AttemptIdentity)
  HandleMismatch(ExecutionHandle, ExecutionHandle)
  ClockBasisMismatch(ClockBasis, ClockBasis)
  DeadlineNotReached(Deadline, MonotonicClockObservation)
  DeliveryOrderViolation(AttemptIdentity, Int, Int)
  ConflictingDelivery(
    AttemptIdentity,
    Int,
    AdapterObservation,
    AdapterObservation,
  )
  MalformedAdapterObservation
  Host(NetworkHostFailure)
  RetryNotPermitted(AttemptIdentity)
  RetryIdentityMismatch(
    request_progression.RequestIdentity,
    request_progression.RequestIdentity,
  )
  RetryParentMismatch(AttemptIdentity, AttemptIdentity)
  RetryParentNotSettled(AttemptIdentity)
  RetryOrderViolation(AttemptIdentity, AttemptIdentity)
  RetryAuthorizationAlreadyUsed(RetryAuthorization)
  EffectWitnessMissing(AttemptIdentity)
  EffectKnowledgeConflict(AttemptIdentity)
}

Constructors

pub type NetworkHostFailure {
  NetworkHostFailure(
    attempt: AttemptIdentity,
    stage: HostStage,
    configuration: HostConfiguration,
    cause: HostFailure,
  )
}

Constructors

pub type NetworkOutcome {
  Response(RawHttpResponse, HeaderProvenance)
  Failed(NetworkHostFailure)
  Cancelled
  DeadlineExceeded(Deadline, MonotonicClockObservation)
}

Constructors

pub type NetworkState {
  NetworkState(attempts: List(AttemptRecord))
}

Constructors

pub type NetworkStateViolation {
  DuplicateAttemptKey(AttemptIdentity)
  NonRootFirstAttempt(AttemptIdentity)
  OrdinalGap(AttemptIdentity)
  LineageMismatch(AttemptIdentity)
  RetryAuthorizationReuse(RetryAuthorization)
  DispositionEvidenceMismatch(AttemptIdentity)
  DeliveryLogMismatch(AttemptIdentity)
}

Constructors

pub type NetworkStep {
  StartedStep(NetworkState, StartedAttempt)
  PendingStep(NetworkState, StartedAttempt)
  TerminalStep(NetworkState, SettledAttempt)
  LateStep(NetworkState, SettledAttempt, LateObservation)
  DuplicateStep(NetworkState, AttemptIdentity, Int)
  NetworkRejected(NetworkState, NetworkFailure)
}

Constructors

pub type NetworkTerminal {
  NetworkTerminal(outcome: NetworkOutcome, effect: EffectStatus)
}

Constructors

pub type ObservationField {
  FailureConfiguration
  FailureStage
  DeadlineValue
  ClockBasisValue
  ClockObservationValue
  EffectWitnessValue
}

Constructors

  • FailureConfiguration
  • FailureStage
  • DeadlineValue
  • ClockBasisValue
  • ClockObservationValue
  • EffectWitnessValue
pub type OpaqueEvidence {
  OpaqueEvidence(value: String)
}

Constructors

  • OpaqueEvidence(value: String)
pub type PrepareStep {
  PreparedResult(NetworkState, PreparedAttempt)
  PrepareRejected(NetworkState, NetworkFailure)
}

Constructors

pub type PreparedAttempt {
  PreparedAttempt(input: AttemptInput, lineage: AttemptLineage)
}

Constructors

pub type RawHeaderField {
  RawHeaderField(name: String, value: List(Int))
}

Constructors

  • RawHeaderField(name: String, value: List(Int))
pub type RawHttpResponse {
  RawHttpResponse(
    status: Int,
    headers: List(RawHeaderField),
    body: List(Int),
  )
}

Constructors

  • RawHttpResponse(
      status: Int,
      headers: List(RawHeaderField),
      body: List(Int),
    )
pub type ReadStateStep {
  Read(NetworkState)
  ReadRejected(NetworkState, NetworkFailure)
}

Constructors

pub type RetryAuthorization {
  RetryAuthorization(
    logical: request_progression.RequestIdentity,
    from: AttemptIdentity,
    next: AttemptIdentity,
    protocol_evidence: OpaqueEvidence,
  )
}

Constructors

pub type RetryRequest {
  RetryRequest(
    permission: RetryPermission,
    instruction: HttpWireInstruction,
    deadline: option.Option(Deadline),
    configuration: HostConfiguration,
  )
}

Constructors

pub type SendCommand {
  SendCommand(prepared: PreparedAttempt)
}

Constructors

pub type SettledAttempt {
  SettledAttempt(
    prepared: PreparedAttempt,
    handle: option.Option(ExecutionHandle),
    terminal: NetworkTerminal,
  )
}

Constructors

pub type SourceSequence {
  NoSource
  Source(Int)
}

Constructors

  • NoSource
  • Source(Int)
pub type StartObservation {
  StartedObservation(AttemptIdentity, ExecutionHandle)
  StartFailed(NetworkHostFailure, EffectStatus)
}

Constructors

pub type StartedAttempt {
  StartedAttempt(
    prepared: PreparedAttempt,
    handle: ExecutionHandle,
  )
}

Constructors

pub type StateStep {
  Applied(NetworkState)
  StateRejected(NetworkState, NetworkFailure)
}

Constructors

pub type UnknownEffectReason {
  NoResponse
  CancellationReason
  DeadlineReason
  HostFailure
  ProtocolWitnessMissing
  LateSignal
}

Constructors

  • NoResponse
  • CancellationReason
  • DeadlineReason
  • HostFailure
  • ProtocolWitnessMissing
  • LateSignal

Values

pub fn annotate_effect(
  state: NetworkState,
  observation: EffectObservation,
) -> StateStep
pub fn cancel_command(
  state: NetworkState,
  started: StartedAttempt,
) -> CommandStep(CancelCommand)
pub fn empty_state() -> NetworkState
pub fn observe(
  state: NetworkState,
  observation: HostObservation,
) -> NetworkStep
pub fn observe_start(
  state: NetworkState,
  prepared: PreparedAttempt,
  observation: StartObservation,
) -> NetworkStep
pub fn prepare(
  state: NetworkState,
  input: AttemptInput,
) -> PrepareStep
pub fn read_network_state(state: NetworkState) -> ReadStateStep
pub fn request_identity(
  kind: String,
  provenance: String,
  revision: Int,
) -> request_progression.RequestIdentity
pub fn retry(
  state: NetworkState,
  request: RetryRequest,
) -> PrepareStep
pub fn send_command(
  state: NetworkState,
  prepared: PreparedAttempt,
) -> CommandStep(SendCommand)
pub fn valid_state(state: NetworkState) -> Bool
✨ Search Document