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