Skip to content

Commit

Permalink
Abstract http into rpc package
Browse files Browse the repository at this point in the history
New RpcConfig object to pass growing config
  • Loading branch information
tgerring committed Mar 29, 2015
1 parent 24fc1f0 commit 04a7c4a
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 15 deletions.
16 changes: 11 additions & 5 deletions cmd/geth/admin.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ package main

import (
"fmt"
"net"
"net/http"
"os"
"time"

Expand Down Expand Up @@ -70,12 +68,20 @@ func (js *jsre) startRPC(call otto.FunctionCall) otto.Value {
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 {
fmt.Printf("Can't listen on %s:%d: %v", addr, port, err)
fmt.Printf(err.Error())
return otto.FalseValue()
}
go http.Serve(l, rpc.JSONRPC(xeth.New(js.ethereum, nil)))

return otto.TrueValue()
}

Expand Down
17 changes: 7 additions & 10 deletions cmd/utils/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@ package utils

import (
"crypto/ecdsa"
"fmt"
"net"
"net/http"
"os"
"path"
"runtime"
Expand Down Expand Up @@ -259,12 +256,12 @@ func GetAccountManager(ctx *cli.Context) *accounts.Manager {
}

func StartRPC(eth *eth.Ethereum, ctx *cli.Context) {
addr := ctx.GlobalString(RPCListenAddrFlag.Name)
port := ctx.GlobalInt(RPCPortFlag.Name)
fmt.Println("Starting RPC on port: ", port)
l, err := net.Listen("tcp", fmt.Sprintf("%s:%d", addr, port))
if err != nil {
Fatalf("Can't listen on %s:%d: %v", addr, port, err)
config := rpc.RpcConfig{
ListenAddress: ctx.GlobalString(RPCListenAddrFlag.Name),
ListenPort: uint(ctx.GlobalInt(RPCPortFlag.Name)),
CorsDomain: ctx.GlobalString(RPCCORSDomainFlag.Name),
}
go http.Serve(l, rpc.JSONRPC(xeth.New(eth, nil)))

xeth := xeth.New(eth, nil)
_ = rpc.Start(xeth, config)
}
12 changes: 12 additions & 0 deletions rpc/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@ package rpc

import (
"encoding/json"
"fmt"
"io"
"io/ioutil"
"net"
"net/http"

"github.com/ethereum/go-ethereum/logger"
Expand All @@ -17,6 +19,16 @@ const (
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.
func JSONRPC(pipe *xeth.XEth) http.Handler {
api := NewEthereumApi(pipe)
Expand Down
6 changes: 6 additions & 0 deletions rpc/messages.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,12 @@ import (
"fmt"
)

type RpcConfig struct {
ListenAddress string
ListenPort uint
CorsDomain string
}

type InvalidTypeError struct {
method string
msg string
Expand Down

0 comments on commit 04a7c4a

Please sign in to comment.