necoherence/dynamic_admission

Types

pub type AdmissionDecision {
  Submitted(
    state: DynamicAdmissionState,
    accepted: request_progression.Accepted,
  )
  Started(
    state: DynamicAdmissionState,
    result: request_progression.StartDecisionResult,
  )
  Coalesced(
    state: DynamicAdmissionState,
    identity: request_progression.RequestIdentity,
  )
}

Constructors

pub type AdmissionProvenance {
  AdmissionProvenance(
    future_uses: List(request_progression.RequestIdentity),
    outstanding_signals: List(AdmissionSignal),
  )
}

Constructors

pub type AdmissionSignal {
  AdmissionSignal(
    identity: request_progression.RequestIdentity,
    handle: request_progression.ExecutionHandle,
    kind: SignalKind,
  )
}

Constructors

pub type CapacityObservation {
  CapacityObservation(
    observed: request_progression.ResourceBudget,
    observed_at: Int,
  )
}

Constructors

pub type CoalescingWitness {
  CoalescedRequest(identity: request_progression.RequestIdentity)
  NotCoalesced(reason: String)
}

Constructors

pub type DynamicAdmissionFailure {
  CapacityObservationUnavailable(age: Int, max_age: Int)
  ResourceCoordinateMismatch(
    configured_resource: String,
    observed_resource: String,
  )
  ConfiguredSafetyLimitExceeded(
    resource: String,
    occupied: Int,
    allowed: Int,
  )
  MeaningDenied(
    identity: request_progression.RequestIdentity,
    reason: request_progression.PermissionDenial,
  )
  PermissionIdentityMismatch(
    request_identity: request_progression.RequestIdentity,
    permission_identity: request_progression.RequestIdentity,
  )
  AdapterBindingUnavailable(
    identity: request_progression.RequestIdentity,
  )
  BindingSelectionMismatch(
    identity: request_progression.RequestIdentity,
  )
  ProgressionSubmitFailure(
    failure: request_progression.SubmitFailure,
  )
  ProgressionStartFailure(
    failure: request_progression.StartDecisionFailure,
  )
  ProvenanceRetentionRequired(
    identity: request_progression.RequestIdentity,
  )
  AdmissionUnknownRequest(
    identity: request_progression.RequestIdentity,
  )
  AdmissionRequestNotTerminal(
    identity: request_progression.RequestIdentity,
  )
}

Constructors

pub type DynamicAdmissionInput {
  DynamicAdmissionInput(
    state: DynamicAdmissionState,
    request: request_progression.RequestInput,
    environment_specification: EnvironmentSpecification,
    capacity_observation: CapacityObservation,
    observed_at: Int,
    start: option.Option(request_progression.CostSelection),
  )
}

Constructors

pub type DynamicAdmissionResult {
  DynamicAdmissionResult(
    effective_budget: request_progression.ResourceBudget,
    admission_decision: AdmissionDecision,
    future_use_set: FutureUseSet,
    outstanding_signal_set: OutstandingSignalSet,
    provenance_erasure_witness: option.Option(
      ProvenanceErasureWitness,
    ),
    coalescing_witness: CoalescingWitness,
  )
}

Constructors

pub type DynamicAdmissionState {
  DynamicAdmissionState(
    progression: request_progression.RequestProgressionSnapshot,
    configured_safety_limit: request_progression.ResourceBudget,
    provenance: AdmissionProvenance,
  )
}

Constructors

pub type EnvironmentSpecification {
  EnvironmentSpecification(max_observation_age: Int)
}

Constructors

  • EnvironmentSpecification(max_observation_age: Int)
pub type FutureUseSet {
  FutureUseSet(
    identities: List(request_progression.RequestIdentity),
  )
}

Constructors

pub type OutstandingSignalSet {
  OutstandingSignalSet(signals: List(AdmissionSignal))
}

Constructors

pub type ProvenanceErasureWitness {
  Erased(identity: request_progression.RequestIdentity)
  Retained(
    identity: request_progression.RequestIdentity,
    reason: String,
  )
}

Constructors

pub type SignalKind {
  PendingCompletion
  PendingCancellation
}

Constructors

  • PendingCompletion
  • PendingCancellation

Values

pub fn admit_dynamic_request(
  input: DynamicAdmissionInput,
) -> core.Outcome(
  DynamicAdmissionResult,
  DynamicAdmissionFailure,
  boundary_c,
  boundary_p,
)
✨ Search Document