mirror of https://github.com/ethereum/go-ethereum
parent
c6c443385b
commit
87b62f75a7
@ -0,0 +1,67 @@ |
|||||||
|
package api |
||||||
|
|
||||||
|
import ( |
||||||
|
"github.com/ethereum/go-ethereum/eth" |
||||||
|
"github.com/ethereum/go-ethereum/rpc/codec" |
||||||
|
"github.com/ethereum/go-ethereum/rpc/shared" |
||||||
|
"github.com/ethereum/go-ethereum/xeth" |
||||||
|
) |
||||||
|
|
||||||
|
var ( |
||||||
|
// mapping between methods and handlers
|
||||||
|
txpoolMapping = map[string]txpoolhandler{ |
||||||
|
"txpool_status": (*txPoolApi).Status, |
||||||
|
} |
||||||
|
) |
||||||
|
|
||||||
|
// net callback handler
|
||||||
|
type txpoolhandler func(*txPoolApi, *shared.Request) (interface{}, error) |
||||||
|
|
||||||
|
// txpool api provider
|
||||||
|
type txPoolApi struct { |
||||||
|
xeth *xeth.XEth |
||||||
|
ethereum *eth.Ethereum |
||||||
|
methods map[string]txpoolhandler |
||||||
|
codec codec.ApiCoder |
||||||
|
} |
||||||
|
|
||||||
|
// create a new txpool api instance
|
||||||
|
func NewTxPoolApi(xeth *xeth.XEth, eth *eth.Ethereum, coder codec.Codec) *txPoolApi { |
||||||
|
return &txPoolApi{ |
||||||
|
xeth: xeth, |
||||||
|
ethereum: eth, |
||||||
|
methods: txpoolMapping, |
||||||
|
codec: coder.New(nil), |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// collection with supported methods
|
||||||
|
func (self *txPoolApi) Methods() []string { |
||||||
|
methods := make([]string, len(self.methods)) |
||||||
|
i := 0 |
||||||
|
for k := range self.methods { |
||||||
|
methods[i] = k |
||||||
|
i++ |
||||||
|
} |
||||||
|
return methods |
||||||
|
} |
||||||
|
|
||||||
|
// Execute given request
|
||||||
|
func (self *txPoolApi) Execute(req *shared.Request) (interface{}, error) { |
||||||
|
if callback, ok := self.methods[req.Method]; ok { |
||||||
|
return callback(self, req) |
||||||
|
} |
||||||
|
|
||||||
|
return nil, shared.NewNotImplementedError(req.Method) |
||||||
|
} |
||||||
|
|
||||||
|
func (self *txPoolApi) Name() string { |
||||||
|
return txPoolApiName |
||||||
|
} |
||||||
|
|
||||||
|
func (self *txPoolApi) Status(req *shared.Request) (interface{}, error) { |
||||||
|
return map[string]int{ |
||||||
|
"pending": self.ethereum.TxPool().GetTransactions().Len(), |
||||||
|
"queued": self.ethereum.TxPool().GetQueuedTransactions().Len(), |
||||||
|
}, nil |
||||||
|
} |
@ -0,0 +1,18 @@ |
|||||||
|
package api |
||||||
|
|
||||||
|
const TxPool_JS = ` |
||||||
|
web3._extend({ |
||||||
|
property: 'txpool', |
||||||
|
methods: |
||||||
|
[ |
||||||
|
], |
||||||
|
properties: |
||||||
|
[ |
||||||
|
new web3._extend.Property({ |
||||||
|
name: 'status', |
||||||
|
getter: 'txpool_status', |
||||||
|
outputFormatter: function(obj) { return obj; } |
||||||
|
}) |
||||||
|
] |
||||||
|
}); |
||||||
|
` |
Loading…
Reference in new issue