Commit 04a7c4ae authored by Taylor Gerring's avatar Taylor Gerring

Abstract http into rpc package

New RpcConfig object to pass growing config
parent 24fc1f07
...@@ -2,8 +2,6 @@ package main ...@@ -2,8 +2,6 @@ package main
import ( import (
"fmt" "fmt"
"net"
"net/http"
"os" "os"
"time" "time"
...@@ -70,12 +68,20 @@ func (js *jsre) startRPC(call otto.FunctionCall) otto.Value { ...@@ -70,12 +68,20 @@ func (js *jsre) startRPC(call otto.FunctionCall) otto.Value {
return otto.FalseValue() return otto.FalseValue()
} }
l, err := net.Listen("tcp", fmt.Sprintf("%s:%d", addr, port)) config := rpc.RpcConfig{
ListenAddress: addr,
ListenPort: uint(port),
// CorsDomain: ctx.GlobalString(RPCCORSDomainFlag.Name),
}
xeth := xeth.New(js.ethereum, nil)
err = rpc.Start(xeth, config)
if err != nil { if err != nil {
fmt.Printf("Can't listen on %s:%d: %v", addr, port, err) fmt.Printf(err.Error())
return otto.FalseValue() return otto.FalseValue()
} }
go http.Serve(l, rpc.JSONRPC(xeth.New(js.ethereum, nil)))
return otto.TrueValue() return otto.TrueValue()
} }
......
...@@ -2,9 +2,6 @@ package utils ...@@ -2,9 +2,6 @@ package utils
import ( import (
"crypto/ecdsa" "crypto/ecdsa"
"fmt"
"net"
"net/http"
"os" "os"
"path" "path"
"runtime" "runtime"
...@@ -259,12 +256,12 @@ func GetAccountManager(ctx *cli.Context) *accounts.Manager { ...@@ -259,12 +256,12 @@ func GetAccountManager(ctx *cli.Context) *accounts.Manager {
} }
func StartRPC(eth *eth.Ethereum, ctx *cli.Context) { func StartRPC(eth *eth.Ethereum, ctx *cli.Context) {
addr := ctx.GlobalString(RPCListenAddrFlag.Name) config := rpc.RpcConfig{
port := ctx.GlobalInt(RPCPortFlag.Name) ListenAddress: ctx.GlobalString(RPCListenAddrFlag.Name),
fmt.Println("Starting RPC on port: ", port) ListenPort: uint(ctx.GlobalInt(RPCPortFlag.Name)),
l, err := net.Listen("tcp", fmt.Sprintf("%s:%d", addr, port)) CorsDomain: ctx.GlobalString(RPCCORSDomainFlag.Name),
if err != nil {
Fatalf("Can't listen on %s:%d: %v", addr, port, err)
} }
go http.Serve(l, rpc.JSONRPC(xeth.New(eth, nil)))
xeth := xeth.New(eth, nil)
_ = rpc.Start(xeth, config)
} }
...@@ -2,8 +2,10 @@ package rpc ...@@ -2,8 +2,10 @@ package rpc
import ( import (
"encoding/json" "encoding/json"
"fmt"
"io" "io"
"io/ioutil" "io/ioutil"
"net"
"net/http" "net/http"
"github.com/ethereum/go-ethereum/logger" "github.com/ethereum/go-ethereum/logger"
...@@ -17,6 +19,16 @@ const ( ...@@ -17,6 +19,16 @@ const (
maxSizeReqLength = 1024 * 1024 // 1MB maxSizeReqLength = 1024 * 1024 // 1MB
) )
func Start(pipe *xeth.XEth, config RpcConfig) error {
l, err := net.Listen("tcp", fmt.Sprintf("%s:%d", config.ListenAddress, config.ListenPort))
if err != nil {
rpclogger.Errorf("Can't listen on %s:%d: %v", config.ListenAddress, config.ListenPort, err)
return err
}
go http.Serve(l, JSONRPC(pipe))
return nil
}
// JSONRPC returns a handler that implements the Ethereum JSON-RPC API. // JSONRPC returns a handler that implements the Ethereum JSON-RPC API.
func JSONRPC(pipe *xeth.XEth) http.Handler { func JSONRPC(pipe *xeth.XEth) http.Handler {
api := NewEthereumApi(pipe) api := NewEthereumApi(pipe)
......
...@@ -21,6 +21,12 @@ import ( ...@@ -21,6 +21,12 @@ import (
"fmt" "fmt"
) )
type RpcConfig struct {
ListenAddress string
ListenPort uint
CorsDomain string
}
type InvalidTypeError struct { type InvalidTypeError struct {
method string method string
msg string msg string
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment