mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
les: more lespay API calls
This commit is contained in:
parent
936328ff68
commit
c52605cac9
2 changed files with 80 additions and 4 deletions
59
les/api.go
59
les/api.go
|
|
@ -453,13 +453,66 @@ func (api *PrivateLespayAPI) Connection(ctx context.Context, remote bool, node s
|
|||
params := tsConnectionParams{requestedCapacity, stayConnected, paymentModule, setCap}
|
||||
enc, _ := rlp.EncodeToBytes(¶ms)
|
||||
var resEnc []byte
|
||||
fmt.Println("makeCall", remote, node, enc)
|
||||
resEnc, err = api.makeCall(ctx, remote, node, append([]byte{tsConnection}, enc...))
|
||||
if err != nil {
|
||||
fmt.Println("makeCall err", err)
|
||||
return
|
||||
}
|
||||
err = rlp.DecodeBytes(resEnc, &results)
|
||||
fmt.Println("decode err", err)
|
||||
return
|
||||
}
|
||||
|
||||
func (api *PrivateLespayAPI) Deposit(ctx context.Context, remote bool, node string, paymentModule string, proofOfPayment []byte) (results tsDepositResults, err error) {
|
||||
params := tsDepositParams{paymentModule, proofOfPayment}
|
||||
enc, _ := rlp.EncodeToBytes(¶ms)
|
||||
var resEnc []byte
|
||||
resEnc, err = api.makeCall(ctx, remote, node, append([]byte{tsDeposit}, enc...))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = rlp.DecodeBytes(resEnc, &results)
|
||||
return
|
||||
}
|
||||
|
||||
func (api *PrivateLespayAPI) BuyTokens(ctx context.Context, remote bool, node string, maxSpend, minReceive uint64, spendAll bool) (results tsBuyTokensResults, err error) {
|
||||
params := tsBuyTokensParams{maxSpend, minReceive, spendAll}
|
||||
enc, _ := rlp.EncodeToBytes(¶ms)
|
||||
var resEnc []byte
|
||||
resEnc, err = api.makeCall(ctx, remote, node, append([]byte{tsBuyTokens}, enc...))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = rlp.DecodeBytes(resEnc, &results)
|
||||
return
|
||||
}
|
||||
|
||||
func (api *PrivateLespayAPI) GetBalance(ctx context.Context, remote bool, node string) (results tsGetBalanceResults, err error) {
|
||||
var resEnc []byte
|
||||
resEnc, err = api.makeCall(ctx, remote, node, []byte{tsGetBalance})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = rlp.DecodeBytes(resEnc, &results)
|
||||
return
|
||||
}
|
||||
|
||||
func (api *PrivateLespayAPI) Info(ctx context.Context, remote bool, node string) (results tsInfoResults, err error) {
|
||||
var resEnc []byte
|
||||
resEnc, err = api.makeCall(ctx, remote, node, []byte{tsInfo})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = rlp.DecodeBytes(resEnc, &results)
|
||||
return
|
||||
}
|
||||
|
||||
func (api *PrivateLespayAPI) ReceiverInfo(ctx context.Context, remote bool, node string, receiverIDs []string) (results tsReceiverInfoResults, err error) {
|
||||
params := tsReceiverInfoParams(receiverIDs)
|
||||
enc, _ := rlp.EncodeToBytes(¶ms)
|
||||
var resEnc []byte
|
||||
resEnc, err = api.makeCall(ctx, remote, node, append([]byte{tsReceiverInfo}, enc...))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = rlp.DecodeBytes(resEnc, &results)
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -363,6 +363,19 @@ func (t *tokenSale) buyTokens(id enode.ID, maxSpend, minReceive uint64, spendAll
|
|||
return
|
||||
}
|
||||
|
||||
func (t *tokenSale) getBalance(id enode.ID) (pcBalance, tokenBalance uint64) {
|
||||
t.lock.Lock()
|
||||
defer t.lock.Unlock()
|
||||
|
||||
pb := t.clientPool.getPosBalance(id)
|
||||
tokenBalance = pb.value
|
||||
var meta tokenSaleMeta
|
||||
if err := rlp.DecodeBytes([]byte(pb.meta), &meta); err == nil {
|
||||
pcBalance = meta.pcBalance
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (t *tokenSale) info() (version, compatible uint, info keyValueList, receivers []string) {
|
||||
t.lock.Lock()
|
||||
defer t.lock.Unlock()
|
||||
|
|
@ -436,6 +449,7 @@ func (t *tokenSaleMeta) DecodeRLP(s *rlp.Stream) error {
|
|||
const (
|
||||
tsInfo = iota
|
||||
tsReceiverInfo
|
||||
tsGetBalance
|
||||
tsDeposit
|
||||
tsBuyTokens
|
||||
tsConnection
|
||||
|
|
@ -449,6 +463,9 @@ type (
|
|||
}
|
||||
tsReceiverInfoParams []string
|
||||
tsReceiverInfoResults []keyValueList
|
||||
tsGetBalanceResults struct {
|
||||
PcBalance, TokenBalance uint64
|
||||
}
|
||||
tsDepositParams struct {
|
||||
PaymentModule string
|
||||
ProofOfPayment []byte
|
||||
|
|
@ -495,6 +512,12 @@ func (t *tokenSale) runCommand(cmd []byte, id enode.ID, freeID string) []byte {
|
|||
results = t.receiverInfo(params)
|
||||
res, _ = rlp.EncodeToBytes(&results)
|
||||
}
|
||||
case tsGetBalance:
|
||||
var results tsGetBalanceResults
|
||||
if len(cmd) == 1 {
|
||||
results.PcBalance, results.TokenBalance = t.getBalance(id)
|
||||
res, _ = rlp.EncodeToBytes(&results)
|
||||
}
|
||||
case tsDeposit:
|
||||
var (
|
||||
params tsDepositParams
|
||||
|
|
|
|||
Loading…
Reference in a new issue