github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/swarm/storage/mock/rpc/rpc.go (about)

     1  
     2  //<developer>
     3  //    <name>linapex 曹一峰</name>
     4  //    <email>linapex@163.com</email>
     5  //    <wx>superexc</wx>
     6  //    <qqgroup>128148617</qqgroup>
     7  //    <url>https://jsq.ink</url>
     8  //    <role>pku engineer</role>
     9  //    <date>2019-03-16 12:09:49</date>
    10  //</624342682323390464>
    11  
    12  //
    13  //
    14  //
    15  //
    16  //
    17  //
    18  //
    19  //
    20  //
    21  //
    22  //
    23  //
    24  //
    25  //
    26  //
    27  
    28  //
    29  //
    30  //
    31  //
    32  //
    33  //
    34  //
    35  package rpc
    36  
    37  import (
    38  	"fmt"
    39  
    40  	"github.com/ethereum/go-ethereum/common"
    41  	"github.com/ethereum/go-ethereum/rpc"
    42  	"github.com/ethereum/go-ethereum/swarm/log"
    43  	"github.com/ethereum/go-ethereum/swarm/storage/mock"
    44  )
    45  
    46  //
    47  //
    48  type GlobalStore struct {
    49  	client *rpc.Client
    50  }
    51  
    52  //
    53  func NewGlobalStore(client *rpc.Client) *GlobalStore {
    54  	return &GlobalStore{
    55  		client: client,
    56  	}
    57  }
    58  
    59  //
    60  func (s *GlobalStore) Close() error {
    61  	s.client.Close()
    62  	return nil
    63  }
    64  
    65  //
    66  //
    67  func (s *GlobalStore) NewNodeStore(addr common.Address) *mock.NodeStore {
    68  	return mock.NewNodeStore(addr, s)
    69  }
    70  
    71  //
    72  func (s *GlobalStore) Get(addr common.Address, key []byte) (data []byte, err error) {
    73  	err = s.client.Call(&data, "mockStore_get", addr, key)
    74  	if err != nil && err.Error() == "not found" {
    75  //
    76  		return data, mock.ErrNotFound
    77  	}
    78  	return data, err
    79  }
    80  
    81  //
    82  func (s *GlobalStore) Put(addr common.Address, key []byte, data []byte) error {
    83  	err := s.client.Call(nil, "mockStore_put", addr, key, data)
    84  	return err
    85  }
    86  
    87  //
    88  func (s *GlobalStore) HasKey(addr common.Address, key []byte) bool {
    89  	var has bool
    90  	if err := s.client.Call(&has, "mockStore_hasKey", addr, key); err != nil {
    91  		log.Error(fmt.Sprintf("mock store HasKey: addr %s, key %064x: %v", addr, key, err))
    92  		return false
    93  	}
    94  	return has
    95  }
    96