Add sync call
This commit is contained in:
parent
2e88bf3fa5
commit
b67132ce16
|
@ -215,3 +215,22 @@ func (serve *Serve) CallAsync(name string, header *network.Header, payload []byt
|
|||
serve.callbackFuncs[metadata.CallID] = f
|
||||
serve.nc.Publish(name, buf)
|
||||
}
|
||||
|
||||
func (serve *Serve) Call(name string, header *network.Header, payload []byte) (result []byte, err error) {
|
||||
chanErr := make(chan error)
|
||||
chanResult := make(chan []byte)
|
||||
serve.CallAsync(name, header, []byte("Hello"), func(err error, result []byte) {
|
||||
chanErr <- err
|
||||
chanResult <- result
|
||||
})
|
||||
/*select {
|
||||
case err = <-chanErr:
|
||||
}*/
|
||||
err = <-chanErr
|
||||
/*select {
|
||||
case result = <-chanResult:
|
||||
}*/
|
||||
result = <-chanResult
|
||||
|
||||
return
|
||||
}
|
||||
|
|
|
@ -74,3 +74,24 @@ func TestCallFunctionAsync(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCallFunction(t *testing.T) {
|
||||
var err error
|
||||
err = serve.RegisterFunction("testFuncSimple", func(header *network.Header, paylod []byte) (result []byte, err error) {
|
||||
return []byte("world"), nil
|
||||
})
|
||||
if err != nil {
|
||||
t.Error("Has error: ", err)
|
||||
return
|
||||
}
|
||||
var result []byte
|
||||
result, err = serve.Call("default.test.testFuncSimple", nil, []byte("Hello"))
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
if string(result) != "world" {
|
||||
t.Error("Function not returned \"world\"")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user