# Набор инструментов для функций # Пакет Сообщение является бинарным пакетом. Для работы с ним его для начала необходимо десериализовать. Для этого используется 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)) } ```