diff options
author | Maran <maran.hidskes@gmail.com> | 2014-05-02 18:01:50 +0800 |
---|---|---|
committer | Maran <maran.hidskes@gmail.com> | 2014-05-02 18:01:50 +0800 |
commit | 1b597b8ca9ee9564f29b93e1ba5877e012a8d989 (patch) | |
tree | c7cd0f40685ba91d314ceecefb92b592e2a934e0 /etherpc/server.go | |
parent | da7828f336cb323c78810d2963f8353787c03077 (diff) | |
download | dexon-1b597b8ca9ee9564f29b93e1ba5877e012a8d989.tar.gz dexon-1b597b8ca9ee9564f29b93e1ba5877e012a8d989.tar.zst dexon-1b597b8ca9ee9564f29b93e1ba5877e012a8d989.zip |
Initial commit
Diffstat (limited to 'etherpc/server.go')
-rw-r--r-- | etherpc/server.go | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/etherpc/server.go b/etherpc/server.go new file mode 100644 index 000000000..291ca2d95 --- /dev/null +++ b/etherpc/server.go @@ -0,0 +1,82 @@ +package main + +import ( + "log" + "net" + "net/rpc" + "net/rpc/jsonrpc" +) + +type JsonRpcServer struct { + quit chan bool + listener net.Listener +} + +func (s *JsonRpcServer) exitHandler() { +out: + for { + select { + case <-s.quit: + s.listener.Close() + break out + } + } + + // ethutil.Config.Log.Infoln("[JSON] Shutdown JSON-RPC server") + log.Println("[JSON] Shutdown JSON-RPC server") +} + +func (s *JsonRpcServer) Stop() { + close(s.quit) +} + +func (s *JsonRpcServer) Start() { + // ethutil.Config.Log.Infoln("[JSON] Starting JSON-RPC server") + log.Println("[JSON] Starting JSON-RPC server") + go s.exitHandler() + rpc.Register(new(MainPackage)) + rpc.HandleHTTP() + + for { + conn, err := s.listener.Accept() + if err != nil { + // ethutil.Config.Log.Infoln("[JSON] Error starting JSON-RPC:", err) + log.Println("[JSON] Error starting JSON-RPC:", err) + continue + } + log.Println("Incoming request") + go jsonrpc.ServeConn(conn) + } +} + +func NewJsonRpcServer() *JsonRpcServer { + l, err := net.Listen("tcp", ":30304") + if err != nil { + // ethutil.Config.Log.Infoln("Error starting JSON-RPC") + log.Println("Error starting JSON-RPC") + } + + return &JsonRpcServer{ + listener: l, + quit: make(chan bool), + } +} + +func main() { + s := NewJsonRpcServer() + s.Start() + /* + + conn, err := net.Dial("tcp", "localhost:30304") + + if err != nil { + panic(err) + } + defer conn.Close() + c := jsonrpc.NewClient(conn) + var reply int + err = c.Call("MainPackage.Test", nil, &reply) + log.Println("ERR:", err) + log.Println("result:", reply) + */ +} |