diff options
Diffstat (limited to 'etherpc')
-rw-r--r-- | etherpc/packages.go | 39 | ||||
-rw-r--r-- | etherpc/server.go | 7 |
2 files changed, 28 insertions, 18 deletions
diff --git a/etherpc/packages.go b/etherpc/packages.go index 8bc78498f..271a59879 100644 --- a/etherpc/packages.go +++ b/etherpc/packages.go @@ -3,18 +3,20 @@ package etherpc import ( "encoding/json" "errors" - "math/big" + "github.com/ethereum/eth-go/ethpub" + _ "log" ) -type MainPackage struct{} +type MainPackage struct { + ethp *ethpub.PEthereum +} type JsonArgs interface { requirements() error } type BlockResponse struct { - Name string - Id int + JsonResponse } type GetBlockArgs struct { BlockNumber int @@ -63,22 +65,23 @@ func (b *GetBlockArgs) requirements() error { return nil } -func (p *MainPackage) GetBlock(args *GetBlockArgs, reply *BlockResponse) error { +func (p *MainPackage) GetBlock(args *GetBlockArgs, reply *string) error { err := args.requirements() if err != nil { return err } // Do something - + block := p.ethp.GetBlock(args.Hash) + *reply = NewSuccessRes(block) return nil } type NewTxArgs struct { Sec string Recipient string - Value *big.Int - Gas *big.Int - GasPrice *big.Int + Value string + Gas string + GasPrice string Init string Body string } @@ -90,26 +93,26 @@ func (a *NewTxArgs) requirements() error { if a.Recipient == "" { return NewErrorResponse("Transact requires a 'recipient' address as argument") } - if a.Value == nil { + if a.Value == "" { return NewErrorResponse("Transact requires a 'value' as argument") } - if a.Gas == nil { + if a.Gas == "" { return NewErrorResponse("Transact requires a 'gas' value as argument") } - if a.GasPrice == nil { + if a.GasPrice == "" { return NewErrorResponse("Transact requires a 'gasprice' value as argument") } return nil } func (a *NewTxArgs) requirementsContract() error { - if a.Value == nil { + if a.Value == "" { return NewErrorResponse("Create requires a 'value' as argument") } - if a.Gas == nil { + if a.Gas == "" { return NewErrorResponse("Create requires a 'gas' value as argument") } - if a.GasPrice == nil { + if a.GasPrice == "" { return NewErrorResponse("Create requires a 'gasprice' value as argument") } if a.Init == "" { @@ -121,11 +124,13 @@ func (a *NewTxArgs) requirementsContract() error { return nil } -func (p *MainPackage) Transact(args *NewTxArgs, reply *TxResponse) error { +func (p *MainPackage) Transact(args *NewTxArgs, reply *string) error { err := args.requirements() if err != nil { return err } + result, _ := p.ethp.Transact(p.ethp.GetKey().PrivateKey, args.Recipient, args.Value, args.Gas, args.GasPrice, args.Body) + *reply = NewSuccessRes(result) return nil } @@ -134,6 +139,8 @@ func (p *MainPackage) Create(args *NewTxArgs, reply *string) error { if err != nil { return err } + result, _ := p.ethp.Create(p.ethp.GetKey().PrivateKey, args.Value, args.Gas, args.GasPrice, args.Init, args.Body) + *reply = NewSuccessRes(result) return nil } diff --git a/etherpc/server.go b/etherpc/server.go index ba0c51006..7929563cb 100644 --- a/etherpc/server.go +++ b/etherpc/server.go @@ -1,6 +1,7 @@ package etherpc import ( + "github.com/ethereum/eth-go/ethpub" "github.com/ethereum/eth-go/ethutil" "net" "net/rpc" @@ -10,6 +11,7 @@ import ( type JsonRpcServer struct { quit chan bool listener net.Listener + ethp *ethpub.PEthereum } func (s *JsonRpcServer) exitHandler() { @@ -32,7 +34,7 @@ func (s *JsonRpcServer) Stop() { func (s *JsonRpcServer) Start() { ethutil.Config.Log.Infoln("[JSON] Starting JSON-RPC server") go s.exitHandler() - rpc.Register(new(MainPackage)) + rpc.Register(&MainPackage{ethp: s.ethp}) rpc.HandleHTTP() for { @@ -46,7 +48,7 @@ func (s *JsonRpcServer) Start() { } } -func NewJsonRpcServer() *JsonRpcServer { +func NewJsonRpcServer(ethp *ethpub.PEthereum) *JsonRpcServer { l, err := net.Listen("tcp", ":30304") if err != nil { ethutil.Config.Log.Infoln("Error starting JSON-RPC") @@ -55,5 +57,6 @@ func NewJsonRpcServer() *JsonRpcServer { return &JsonRpcServer{ listener: l, quit: make(chan bool), + ethp: ethp, } } |