This commit is contained in:
crusader
2017-10-31 19:27:26 +09:00
parent dc520fdb24
commit 9775e5ea4e
9 changed files with 202 additions and 10 deletions

21
server/rpc/server.go Normal file
View File

@@ -0,0 +1,21 @@
package rpc
import (
"git.loafle.net/commons_go/rpc"
"git.loafle.net/commons_go/rpc/protocol/json"
rpcServer "git.loafle.net/commons_go/rpc/server"
)
func New(registry rpc.Registry) Server {
sh := NewServerHandler(registry)
sh.RegisterCodec(json.NewServerCodec(), "json")
s := rpcServer.New(sh)
return s
}
type Server interface {
rpcServer.Server
}

View File

@@ -0,0 +1,47 @@
package rpc
import (
"io"
"git.loafle.net/commons_go/rpc"
rpcServer "git.loafle.net/commons_go/rpc/server"
)
func NewServerHandler(registry rpc.Registry) *ServerHandlers {
sh := &ServerHandlers{}
sh.RPCRegistry = registry
return sh
}
type ServerHandlers struct {
rpcServer.ServerHandlers
}
func (sh *ServerHandlers) GetContentType(r io.Reader) string {
return "json"
}
func (sh *ServerHandlers) OnPreRead(r io.Reader) {
// no op
}
func (sh *ServerHandlers) OnPostRead(r io.Reader) {
// no op
}
func (sh *ServerHandlers) OnPreWriteResult(w io.Writer, result interface{}) {
// no op
}
func (sh *ServerHandlers) OnPostWriteResult(w io.Writer, result interface{}) {
// no op
}
func (sh *ServerHandlers) OnPreWriteError(w io.Writer, err error) {
// no op
}
func (sh *ServerHandlers) OnPostWriteError(w io.Writer, err error) {
// no op
}

View File

@@ -8,7 +8,6 @@ import (
func New(addr string, registry rpc.Registry) server.Server {
sh := NewServerHandler(addr, registry)
sh.workersChan = make(chan struct{}, 10)
s := server.NewServer(sh)

View File

@@ -5,13 +5,13 @@ import (
"git.loafle.net/commons_go/rpc"
"git.loafle.net/commons_go/server/ipc"
rpcServer "git.loafle.net/overflow/overflow_discovery/server/rpc"
)
func NewServerHandler(addr string, registry rpc.Registry) *ServerHandlers {
sh := &ServerHandlers{
registry: registry,
}
sh := &ServerHandlers{}
sh.Addr = addr
sh.rpcServer = rpcServer.New(registry)
return sh
}
@@ -19,22 +19,21 @@ func NewServerHandler(addr string, registry rpc.Registry) *ServerHandlers {
type ServerHandlers struct {
ipc.ServerHandlers
registry rpc.Registry
workersChan chan struct{}
rpcServer rpcServer.Server
}
func (sh *ServerHandlers) Handle(remoteAddr string, rwc io.ReadWriteCloser, stopChan chan struct{}) {
contentType := "json"
Loop:
for {
if err := sh.registry.Invoke(contentType, rwc, rwc, nil, nil); nil != err && sh.IsClientDisconnect(err) {
if err := sh.rpcServer.Handle(rwc, rwc); nil != err && sh.IsClientDisconnect(err) {
stopChan <- struct{}{}
break Loop
}
select {
case <-stopChan:
rwc.Close()
return
default:
}