package core
|
|
|
|
import (
|
|
"fmt"
|
|
ctypes "github.com/tendermint/tendermint/rpc/core/types"
|
|
"github.com/tendermint/tendermint/types"
|
|
tmsp "github.com/tendermint/tmsp/types"
|
|
)
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// 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)
|
|
}
|
|
return &ctypes.ResultBroadcastTx{}, nil
|
|
}
|
|
|
|
// Note: tx must be signed
|
|
func BroadcastTxSync(tx types.Tx) (*ctypes.ResultBroadcastTx, error) {
|
|
resCh := make(chan *tmsp.Response, 1)
|
|
err := mempoolReactor.BroadcastTx(tx, func(res *tmsp.Response) {
|
|
resCh <- res
|
|
})
|
|
if err != nil {
|
|
return nil, fmt.Errorf("Error broadcasting transaction: %v", err)
|
|
}
|
|
res := <-resCh
|
|
r := res.GetCheckTx()
|
|
return &ctypes.ResultBroadcastTx{
|
|
Code: r.Code,
|
|
Data: r.Data,
|
|
Log: r.Log,
|
|
}, nil
|
|
}
|
|
|
|
func UnconfirmedTxs() (*ctypes.ResultUnconfirmedTxs, error) {
|
|
txs := mempoolReactor.Mempool.Reap(0)
|
|
return &ctypes.ResultUnconfirmedTxs{len(txs), txs}, nil
|
|
}
|
|
|
|
func NumUnconfirmedTxs() (*ctypes.ResultUnconfirmedTxs, error) {
|
|
return &ctypes.ResultUnconfirmedTxs{N: mempoolReactor.Mempool.Size()}, nil
|
|
}
|