def event_validate_values

bendvy-ecs-core@0.1.0.4 · ordinary_reader_stream_parameter.bend:94

import bendvy-ecs-core@0.1.0.4/ordinary_reader_stream_parameter.bend as OrdinaryReaderStreamParameter
import Base
import bendvy-ecs-core@0.1.0.4/reader_parameter.bend as RP
import bendvy-ecs-core@0.1.0.4/world.bend as W
import bendvy-ecs-core@0.1.0.4/event_stream.bend as Stream
import bendvy-ecs-core@0.1.0.4/event_family_routing.bend as Route
import bendvy-ecs-core@0.1.0.4/event_notice_runtime.bend as Mixed
import bendvy-ecs-core@0.1.0.4/relation_commands.bend as Notice
import bendvy-ecs-core@0.1.0.4/ordinary_event_declaration.bend as Event

94def event_validate_values(~S:Data,~C:Type,~R:Type,~P:Data,~E:Data,~F:Type,~H:Type,
95  ~take:F -> F & Stream.Stream<S,E>,
96  ~put:F -> Stream.Stream<S,E> -> F,
97  ~declaration:Event.Declaration<S,E>,tick:Nat,facts:RP.RegistrationFacts,
98  reader:Route.Reader<S,E,F,take,put>,
99  world:W.World<S,C,R,Notice.Notice<S,P>>,registered:Bool,state:Mixed.State<S,P,F,H>,domainMatches:Bool) -> Route.Runtime<S,C,R,Notice.Notice<S,P>,Mixed.State<S,P,F,H>> & (EventOwner<S,C,R,P,E,F,H,take,put> & Bool):
100  match facts:
101    case RP.RegistrationFacts{+expectedNamespace,+registryIdExpected,_,+access}:
102      match reader:
103        case Route.Reader{+namespace,+readerId,+registryId}:
104          +valid=Bool.and(event_readable(~S,~E,declaration),
105            Bool.and(registered,Bool.and(access_subset(event_access(~S,~E,declaration),access),
106              Bool.and(U32.is_eq(namespace,expectedNamespace),
107                Bool.and(U32.is_gt(readerId,0),
108                  Bool.and(U32.is_eq(registryId,registryIdExpected),domainMatches))))))
109          (Route.Runtime{world,state,tick},(EventOwner{facts,reader},valid))

Uses (19)

Used by (1)