github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/execution/exec/event_sink.go (about) 1 package exec 2 3 import ( 4 "github.com/hyperledger/burrow/execution/errors" 5 ) 6 7 type EventSink interface { 8 Call(call *CallEvent, exception *errors.Exception) error 9 Log(log *LogEvent) error 10 Print(print *PrintEvent) error 11 } 12 13 type noopEventSink struct { 14 } 15 16 func NewNoopEventSink() *noopEventSink { 17 return &noopEventSink{} 18 } 19 20 func (es *noopEventSink) Call(call *CallEvent, exception *errors.Exception) error { 21 return nil 22 } 23 24 func (es *noopEventSink) Log(log *LogEvent) error { 25 return nil 26 } 27 28 func (es *noopEventSink) Print(print *PrintEvent) error { 29 return nil 30 } 31 32 type logFreeEventSink struct { 33 EventSink 34 } 35 36 func NewLogFreeEventSink(eventSink EventSink) *logFreeEventSink { 37 return &logFreeEventSink{ 38 EventSink: eventSink, 39 } 40 } 41 42 func (esc *logFreeEventSink) Log(log *LogEvent) error { 43 return errors.Errorf(errors.Codes.IllegalWrite, 44 "Log emitted from contract %v, but current call should be log-free", log.Address) 45 }