dropped fiber for std http + gorilla websocket
Session serialization will use gob encoding instead of json. Binary size will likely be reduced. General backend code refactoring.
This commit is contained in:
39
server/rpc/wrapper.go
Normal file
39
server/rpc/wrapper.go
Normal file
@@ -0,0 +1,39 @@
|
||||
package rpc
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"io"
|
||||
"net/rpc/jsonrpc"
|
||||
)
|
||||
|
||||
// Wrapper for HTTP RPC request that implements io.Reader interface
|
||||
type rpcRequest struct {
|
||||
r io.Reader
|
||||
rw io.ReadWriter
|
||||
done chan bool
|
||||
}
|
||||
|
||||
func newRequest(r io.Reader) *rpcRequest {
|
||||
var buf bytes.Buffer
|
||||
done := make(chan bool)
|
||||
return &rpcRequest{r, &buf, done}
|
||||
}
|
||||
|
||||
func (r *rpcRequest) Read(p []byte) (n int, err error) {
|
||||
return r.r.Read(p)
|
||||
}
|
||||
|
||||
func (r *rpcRequest) Write(p []byte) (n int, err error) {
|
||||
return r.rw.Write(p)
|
||||
}
|
||||
|
||||
func (r *rpcRequest) Close() error {
|
||||
r.done <- true
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *rpcRequest) Call() io.Reader {
|
||||
go jsonrpc.ServeConn(r)
|
||||
<-r.done
|
||||
return r.rw
|
||||
}
|
||||
Reference in New Issue
Block a user