Browse Source

Refactor RPC/*, tendermint/config for debora+barak

pull/69/head
Jae Kwon 10 years ago
parent
commit
3565db4eef
19 changed files with 92 additions and 67 deletions
  1. +5
    -0
      Makefile
  2. +10
    -6
      cmd/barak/main.go
  3. +3
    -3
      cmd/debora/commands.go
  4. +4
    -0
      cmd/debora/main.go
  5. BIN
      hoge.png
  6. +5
    -5
      node/node.go
  7. +2
    -1
      rpc/client/client.go
  8. +7
    -0
      rpc/client/log.go
  9. +1
    -1
      rpc/core/routes.go
  10. +4
    -4
      rpc/core_client/client.go
  11. +17
    -17
      rpc/core_client/client_methods.go
  12. +3
    -3
      rpc/core_client/ws_client.go
  13. +0
    -7
      rpc/log.go
  14. +2
    -14
      rpc/server/handlers.go
  15. +3
    -1
      rpc/server/http_params.go
  16. +2
    -1
      rpc/server/http_server.go
  17. +7
    -0
      rpc/server/log.go
  18. +3
    -3
      rpc/test/client_ws_test.go
  19. +14
    -1
      rpc/types/types.go

+ 5
- 0
Makefile View File

@ -20,6 +20,11 @@ build_race: get_deps
test: build
go test github.com/tendermint/tendermint/...
draw_deps:
# requires brew install graphviz
go get github.com/hirokidaichi/goviz
goviz -i github.com/tendermint/tendermint/cmd/tendermint | dot -Tpng -o hoge.png
list_deps:
go list -f '{{join .Deps "\n"}}' github.com/tendermint/tendermint/... | xargs go list -f '{{if not .Standard}}{{.ImportPath}}{{end}}'


+ 10
- 6
cmd/barak/main.go View File

@ -19,13 +19,14 @@ import (
"github.com/tendermint/tendermint/binary"
. "github.com/tendermint/tendermint/cmd/barak/types"
. "github.com/tendermint/tendermint/common"
cfg "github.com/tendermint/tendermint/config"
pcm "github.com/tendermint/tendermint/process"
"github.com/tendermint/tendermint/rpc"
"github.com/tendermint/tendermint/rpc/server"
)
var Routes = map[string]*rpc.RPCFunc{
"status": rpc.NewRPCFunc(Status, []string{}),
"run": rpc.NewRPCFunc(Run, []string{"auth_command"}),
var Routes = map[string]*rpcserver.RPCFunc{
"status": rpcserver.NewRPCFunc(Status, []string{}),
"run": rpcserver.NewRPCFunc(Run, []string{"auth_command"}),
// NOTE: also, two special non-JSONRPC routes called "download" and "upload"
}
@ -58,6 +59,9 @@ var barak = struct {
func main() {
fmt.Printf("New Barak Process (PID: %d)\n", os.Getpid())
// Apply bare tendermint/* configuration.
cfg.ApplyConfig(cfg.MapConfig(map[string]interface{}{"log_level": "info"}))
// read flags to change options file.
var optionsBytes []byte
var optionsFile string
@ -97,8 +101,8 @@ func main() {
mux.HandleFunc("/download", ServeFile)
mux.HandleFunc("/register", Register)
// TODO: mux.HandleFunc("/upload", UploadFile)
rpc.RegisterRPCFuncs(mux, Routes)
rpc.StartHTTPServer(options.ListenAddress, mux)
rpcserver.RegisterRPCFuncs(mux, Routes)
rpcserver.StartHTTPServer(options.ListenAddress, mux)
// Register this barak with central listener
for _, registry := range barak.registries {


+ 3
- 3
cmd/debora/commands.go View File

@ -10,7 +10,7 @@ import (
"github.com/tendermint/tendermint/binary"
btypes "github.com/tendermint/tendermint/cmd/barak/types"
. "github.com/tendermint/tendermint/common"
"github.com/tendermint/tendermint/rpc"
"github.com/tendermint/tendermint/rpc/client"
"net/http"
)
@ -89,7 +89,7 @@ func GetNonce(remote string) (uint64, error) {
}
func GetStatus(remote string) (response btypes.ResponseStatus, err error) {
_, err = rpc.Call(remote, "status", Arr(), &response)
_, err = rpcclient.Call(remote, "status", Arr(), &response)
if err != nil {
return response, fmt.Errorf("Error fetching nonce from remote %v:\n %v", remote, err)
}
@ -113,5 +113,5 @@ func RunAuthCommand(remote string, commandJSONBytes []byte, signatures []acm.Sig
CommandJSONStr: string(commandJSONBytes),
Signatures: signatures,
}
return rpc.Call(remote, "run", Arr(authCommand), dest)
return rpcclient.Call(remote, "run", Arr(authCommand), dest)
}

+ 4
- 0
cmd/debora/main.go View File

@ -14,6 +14,7 @@ import (
"github.com/tendermint/tendermint/binary"
btypes "github.com/tendermint/tendermint/cmd/barak/types"
. "github.com/tendermint/tendermint/common"
cfg "github.com/tendermint/tendermint/config"
)
func remoteNick(remote string) string {
@ -33,6 +34,9 @@ var Config = struct {
func main() {
fmt.Printf("New Debora Process (PID: %d)\n", os.Getpid())
// Apply bare tendermint/* configuration.
cfg.ApplyConfig(cfg.MapConfig(map[string]interface{}{"log_level": "info"}))
rootDir := os.Getenv("DEBROOT")
if rootDir == "" {
rootDir = os.Getenv("HOME") + "/.debora"


BIN
hoge.png View File

Before After
Width: 5333  |  Height: 2608  |  Size: 1.1 MiB

+ 5
- 5
node/node.go View File

@ -17,8 +17,8 @@ import (
"github.com/tendermint/tendermint/events"
mempl "github.com/tendermint/tendermint/mempool"
"github.com/tendermint/tendermint/p2p"
"github.com/tendermint/tendermint/rpc"
"github.com/tendermint/tendermint/rpc/core"
"github.com/tendermint/tendermint/rpc/server"
sm "github.com/tendermint/tendermint/state"
"github.com/tendermint/tendermint/types"
)
@ -190,9 +190,9 @@ func (n *Node) StartRPC() {
listenAddr := config.GetString("rpc_laddr")
mux := http.NewServeMux()
rpc.RegisterEventsHandler(mux, n.evsw)
rpc.RegisterRPCFuncs(mux, core.Routes)
rpc.StartHTTPServer(listenAddr, mux)
rpcserver.RegisterEventsHandler(mux, n.evsw)
rpcserver.RegisterRPCFuncs(mux, core.Routes)
rpcserver.StartHTTPServer(listenAddr, mux)
}
func (n *Node) Switch() *p2p.Switch {
@ -252,7 +252,7 @@ func RunNode() {
n.Start()
// If seedNode is provided by config, dial out.
if len(config.GetStringSlice("seeds")) != 0 {
if len(config.GetString("seeds")) > 0 {
n.DialSeed()
}


rpc/client.go → rpc/client/client.go View File


+ 7
- 0
rpc/client/log.go View File

@ -0,0 +1,7 @@
package rpcclient
import (
"github.com/tendermint/log15"
)
var log = log15.New("module", "rpcclient")

+ 1
- 1
rpc/core/routes.go View File

@ -1,7 +1,7 @@
package core
import (
"github.com/tendermint/tendermint/rpc"
rpc "github.com/tendermint/tendermint/rpc/server"
)
var Routes = map[string]*rpc.RPCFunc{


+ 4
- 4
rpc/core_client/client.go View File

@ -4,7 +4,7 @@ import (
"bytes"
"fmt"
"github.com/tendermint/tendermint/binary"
"github.com/tendermint/tendermint/rpc"
rpctypes "github.com/tendermint/tendermint/rpc/types"
// NOTE: do not import rpc/core.
// What kind of client imports all of core logic? :P
"io/ioutil"
@ -91,7 +91,7 @@ func argsToJson(args ...interface{}) ([]string, error) {
return jsons, nil
}
func (c *ClientJSON) RequestResponse(s rpc.RPCRequest) (b []byte, err error) {
func (c *ClientJSON) RequestResponse(s rpctypes.RPCRequest) (b []byte, err error) {
b = binary.JSONBytes(s)
buf := bytes.NewBuffer(b)
resp, err := http.Post(c.addr, "text/json", buf)
@ -157,7 +157,7 @@ func argsToURLValues(argNames []string, args ...interface{}) (url.Values, error)
/*rpc-gen:imports:
github.com/tendermint/tendermint/binary
github.com/tendermint/tendermint/rpc
github.com/tendermint/tendermint/rpc/types
net/http
io/ioutil
fmt
@ -166,7 +166,7 @@ fmt
// Template functions to be filled in
/*rpc-gen:template:*ClientJSON func (c *ClientJSON) {{name}}({{args.def}}) ({{response}}) {
request := rpc.RPCRequest{
request := rpctypes.RPCRequest{
JSONRPC: "2.0",
Method: reverseFuncMap["{{name}}"],
Params: []interface{}{ {{args.ident}} },


+ 17
- 17
rpc/core_client/client_methods.go View File

@ -6,8 +6,8 @@ import (
"fmt"
"github.com/tendermint/tendermint/account"
"github.com/tendermint/tendermint/binary"
"github.com/tendermint/tendermint/rpc"
ctypes "github.com/tendermint/tendermint/rpc/core/types"
"github.com/tendermint/tendermint/rpc/types"
"github.com/tendermint/tendermint/types"
"io/ioutil"
"net/http"
@ -513,7 +513,7 @@ func (c *ClientHTTP) Status() (*ctypes.ResponseStatus, error) {
}
func (c *ClientJSON) BlockchainInfo(minHeight uint, maxHeight uint) (*ctypes.ResponseBlockchainInfo, error) {
request := rpc.RPCRequest{
request := rpctypes.RPCRequest{
JSONRPC: "2.0",
Method: reverseFuncMap["BlockchainInfo"],
Params: []interface{}{minHeight, maxHeight},
@ -540,7 +540,7 @@ func (c *ClientJSON) BlockchainInfo(minHeight uint, maxHeight uint) (*ctypes.Res
}
func (c *ClientJSON) BroadcastTx(tx types.Tx) (*ctypes.ResponseBroadcastTx, error) {
request := rpc.RPCRequest{
request := rpctypes.RPCRequest{
JSONRPC: "2.0",
Method: reverseFuncMap["BroadcastTx"],
Params: []interface{}{tx},
@ -567,7 +567,7 @@ func (c *ClientJSON) BroadcastTx(tx types.Tx) (*ctypes.ResponseBroadcastTx, erro
}
func (c *ClientJSON) Call(address []byte, data []byte) (*ctypes.ResponseCall, error) {
request := rpc.RPCRequest{
request := rpctypes.RPCRequest{
JSONRPC: "2.0",
Method: reverseFuncMap["Call"],
Params: []interface{}{address, data},
@ -594,7 +594,7 @@ func (c *ClientJSON) Call(address []byte, data []byte) (*ctypes.ResponseCall, er
}
func (c *ClientJSON) CallCode(code []byte, data []byte) (*ctypes.ResponseCall, error) {
request := rpc.RPCRequest{
request := rpctypes.RPCRequest{
JSONRPC: "2.0",
Method: reverseFuncMap["CallCode"],
Params: []interface{}{code, data},
@ -621,7 +621,7 @@ func (c *ClientJSON) CallCode(code []byte, data []byte) (*ctypes.ResponseCall, e
}
func (c *ClientJSON) DumpConsensusState() (*ctypes.ResponseDumpConsensusState, error) {
request := rpc.RPCRequest{
request := rpctypes.RPCRequest{
JSONRPC: "2.0",
Method: reverseFuncMap["DumpConsensusState"],
Params: []interface{}{},
@ -648,7 +648,7 @@ func (c *ClientJSON) DumpConsensusState() (*ctypes.ResponseDumpConsensusState, e
}
func (c *ClientJSON) DumpStorage(address []byte) (*ctypes.ResponseDumpStorage, error) {
request := rpc.RPCRequest{
request := rpctypes.RPCRequest{
JSONRPC: "2.0",
Method: reverseFuncMap["DumpStorage"],
Params: []interface{}{address},
@ -675,7 +675,7 @@ func (c *ClientJSON) DumpStorage(address []byte) (*ctypes.ResponseDumpStorage, e
}
func (c *ClientJSON) GenPrivAccount() (*ctypes.ResponseGenPrivAccount, error) {
request := rpc.RPCRequest{
request := rpctypes.RPCRequest{
JSONRPC: "2.0",
Method: reverseFuncMap["GenPrivAccount"],
Params: []interface{}{},
@ -702,7 +702,7 @@ func (c *ClientJSON) GenPrivAccount() (*ctypes.ResponseGenPrivAccount, error) {
}
func (c *ClientJSON) GetAccount(address []byte) (*ctypes.ResponseGetAccount, error) {
request := rpc.RPCRequest{
request := rpctypes.RPCRequest{
JSONRPC: "2.0",
Method: reverseFuncMap["GetAccount"],
Params: []interface{}{address},
@ -729,7 +729,7 @@ func (c *ClientJSON) GetAccount(address []byte) (*ctypes.ResponseGetAccount, err
}
func (c *ClientJSON) GetBlock(height uint) (*ctypes.ResponseGetBlock, error) {
request := rpc.RPCRequest{
request := rpctypes.RPCRequest{
JSONRPC: "2.0",
Method: reverseFuncMap["GetBlock"],
Params: []interface{}{height},
@ -756,7 +756,7 @@ func (c *ClientJSON) GetBlock(height uint) (*ctypes.ResponseGetBlock, error) {
}
func (c *ClientJSON) GetStorage(address []byte, key []byte) (*ctypes.ResponseGetStorage, error) {
request := rpc.RPCRequest{
request := rpctypes.RPCRequest{
JSONRPC: "2.0",
Method: reverseFuncMap["GetStorage"],
Params: []interface{}{address, key},
@ -783,7 +783,7 @@ func (c *ClientJSON) GetStorage(address []byte, key []byte) (*ctypes.ResponseGet
}
func (c *ClientJSON) ListAccounts() (*ctypes.ResponseListAccounts, error) {
request := rpc.RPCRequest{
request := rpctypes.RPCRequest{
JSONRPC: "2.0",
Method: reverseFuncMap["ListAccounts"],
Params: []interface{}{},
@ -810,7 +810,7 @@ func (c *ClientJSON) ListAccounts() (*ctypes.ResponseListAccounts, error) {
}
func (c *ClientJSON) ListUnconfirmedTxs() (*ctypes.ResponseListUnconfirmedTxs, error) {
request := rpc.RPCRequest{
request := rpctypes.RPCRequest{
JSONRPC: "2.0",
Method: reverseFuncMap["ListUnconfirmedTxs"],
Params: []interface{}{},
@ -837,7 +837,7 @@ func (c *ClientJSON) ListUnconfirmedTxs() (*ctypes.ResponseListUnconfirmedTxs, e
}
func (c *ClientJSON) ListValidators() (*ctypes.ResponseListValidators, error) {
request := rpc.RPCRequest{
request := rpctypes.RPCRequest{
JSONRPC: "2.0",
Method: reverseFuncMap["ListValidators"],
Params: []interface{}{},
@ -864,7 +864,7 @@ func (c *ClientJSON) ListValidators() (*ctypes.ResponseListValidators, error) {
}
func (c *ClientJSON) NetInfo() (*ctypes.ResponseNetInfo, error) {
request := rpc.RPCRequest{
request := rpctypes.RPCRequest{
JSONRPC: "2.0",
Method: reverseFuncMap["NetInfo"],
Params: []interface{}{},
@ -891,7 +891,7 @@ func (c *ClientJSON) NetInfo() (*ctypes.ResponseNetInfo, error) {
}
func (c *ClientJSON) SignTx(tx types.Tx, privAccounts []*account.PrivAccount) (*ctypes.ResponseSignTx, error) {
request := rpc.RPCRequest{
request := rpctypes.RPCRequest{
JSONRPC: "2.0",
Method: reverseFuncMap["SignTx"],
Params: []interface{}{tx, privAccounts},
@ -918,7 +918,7 @@ func (c *ClientJSON) SignTx(tx types.Tx, privAccounts []*account.PrivAccount) (*
}
func (c *ClientJSON) Status() (*ctypes.ResponseStatus, error) {
request := rpc.RPCRequest{
request := rpctypes.RPCRequest{
JSONRPC: "2.0",
Method: reverseFuncMap["Status"],
Params: []interface{}{},


+ 3
- 3
rpc/core_client/ws_client.go View File

@ -2,7 +2,7 @@ package core_client
import (
"github.com/gorilla/websocket"
"github.com/tendermint/tendermint/rpc"
rpctypes "github.com/tendermint/tendermint/rpc/types"
"net/http"
)
@ -32,7 +32,7 @@ func (wsc *WSClient) Dial() (*http.Response, error) {
// subscribe to an event
func (wsc *WSClient) Subscribe(eventid string) error {
return wsc.conn.WriteJSON(rpc.WSRequest{
return wsc.conn.WriteJSON(rpctypes.WSRequest{
Type: "subscribe",
Event: eventid,
})
@ -40,7 +40,7 @@ func (wsc *WSClient) Subscribe(eventid string) error {
// unsubscribe from an event
func (wsc *WSClient) Unsubscribe(eventid string) error {
return wsc.conn.WriteJSON(rpc.WSRequest{
return wsc.conn.WriteJSON(rpctypes.WSRequest{
Type: "unsubscribe",
Event: eventid,
})


+ 0
- 7
rpc/log.go View File

@ -1,7 +0,0 @@
package rpc
import (
"github.com/tendermint/log15"
)
var log = log15.New("module", "rpc")

rpc/handlers.go → rpc/server/handlers.go View File


rpc/http_params.go → rpc/server/http_params.go View File


rpc/http_server.go → rpc/server/http_server.go View File


+ 7
- 0
rpc/server/log.go View File

@ -0,0 +1,7 @@
package rpcserver
import (
"github.com/tendermint/log15"
)
var log = log15.New("module", "rpcserver")

+ 3
- 3
rpc/test/client_ws_test.go View File

@ -6,7 +6,7 @@ import (
"github.com/gorilla/websocket"
"github.com/tendermint/tendermint/account"
"github.com/tendermint/tendermint/binary"
"github.com/tendermint/tendermint/rpc"
"github.com/tendermint/tendermint/rpc/types"
"github.com/tendermint/tendermint/types"
"net/http"
"testing"
@ -30,7 +30,7 @@ func newWSCon(t *testing.T) *websocket.Conn {
// subscribe to an event
func subscribe(t *testing.T, con *websocket.Conn, eventid string) {
err := con.WriteJSON(rpc.WSRequest{
err := con.WriteJSON(rpctypes.WSRequest{
Type: "subscribe",
Event: eventid,
})
@ -41,7 +41,7 @@ func subscribe(t *testing.T, con *websocket.Conn, eventid string) {
// unsubscribe from an event
func unsubscribe(t *testing.T, con *websocket.Conn, eventid string) {
err := con.WriteJSON(rpc.WSRequest{
err := con.WriteJSON(rpctypes.WSRequest{
Type: "unsubscribe",
Event: eventid,
})


rpc/types.go → rpc/types/types.go View File


Loading…
Cancel
Save