Add sync call

This commit is contained in:
ymnuk 2022-10-25 13:09:48 +03:00
parent 2e88bf3fa5
commit b67132ce16
2 changed files with 40 additions and 0 deletions

View File

@ -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
}

View File

@ -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
}
}