tendermint/rpc/core/mempool.go

42 lines
1.1 KiB
Go
Raw Normal View History

package core
import (
"fmt"
ctypes "github.com/tendermint/tendermint/rpc/core/types"
2015-04-01 17:30:16 -07:00
"github.com/tendermint/tendermint/types"
2016-02-08 00:48:58 -08:00
tmsp "github.com/tendermint/tmsp/types"
)
//-----------------------------------------------------------------------------
2016-02-08 00:48:58 -08:00
// NOTE: tx must be signed
func BroadcastTxAsync(tx types.Tx) (*ctypes.ResultBroadcastTx, error) {
err := mempoolReactor.BroadcastTx(tx, nil)
if err != nil {
return nil, fmt.Errorf("Error broadcasting transaction: %v", err)
}
2015-11-01 11:34:08 -08:00
return &ctypes.ResultBroadcastTx{}, nil
}
2016-02-08 00:48:58 -08:00
// Note: tx must be signed
func BroadcastTxSync(tx types.Tx) (*ctypes.ResultBroadcastTx, error) {
resCh := make(chan *tmsp.Response, 1)
2016-02-08 00:48:58 -08:00
err := mempoolReactor.BroadcastTx(tx, func(res *tmsp.Response) {
resCh <- res
})
if err != nil {
return nil, fmt.Errorf("Error broadcasting transaction: %v", err)
}
res := <-resCh
return &ctypes.ResultBroadcastTx{
Code: res.Code,
Data: res.Data,
Log: res.Log,
}, nil
}
func UnconfirmedTxs() (*ctypes.ResultUnconfirmedTxs, error) {
2016-03-06 15:08:32 -08:00
txs := mempoolReactor.Mempool.Reap(0)
2016-02-14 17:00:33 -08:00
return &ctypes.ResultUnconfirmedTxs{len(txs), txs}, nil
2015-04-25 13:26:36 -07:00
}