Fix sync Call function

This commit is contained in:
ymnuk 2022-11-04 17:15:34 +03:00
parent c2db3ee905
commit 724bef43b7
2 changed files with 10 additions and 2 deletions

View File

@ -389,7 +389,7 @@ func (serve *Serve) CallAsync(name string, header *network.Header, payload []byt
}
// Синхронный вызов функции
func (serve *Serve) Call(name string, header *network.Header, payload []byte) (result []byte, err error) {
func (serve *Serve) Call(name string, header *network.Header, payload []byte) (result []byte, head *network.Header, err error) {
chanRes := make(chan *ChanRes)
serve.CallAsync(name, header, payload, func(err error, header *network.Header, result []byte) {
chanRes <- &ChanRes{
@ -400,6 +400,7 @@ func (serve *Serve) Call(name string, header *network.Header, payload []byte) (r
})
res := <-chanRes
err = res.err
head = res.header
result = res.res
return

View File

@ -94,6 +94,7 @@ 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) {
header.ResponseHeaders["test"] = "my test"
return []byte("world"), nil
})
if err != nil {
@ -101,7 +102,8 @@ func TestCallFunction(t *testing.T) {
return
}
var result []byte
result, err = serve.Call("default.test.testFuncSimple", nil, []byte("Hello"))
var header *network.Header
result, header, err = serve.Call("default.test.testFuncSimple", nil, []byte("Hello"))
if err != nil {
t.Error(err)
return
@ -110,4 +112,9 @@ func TestCallFunction(t *testing.T) {
t.Error("Function not returned \"world\"")
return
}
if v, ok := header.ResponseHeaders["test"]; !ok {
t.Errorf("not set response header")
} else if v != "my test" {
t.Errorf("got \"my test\", but expect \"%s\"", v)
}
}