Skip to main content

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
}