| @@ -33,73 +33,73 @@ func (self *WebSocketServer) Serv() { | |||||||
| 			data := ethutil.NewValue(msg.Args) | 			data := ethutil.NewValue(msg.Args) | ||||||
| 			bcode, err := ethutil.Compile(data.Get(0).Str(), false) | 			bcode, err := ethutil.Compile(data.Get(0).Str(), false) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
| 				c.Write(args(nil, err.Error()), msg.Seed) | 				c.Write(args(nil, err.Error()), msg.Id) | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			code := ethutil.Bytes2Hex(bcode) | 			code := ethutil.Bytes2Hex(bcode) | ||||||
| 			c.Write(args(code, nil), msg.Seed) | 			c.Write(args(code, nil), msg.Id) | ||||||
| 		case "getBlockByNumber": | 		case "eth_blockByNumber": | ||||||
| 			args := msg.Arguments() | 			args := msg.Arguments() | ||||||
|  |  | ||||||
| 			block := pipe.BlockByNumber(int32(args.Get(0).Uint())) | 			block := pipe.BlockByNumber(int32(args.Get(0).Uint())) | ||||||
| 			c.Write(block, msg.Seed) | 			c.Write(block, msg.Id) | ||||||
|  |  | ||||||
| 		case "getKey": | 		case "eth_blockByHash": | ||||||
| 			c.Write(pipe.Key().PrivateKey, msg.Seed) | 			args := msg.Arguments() | ||||||
| 		case "transact": |  | ||||||
|  | 			c.Write(pipe.BlockByHash(args.Get(0).Str()), msg.Id) | ||||||
|  |  | ||||||
|  | 		case "eth_transact": | ||||||
| 			if mp, ok := msg.Args[0].(map[string]interface{}); ok { | 			if mp, ok := msg.Args[0].(map[string]interface{}); ok { | ||||||
| 				object := mapToTxParams(mp) | 				object := mapToTxParams(mp) | ||||||
| 				c.Write( | 				c.Write( | ||||||
| 					args(pipe.Transact(object["from"], object["to"], object["value"], object["gas"], object["gasPrice"], object["data"])), | 					args(pipe.Transact(pipe.Key().PrivateKey, object["to"], object["value"], object["gas"], object["gasPrice"], object["data"])), | ||||||
| 					msg.Seed, | 					msg.Id, | ||||||
| 				) | 				) | ||||||
|  |  | ||||||
| 			} | 			} | ||||||
| 		case "getCoinBase": | 		case "eth_gasPrice": | ||||||
| 			c.Write(pipe.CoinBase(), msg.Seed) | 			c.Write("10000000000000", msg.Id) | ||||||
|  | 		case "eth_coinbase": | ||||||
|  | 			c.Write(pipe.CoinBase(), msg.Id) | ||||||
|  |  | ||||||
| 		case "getIsListening": | 		case "eth_listening": | ||||||
| 			c.Write(pipe.IsListening(), msg.Seed) | 			c.Write(pipe.IsListening(), msg.Id) | ||||||
|  |  | ||||||
| 		case "getIsMining": | 		case "eth_mining": | ||||||
| 			c.Write(pipe.IsMining(), msg.Seed) | 			c.Write(pipe.IsMining(), msg.Id) | ||||||
|  |  | ||||||
| 		case "getPeerCoint": | 		case "eth_peerCount": | ||||||
| 			c.Write(pipe.PeerCount(), msg.Seed) | 			c.Write(pipe.PeerCount(), msg.Id) | ||||||
|  |  | ||||||
| 		case "getCountAt": | 		case "eth_countAt": | ||||||
| 			args := msg.Arguments() | 			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() | 			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() | 			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() | 			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() | 			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": | 		case "eth_newFilter": | ||||||
| 			args := msg.Arguments() | 		case "eth_newFilterString": | ||||||
|  | 		case "eth_messages": | ||||||
| 			c.Write(pipe.SecretToAddress(args.Get(0).Str()), msg.Seed) |  | ||||||
|  |  | ||||||
| 		case "newFilter": |  | ||||||
| 		case "newFilterString": |  | ||||||
| 		case "messages": |  | ||||||
| 			// TODO | 			// TODO | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -50,8 +50,8 @@ func (c *Client) Conn() *ws.Conn { | |||||||
| 	return c.ws | 	return c.ws | ||||||
| } | } | ||||||
|  |  | ||||||
| func (c *Client) Write(data interface{}, seed int) { | func (c *Client) Write(data interface{}, id int) { | ||||||
| 	msg := &Message{Seed: seed, Data: data} | 	msg := &Message{Id: id, Data: data} | ||||||
| 	select { | 	select { | ||||||
| 	case c.ch <- msg: | 	case c.ch <- msg: | ||||||
| 	default: | 	default: | ||||||
| @@ -73,7 +73,6 @@ func (c *Client) Listen() { | |||||||
|  |  | ||||||
| // Listen write request via chanel | // Listen write request via chanel | ||||||
| func (c *Client) listenWrite() { | func (c *Client) listenWrite() { | ||||||
| 	wslogger.Debugln("Listening write to client") |  | ||||||
| 	for { | 	for { | ||||||
| 		select { | 		select { | ||||||
|  |  | ||||||
| @@ -93,7 +92,6 @@ func (c *Client) listenWrite() { | |||||||
|  |  | ||||||
| // Listen read request via chanel | // Listen read request via chanel | ||||||
| func (c *Client) listenRead() { | func (c *Client) listenRead() { | ||||||
| 	wslogger.Debugln("Listening read from client") |  | ||||||
| 	for { | 	for { | ||||||
| 		select { | 		select { | ||||||
|  |  | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ import "github.com/ethereum/go-ethereum/ethutil" | |||||||
| type Message struct { | type Message struct { | ||||||
| 	Call string        `json:"call"` | 	Call string        `json:"call"` | ||||||
| 	Args []interface{} `json:"args"` | 	Args []interface{} `json:"args"` | ||||||
| 	Seed int           `json:"seed"` | 	Id   int           `json:"_id"` | ||||||
| 	Data interface{}   `json:"data"` | 	Data interface{}   `json:"data"` | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -81,8 +81,6 @@ func (s *Server) MessageFunc(f MsgFunc) { | |||||||
| // Listen and serve. | // Listen and serve. | ||||||
| // It serves client connection and broadcast request. | // It serves client connection and broadcast request. | ||||||
| func (s *Server) Listen() { | func (s *Server) Listen() { | ||||||
| 	wslogger.Debugln("Listening server...") |  | ||||||
|  |  | ||||||
| 	// ws handler | 	// ws handler | ||||||
| 	onConnected := func(ws *ws.Conn) { | 	onConnected := func(ws *ws.Conn) { | ||||||
| 		defer func() { | 		defer func() { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user