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