From a26aecdfdb0223b2fb54ca2d40adb2b531512d42 Mon Sep 17 00:00:00 2001 From: obscuren Date: Tue, 6 Jan 2015 11:44:22 +0100 Subject: [PATCH] Updated WS API. Fixes #219. Closes #220 --- cmd/utils/websockets.go | 70 ++++++++++++++++++++--------------------- websocket/client.go | 6 ++-- websocket/message.go | 2 +- websocket/server.go | 2 -- 4 files changed, 38 insertions(+), 42 deletions(-) diff --git a/cmd/utils/websockets.go b/cmd/utils/websockets.go index e4bc1b1854..ef9de192b4 100644 --- a/cmd/utils/websockets.go +++ b/cmd/utils/websockets.go @@ -33,73 +33,73 @@ func (self *WebSocketServer) Serv() { data := ethutil.NewValue(msg.Args) bcode, err := ethutil.Compile(data.Get(0).Str(), false) if err != nil { - c.Write(args(nil, err.Error()), msg.Seed) + c.Write(args(nil, err.Error()), msg.Id) } code := ethutil.Bytes2Hex(bcode) - c.Write(args(code, nil), msg.Seed) - case "getBlockByNumber": + c.Write(args(code, nil), msg.Id) + case "eth_blockByNumber": args := msg.Arguments() block := pipe.BlockByNumber(int32(args.Get(0).Uint())) - c.Write(block, msg.Seed) + c.Write(block, msg.Id) - case "getKey": - c.Write(pipe.Key().PrivateKey, msg.Seed) - case "transact": + case "eth_blockByHash": + args := msg.Arguments() + + c.Write(pipe.BlockByHash(args.Get(0).Str()), msg.Id) + + case "eth_transact": if mp, ok := msg.Args[0].(map[string]interface{}); ok { object := mapToTxParams(mp) c.Write( - args(pipe.Transact(object["from"], object["to"], object["value"], object["gas"], object["gasPrice"], object["data"])), - msg.Seed, + args(pipe.Transact(pipe.Key().PrivateKey, object["to"], object["value"], object["gas"], object["gasPrice"], object["data"])), + msg.Id, ) } - case "getCoinBase": - c.Write(pipe.CoinBase(), msg.Seed) + case "eth_gasPrice": + c.Write("10000000000000", msg.Id) + case "eth_coinbase": + c.Write(pipe.CoinBase(), msg.Id) - case "getIsListening": - c.Write(pipe.IsListening(), msg.Seed) + case "eth_listening": + c.Write(pipe.IsListening(), msg.Id) - case "getIsMining": - c.Write(pipe.IsMining(), msg.Seed) + case "eth_mining": + c.Write(pipe.IsMining(), msg.Id) - case "getPeerCoint": - c.Write(pipe.PeerCount(), msg.Seed) + case "eth_peerCount": + c.Write(pipe.PeerCount(), msg.Id) - case "getCountAt": + case "eth_countAt": args := msg.Arguments() - c.Write(pipe.TxCountAt(args.Get(0).Str()), msg.Seed) + c.Write(pipe.TxCountAt(args.Get(0).Str()), msg.Id) - case "getCodeAt": + case "eth_codeAt": args := msg.Arguments() - c.Write(len(pipe.CodeAt(args.Get(0).Str())), msg.Seed) + c.Write(len(pipe.CodeAt(args.Get(0).Str())), msg.Id) - case "getBlockByHash": + case "eth_storageAt": args := msg.Arguments() - c.Write(pipe.BlockByHash(args.Get(0).Str()), msg.Seed) + c.Write(pipe.StorageAt(args.Get(0).Str(), args.Get(1).Str()), msg.Id) - case "getStorageAt": + case "eth_balanceAt": args := msg.Arguments() - c.Write(pipe.StorageAt(args.Get(0).Str(), args.Get(1).Str()), msg.Seed) + c.Write(pipe.BalanceAt(args.Get(0).Str()), msg.Id) - case "getBalanceAt": + case "eth_secretToAddress": args := msg.Arguments() - c.Write(pipe.BalanceAt(args.Get(0).Str()), msg.Seed) + c.Write(pipe.SecretToAddress(args.Get(0).Str()), msg.Id) - case "getSecretToAddress": - args := msg.Arguments() - - c.Write(pipe.SecretToAddress(args.Get(0).Str()), msg.Seed) - - case "newFilter": - case "newFilterString": - case "messages": + case "eth_newFilter": + case "eth_newFilterString": + case "eth_messages": // TODO } diff --git a/websocket/client.go b/websocket/client.go index d961816e8d..db2c8e5c91 100644 --- a/websocket/client.go +++ b/websocket/client.go @@ -50,8 +50,8 @@ func (c *Client) Conn() *ws.Conn { return c.ws } -func (c *Client) Write(data interface{}, seed int) { - msg := &Message{Seed: seed, Data: data} +func (c *Client) Write(data interface{}, id int) { + msg := &Message{Id: id, Data: data} select { case c.ch <- msg: default: @@ -73,7 +73,6 @@ func (c *Client) Listen() { // Listen write request via chanel func (c *Client) listenWrite() { - wslogger.Debugln("Listening write to client") for { select { @@ -93,7 +92,6 @@ func (c *Client) listenWrite() { // Listen read request via chanel func (c *Client) listenRead() { - wslogger.Debugln("Listening read from client") for { select { diff --git a/websocket/message.go b/websocket/message.go index 67289c4c49..73b47456f6 100644 --- a/websocket/message.go +++ b/websocket/message.go @@ -5,7 +5,7 @@ import "github.com/ethereum/go-ethereum/ethutil" type Message struct { Call string `json:"call"` Args []interface{} `json:"args"` - Seed int `json:"seed"` + Id int `json:"_id"` Data interface{} `json:"data"` } diff --git a/websocket/server.go b/websocket/server.go index 5fd923a0c6..b0658b1b44 100644 --- a/websocket/server.go +++ b/websocket/server.go @@ -81,8 +81,6 @@ func (s *Server) MessageFunc(f MsgFunc) { // Listen and serve. // It serves client connection and broadcast request. func (s *Server) Listen() { - wslogger.Debugln("Listening server...") - // ws handler onConnected := func(ws *ws.Conn) { defer func() {