cosmos-sdk/schema/appdata/packet.go

62 lines
1.2 KiB
Go

package appdata
// Packet is the interface that all listener data structures implement so that this data can be "packetized"
// and processed in a stream, possibly asynchronously.
type Packet interface {
apply(*Listener) error
}
// SendPacket sends a packet to a listener invoking the appropriate callback for this packet if one is registered.
func (l Listener) SendPacket(p Packet) error {
return p.apply(&l)
}
func (m ModuleInitializationData) apply(l *Listener) error {
if l.InitializeModuleData == nil {
return nil
}
return l.InitializeModuleData(m)
}
func (b StartBlockData) apply(l *Listener) error {
if l.StartBlock == nil {
return nil
}
return l.StartBlock(b)
}
func (t TxData) apply(l *Listener) error {
if l.OnTx == nil {
return nil
}
return l.OnTx(t)
}
func (e EventData) apply(l *Listener) error {
if l.OnEvent == nil {
return nil
}
return l.OnEvent(e)
}
func (k KVPairData) apply(l *Listener) error {
if l.OnKVPair == nil {
return nil
}
return l.OnKVPair(k)
}
func (o ObjectUpdateData) apply(l *Listener) error {
if l.OnObjectUpdate == nil {
return nil
}
return l.OnObjectUpdate(o)
}
func (c CommitData) apply(l *Listener) error {
if l.Commit == nil {
return nil
}
return l.Commit(c)
}