package handler import ( "ripple/helpers" "ripple/lockstep" "ripple/services" "ripple/state" "ripple/types" ) type CounterpartHandlers struct { st *state.State lockstep *lockstep.Lockstep pm *services.PaymentManager } func NewCounterpartHandlers( st *state.State, lockstep *lockstep.Lockstep, pm *services.PaymentManager, ) *CounterpartHandlers { return &CounterpartHandlers{ st: st, lockstep: lockstep, pm: pm, } } func (h *CounterpartHandlers) FindPath(args []byte) { h.pm.ForwardFindPath(h.st.Memory.GetPaymentID()) } func (h *CounterpartHandlers) CommitPayment(args []byte) { paymentID := h.st.Memory.GetPaymentID() pf, ok := h.st.Memory.GetPathfinding(paymentID) if !ok { return } if pf.Counterpart == (types.UserIdentifier{}) || pf.Amount >= 0 || !pf.Commit { return } h.lockstep.Enqueue(pf.Outgoing, helpers.BuildInitPayment(paymentID, uint64(-pf.Amount), pf.PenaltyRate, uint64(pf.Hops)*pf.Fee, pf.Tax)) } func (h *CounterpartHandlers) SealPayment(args []byte) { paymentID := h.st.Memory.GetPaymentID() payment, ok := h.st.Storage.Payments[paymentID] if !ok || payment.Incoming != (types.UserIdentifier{}) || payment.Cancelled() { return } h.lockstep.Enqueue(payment.Outgoing, helpers.BuildSealPayment(paymentID, payment)) }