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  }