Files
2026-02-27 16:37:15 +08:00

52 lines
1.0 KiB
Go

package parser
import (
"fmt"
types "github.com/thloyi/pump-parser"
)
type PumpHandler struct {
callback func(*types.Tx)
}
func NewPumpHandler(cb func(*types.Tx)) *PumpHandler {
return &PumpHandler{
callback: func(tx *types.Tx) {
//tx.Check(tx2)
cb(tx)
},
}
}
func (h *PumpHandler) HandleMessage(rawTx *types.RawTx) {
if rawTx.Meta.Err != nil {
// Notify the channel about the failed transaction
var parsedTx = &types.Tx{}
parsedTx.SetRawTx(rawTx)
err := parsedTx.Parser()
if err != nil {
fmt.Printf("parser failed tx error: %s, block: %d tx: %s\n", err, rawTx.Slot, rawTx.TxHash())
return
}
h.callback(parsedTx)
return
}
var parsedTx = &types.Tx{}
parsedTx.SetRawTx(rawTx)
err := parsedTx.Parser()
if err != nil {
fmt.Printf("parser error: %s, block: %d tx: %s\n", err, rawTx.Slot, rawTx.TxHash())
return
}
if len(parsedTx.Swaps) == 0 {
// no swap, ignore
return
}
// fmt.Println(parsedTx.GetTxHash(), len(parsedTx.Swaps))
if h.callback != nil {
h.callback(parsedTx)
}
}