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