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
-
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, )
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
-
Prepared -
CommandIssued -
Started(ExecutionHandle) -
Settled(option.Option(ExecutionHandle), NetworkTerminal)
pub type AttemptIdentity {
AttemptIdentity(
logical: request_progression.RequestIdentity,
ordinal: Int,
)
}
Constructors
-
AttemptIdentity( logical: request_progression.RequestIdentity, ordinal: Int, )
pub type AttemptInput {
AttemptInput(
attempt: AttemptIdentity,
instruction: HttpWireInstruction,
deadline: option.Option(Deadline),
configuration: HostConfiguration,
)
}
Constructors
-
AttemptInput( attempt: AttemptIdentity, instruction: HttpWireInstruction, deadline: option.Option(Deadline), configuration: HostConfiguration, )
pub type AttemptLineage {
Root
RetryOf(RetryAuthorization)
}
Constructors
-
Root -
RetryOf(RetryAuthorization)
pub type AttemptRecord {
AttemptRecord(
input: AttemptInput,
lineage: AttemptLineage,
disposition: AttemptDisposition,
first_delivery: option.Option(DeliveredObservation),
late: List(LateObservation),
)
}
Constructors
-
AttemptRecord( input: AttemptInput, lineage: AttemptLineage, disposition: AttemptDisposition, first_delivery: option.Option(DeliveredObservation), late: List(LateObservation), )
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
-
CancelCommand( attempt: AttemptIdentity, handle: ExecutionHandle, capability: CancellationCapability, )
pub type CancellationCapability {
CancellationCapability(identity: OpaqueEvidence)
}
Constructors
-
CancellationCapability(identity: OpaqueEvidence)
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
-
CommandReady(NetworkState, a) -
CommandRejected(NetworkState, NetworkFailure)
pub type Deadline {
Deadline(
clock_basis: ClockBasis,
limit: Int,
capability: MonotonicClockCapability,
)
}
Constructors
-
Deadline( clock_basis: ClockBasis, limit: Int, capability: MonotonicClockCapability, )
pub type DeliveredObservation {
DeliveredObservation(
delivery: Int,
observation: AdapterObservation,
)
}
Constructors
-
DeliveredObservation( delivery: Int, observation: AdapterObservation, )
pub type EffectObservation {
EffectObservation(
attempt: AttemptIdentity,
status: EffectStatus,
)
}
Constructors
-
EffectObservation(attempt: AttemptIdentity, status: EffectStatus)
pub type EffectStatus {
NoEffect(EffectWitness)
EffectOccurred(EffectWitness)
Unknown(UnknownEffectReason)
}
Constructors
-
NoEffect(EffectWitness) -
EffectOccurred(EffectWitness) -
Unknown(UnknownEffectReason)
pub type EffectWitness {
EffectWitness(
attempt: AttemptIdentity,
source: EffectWitnessSource,
evidence: OpaqueEvidence,
)
}
Constructors
-
EffectWitness( attempt: AttemptIdentity, source: EffectWitnessSource, evidence: OpaqueEvidence, )
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
-
HostConfiguration( request_body_limit: Int, response_body_limit: Int, cancellation: option.Option(CancellationCapability), monotonic_clock: option.Option(MonotonicClockCapability), )
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
-
Pending(AttemptIdentity, ExecutionHandle) -
Delivered(Int, AdapterObservation)
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
-
LateObservation(delivered: DeliveredObservation)
pub type MonotonicClockCapability {
MonotonicClockCapability(
identity: OpaqueEvidence,
clock_basis: ClockBasis,
)
}
Constructors
-
MonotonicClockCapability( identity: OpaqueEvidence, clock_basis: ClockBasis, )
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
-
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)
pub type NetworkHostFailure {
NetworkHostFailure(
attempt: AttemptIdentity,
stage: HostStage,
configuration: HostConfiguration,
cause: HostFailure,
)
}
Constructors
-
NetworkHostFailure( attempt: AttemptIdentity, stage: HostStage, configuration: HostConfiguration, cause: HostFailure, )
pub type NetworkOutcome {
Response(RawHttpResponse, HeaderProvenance)
Failed(NetworkHostFailure)
Cancelled
DeadlineExceeded(Deadline, MonotonicClockObservation)
}
Constructors
-
Response(RawHttpResponse, HeaderProvenance) -
Failed(NetworkHostFailure) -
Cancelled -
DeadlineExceeded(Deadline, MonotonicClockObservation)
pub type NetworkState {
NetworkState(attempts: List(AttemptRecord))
}
Constructors
-
NetworkState(attempts: List(AttemptRecord))
pub type NetworkStateViolation {
DuplicateAttemptKey(AttemptIdentity)
NonRootFirstAttempt(AttemptIdentity)
OrdinalGap(AttemptIdentity)
LineageMismatch(AttemptIdentity)
RetryAuthorizationReuse(RetryAuthorization)
DispositionEvidenceMismatch(AttemptIdentity)
DeliveryLogMismatch(AttemptIdentity)
}
Constructors
-
DuplicateAttemptKey(AttemptIdentity) -
NonRootFirstAttempt(AttemptIdentity) -
OrdinalGap(AttemptIdentity) -
LineageMismatch(AttemptIdentity) -
RetryAuthorizationReuse(RetryAuthorization) -
DispositionEvidenceMismatch(AttemptIdentity) -
DeliveryLogMismatch(AttemptIdentity)
pub type NetworkStep {
StartedStep(NetworkState, StartedAttempt)
PendingStep(NetworkState, StartedAttempt)
TerminalStep(NetworkState, SettledAttempt)
LateStep(NetworkState, SettledAttempt, LateObservation)
DuplicateStep(NetworkState, AttemptIdentity, Int)
NetworkRejected(NetworkState, NetworkFailure)
}
Constructors
-
StartedStep(NetworkState, StartedAttempt) -
PendingStep(NetworkState, StartedAttempt) -
TerminalStep(NetworkState, SettledAttempt) -
LateStep(NetworkState, SettledAttempt, LateObservation) -
DuplicateStep(NetworkState, AttemptIdentity, Int) -
NetworkRejected(NetworkState, NetworkFailure)
pub type NetworkTerminal {
NetworkTerminal(outcome: NetworkOutcome, effect: EffectStatus)
}
Constructors
-
NetworkTerminal(outcome: NetworkOutcome, effect: EffectStatus)
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
-
PreparedResult(NetworkState, PreparedAttempt) -
PrepareRejected(NetworkState, NetworkFailure)
pub type PreparedAttempt {
PreparedAttempt(input: AttemptInput, lineage: AttemptLineage)
}
Constructors
-
PreparedAttempt(input: AttemptInput, lineage: AttemptLineage)
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
-
Read(NetworkState) -
ReadRejected(NetworkState, NetworkFailure)
pub type RequestIdentity =
request_progression.RequestIdentity
pub type RetryAuthorization {
RetryAuthorization(
logical: request_progression.RequestIdentity,
from: AttemptIdentity,
next: AttemptIdentity,
protocol_evidence: OpaqueEvidence,
)
}
Constructors
-
RetryAuthorization( logical: request_progression.RequestIdentity, from: AttemptIdentity, next: AttemptIdentity, protocol_evidence: OpaqueEvidence, )
pub type RetryPermission {
RetryAllowed(RetryAuthorization)
RetryDenied(
request_progression.RequestIdentity,
AttemptIdentity,
OpaqueEvidence,
)
}
Constructors
-
RetryAllowed(RetryAuthorization) -
RetryDenied( request_progression.RequestIdentity, AttemptIdentity, OpaqueEvidence, )
pub type RetryRequest {
RetryRequest(
permission: RetryPermission,
instruction: HttpWireInstruction,
deadline: option.Option(Deadline),
configuration: HostConfiguration,
)
}
Constructors
-
RetryRequest( permission: RetryPermission, instruction: HttpWireInstruction, deadline: option.Option(Deadline), configuration: HostConfiguration, )
pub type SendCommand {
SendCommand(prepared: PreparedAttempt)
}
Constructors
-
SendCommand(prepared: PreparedAttempt)
pub type SettledAttempt {
SettledAttempt(
prepared: PreparedAttempt,
handle: option.Option(ExecutionHandle),
terminal: NetworkTerminal,
)
}
Constructors
-
SettledAttempt( prepared: PreparedAttempt, handle: option.Option(ExecutionHandle), terminal: NetworkTerminal, )
pub type SourceSequence {
NoSource
Source(Int)
}
Constructors
-
NoSource -
Source(Int)
pub type StartObservation {
StartedObservation(AttemptIdentity, ExecutionHandle)
StartFailed(NetworkHostFailure, EffectStatus)
}
Constructors
-
StartedObservation(AttemptIdentity, ExecutionHandle) -
StartFailed(NetworkHostFailure, EffectStatus)
pub type StartedAttempt {
StartedAttempt(
prepared: PreparedAttempt,
handle: ExecutionHandle,
)
}
Constructors
-
StartedAttempt( prepared: PreparedAttempt, handle: ExecutionHandle, )
pub type StateStep {
Applied(NetworkState)
StateRejected(NetworkState, NetworkFailure)
}
Constructors
-
Applied(NetworkState) -
StateRejected(NetworkState, NetworkFailure)
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 lookup(
state: NetworkState,
key: AttemptIdentity,
) -> option.Option(AttemptRecord)
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