74 lines
2.1 KiB
Markdown
74 lines
2.1 KiB
Markdown
# Набор инструментов для функций
|
||
|
||
# Пакет
|
||
|
||
Сообщение является бинарным пакетом. Для работы с ним его для начала необходимо десериализовать. Для этого используется protocol buffer
|
||
|
||
После десериализации присутствует 4 поля:
|
||
|
||
1. Параметры заголовка, которые передаются с пакетом (например http-заголовки). Формат заголовка типа key:string=valye:string
|
||
2. Метаданные. В этом поле передаются служебные данные для самого SDK.
|
||
3. Бинарные данные, которые, которые передаются в функцию
|
||
|
||
# Сборка
|
||
|
||
## Подготовка пакетов
|
||
|
||
```
|
||
apt install protobuf-compiler
|
||
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
|
||
```
|
||
|
||
## Подготовка файлов
|
||
|
||
```
|
||
protoc --go_out=. ./protobuf/*
|
||
```
|
||
|
||
# Исользование
|
||
|
||
Пример использования:
|
||
|
||
```golang
|
||
package main
|
||
|
||
import (
|
||
"git.ymnuktech.ru/ymnuk/yt-function-sdk-go.git/network"
|
||
funcSDK "git.ymnuktech.ru/ymnuk/yt-function-sdk-go.git/network"
|
||
)
|
||
|
||
func main(){
|
||
addr, exists := os.LookupEnv("NATS_ADDR")
|
||
if !exists {
|
||
addr = "nats://localhost:4222"
|
||
}
|
||
|
||
serve = funcSDK.NewServe(addr, "", "test", nil)
|
||
if serve == nil {
|
||
panic(fmt.Errorf(`serve is not created`))
|
||
}
|
||
serve.AddAccept("*")
|
||
err := serve.Run()
|
||
if err != nil {
|
||
panic(err)
|
||
}
|
||
|
||
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 {
|
||
t.Error("Has error: ", err)
|
||
return
|
||
}
|
||
var result []byte
|
||
var header *network.Header
|
||
result, header, err = serve.Call("default.test.testFuncSimple", nil, []byte("Hello"))
|
||
if err!=nil{
|
||
panic(err)
|
||
}
|
||
fmt.Println(header)
|
||
fmt.Println(string(result))
|
||
}
|
||
``` |