forked from cerc-io/plugeth
Abstract http into rpc package
New RpcConfig object to pass growing config
This commit is contained in:
parent
24fc1f073d
commit
04a7c4ae1e
@ -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 {
|
|||||||
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
|
|||||||
|
|
||||||
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 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
12
rpc/http.go
12
rpc/http.go
@ -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 (
|
|||||||
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 (
|
|||||||
"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
|
||||||
|
Loading…
Reference in New Issue
Block a user