Emitting Log Events
Coco implements emitting log events by defining an event and by calling emit
command to emit the event.
Event is registered using event
keyword, the body of the event contains first topic
(up to 4 topics are allowed) and up to 256 field
statements. Only primitive types in field & topic.
Events can be emitted directly by calling emit
with the event object.
Alternatively, a class can also be emitted, if it implements __event__
methods. The method has to return an event object.
Events are always logged in some context.
emit Evt{…}
logs to logic context by default; emit Evt{…} -> ActorId
logs to actor context.
coco Emit
class Reg:
field name String
field counter U64
method __event__() -> (ev RegisterEvent):
ev = RegisterEvent{
ename: self.name,
ecounter: self.counter
}
event RegisterEvent:
topic ename String
field ecounter U64
endpoint invoke E():
memory x Map[String][]Reg
memory r = Reg{name: "Chetna", counter: 10}
emit r -> Sender
endpoint invoke EmitDirect():
emit RegisterEvent {
ename: "Chetna",
ecounter: 11
}