def session.call.decision
mylsm-lsm-store@0.6.0.1 · src/coordinator/Client.bend:408
import mylsm-lsm-store@0.6.0.1/src/coordinator/Client.bend as Client
import Base
import mylsm-lsm-store@0.6.0.1/src/coordinator/ClientPolicy.bend as Policy
import mylsm-lsm-store@0.6.0.1/src/coordinator/Protocol.bend as Protocol
import bend-kit-bytes@0.3.2.0/bytes.bend as Bytes
408def session.call.decision(
409 endpoint: String,
410 generation: U32,
411 operation: U32,
412 payload: Bytes.Bytes,
413 decision: Policy.RequestDecision
414) -> IO(Session & Result<&1, &1, Error, Protocol.Response>):
415 match decision:
416 case Policy.RequestAssigned{id, next}:
417 session.call.ready(string.clone.pair(endpoint),
418 Protocol.u32.duplicate.triple(generation), id, operation, next, payload)
419 case Policy.RequestIdsExhausted{}:
420 IO.pure(Session & Result<&1, &1, Error, Protocol.Response>,
421 (Session{endpoint, generation, Policy.RequestExhausted{}},
422 Fail{RequestIdsExhausted{}}))