|
@@ -9,10 +9,9 @@ import (
|
|
|
|
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/google/uuid"
|
|
|
|
|
|
|
|
- mL0 "gitp78su.ipnodns.ru/svi/kern/v4/lev0"
|
|
|
|
|
|
|
+ "gitp78su.ipnodns.ru/svi/kern/v4/lev0"
|
|
|
mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
|
|
mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
|
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
|
|
|
- "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec"
|
|
|
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev0/etypes/ebool"
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev0/etypes/ebool"
|
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
|
|
|
mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
|
|
mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
|
|
@@ -104,7 +103,7 @@ func (sf *ClientBusHttp) Unsubscribe(handler bus_spec.IBusHandlerSubscribe) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Subscribe -- подписывается на топик в дистанционной шине.
|
|
// Subscribe -- подписывается на топик в дистанционной шине.
|
|
|
-func (sf *ClientBusHttp) Subscribe(handler bus_spec.IBusHandlerSubscribe) def_spec.IResult[mKs.EBool] {
|
|
|
|
|
|
|
+func (sf *ClientBusHttp) Subscribe(handler bus_spec.IBusHandlerSubscribe) *lev0.Result[mKs.EBool] {
|
|
|
_uuid, err := uuid.NewV6()
|
|
_uuid, err := uuid.NewV6()
|
|
|
helpers.If(err != nil).
|
|
helpers.If(err != nil).
|
|
|
Hassert("ClientBusHttp.Subscribe(): in generate UUID v6, err=\n\t%v",
|
|
Hassert("ClientBusHttp.Subscribe(): in generate UUID v6, err=\n\t%v",
|
|
@@ -126,28 +125,28 @@ func (sf *ClientBusHttp) Subscribe(handler bus_spec.IBusHandlerSubscribe) def_sp
|
|
|
resBody := sf.makePost(hReq)
|
|
resBody := sf.makePost(hReq)
|
|
|
if resBody.IsErr() {
|
|
if resBody.IsErr() {
|
|
|
err := defs.Err("ClientBusHttp.Subscribe(): in make POST-request, err=\n\t%w", err)
|
|
err := defs.Err("ClientBusHttp.Subscribe(): in make POST-request, err=\n\t%w", err)
|
|
|
- return mL0.NewErr[mKs.EBool](err)
|
|
|
|
|
|
|
+ return lev0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
}
|
|
|
resp := &dot.SubscribeResp{}
|
|
resp := &dot.SubscribeResp{}
|
|
|
err = json.Unmarshal(resBody.Ok(), resp)
|
|
err = json.Unmarshal(resBody.Ok(), resp)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
err := defs.Err("ClientBusHttp.Subscribe(): in unmarshal response, err=\n\t%v", err)
|
|
err := defs.Err("ClientBusHttp.Subscribe(): in unmarshal response, err=\n\t%v", err)
|
|
|
- return mL0.NewErr[mKs.EBool](err)
|
|
|
|
|
|
|
+ return lev0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
}
|
|
|
if resp.Status_.Get() != "ok" {
|
|
if resp.Status_.Get() != "ok" {
|
|
|
err := defs.Err("ClientBusHttp.Subscribe(): resp!='ok', err=\n\t%v", resp.Status_)
|
|
err := defs.Err("ClientBusHttp.Subscribe(): resp!='ok', err=\n\t%v", resp.Status_)
|
|
|
- return mL0.NewErr[mKs.EBool](err)
|
|
|
|
|
|
|
+ return lev0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
}
|
|
|
if resp.Uuid_ != req.Uuid_ {
|
|
if resp.Uuid_ != req.Uuid_ {
|
|
|
err := defs.Err("ClientBusHttp.Subscribe(): resp uuid(%v) bad", resp.Uuid_)
|
|
err := defs.Err("ClientBusHttp.Subscribe(): resp uuid(%v) bad", resp.Uuid_)
|
|
|
- return mL0.NewErr[mKs.EBool](err)
|
|
|
|
|
|
|
+ return lev0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
}
|
|
|
res := sf.bus.Subscribe(handler)
|
|
res := sf.bus.Subscribe(handler)
|
|
|
return res
|
|
return res
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// SendRequest -- отправляет в дистанционную шину запрос.
|
|
// SendRequest -- отправляет в дистанционную шину запрос.
|
|
|
-func (sf *ClientBusHttp) SendRequest(topic bus_ent.ITopicFix, binReq []byte) mL0.IResult[[]byte] {
|
|
|
|
|
|
|
+func (sf *ClientBusHttp) SendRequest(topic bus_ent.ITopicFix, binReq []byte) *lev0.Result[[]byte] {
|
|
|
_uuid, err := uuid.NewV6()
|
|
_uuid, err := uuid.NewV6()
|
|
|
helpers.If(err != nil).
|
|
helpers.If(err != nil).
|
|
|
Hassert("ClientBusHttp.SendRequest(): in generate UUID v6, err=\n\t%v",
|
|
Hassert("ClientBusHttp.SendRequest(): in generate UUID v6, err=\n\t%v",
|
|
@@ -169,41 +168,41 @@ func (sf *ClientBusHttp) SendRequest(topic bus_ent.ITopicFix, binReq []byte) mL0
|
|
|
resBody := sf.makePost(hReq)
|
|
resBody := sf.makePost(hReq)
|
|
|
if resBody.IsErr() {
|
|
if resBody.IsErr() {
|
|
|
err := defs.Err("ClientBusHttp.SendRequest(): in make request, err=\n\t%w", err)
|
|
err := defs.Err("ClientBusHttp.SendRequest(): in make request, err=\n\t%w", err)
|
|
|
- return mL0.WrapErr(resBody, err)
|
|
|
|
|
|
|
+ return lev0.WrapErr(resBody, err)
|
|
|
}
|
|
}
|
|
|
resp := &dot.ServeResp{}
|
|
resp := &dot.ServeResp{}
|
|
|
err = json.Unmarshal(resBody.Ok(), resp)
|
|
err = json.Unmarshal(resBody.Ok(), resp)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
err := defs.Err("ClientBusHttp.SendRequest(): in unmarshal response, err=\n\t%v", err)
|
|
err := defs.Err("ClientBusHttp.SendRequest(): in unmarshal response, err=\n\t%v", err)
|
|
|
- return mL0.NewErr[[]byte](err)
|
|
|
|
|
|
|
+ return lev0.NewErr[[]byte](err)
|
|
|
}
|
|
}
|
|
|
if resp.Status_.Get() != "ok" {
|
|
if resp.Status_.Get() != "ok" {
|
|
|
err := defs.Err("ClientBusHttp.SendRequest(): resp!='ok', err=\n\t%v", resp.Status_)
|
|
err := defs.Err("ClientBusHttp.SendRequest(): resp!='ok', err=\n\t%v", resp.Status_)
|
|
|
- return mL0.NewErr[[]byte](err)
|
|
|
|
|
|
|
+ return lev0.NewErr[[]byte](err)
|
|
|
}
|
|
}
|
|
|
if resp.Uuid_ != req.Uuid_ {
|
|
if resp.Uuid_ != req.Uuid_ {
|
|
|
err := defs.Err("ClientBusHttp.SendRequest(): resp uuid(%v) bad", resp.Uuid_)
|
|
err := defs.Err("ClientBusHttp.SendRequest(): resp uuid(%v) bad", resp.Uuid_)
|
|
|
- return mL0.NewErr[[]byte](err)
|
|
|
|
|
|
|
+ return lev0.NewErr[[]byte](err)
|
|
|
}
|
|
}
|
|
|
- return mL0.NewOk(resp.BinResp_)
|
|
|
|
|
|
|
+ return lev0.NewOk(resp.BinResp_)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// RegisterServe -- регистрирует в локальной шине обработчик.
|
|
// RegisterServe -- регистрирует в локальной шине обработчик.
|
|
|
-func (sf *ClientBusHttp) RegisterServe(handler bus_spec.IBusHandlerServe) mL0.IResult[mKs.EBool] {
|
|
|
|
|
|
|
+func (sf *ClientBusHttp) RegisterServe(handler bus_spec.IBusHandlerServe) *lev0.Result[mKs.EBool] {
|
|
|
if handler == nil {
|
|
if handler == nil {
|
|
|
err := defs.Err("ClientBusHttp.RegisterServe(): handler==nil")
|
|
err := defs.Err("ClientBusHttp.RegisterServe(): handler==nil")
|
|
|
- return mL0.NewErr[mKs.EBool](err)
|
|
|
|
|
|
|
+ return lev0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
}
|
|
|
res := sf.bus.RegisterServe(handler)
|
|
res := sf.bus.RegisterServe(handler)
|
|
|
if res.IsErr() {
|
|
if res.IsErr() {
|
|
|
err := defs.Err("ClientBusHttp.RegisterServe(): in register serve to bus, err=\n\t%v", res.Err())
|
|
err := defs.Err("ClientBusHttp.RegisterServe(): in register serve to bus, err=\n\t%v", res.Err())
|
|
|
- return mL0.NewErr[mKs.EBool](err)
|
|
|
|
|
|
|
+ return lev0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
}
|
|
|
- return mL0.NewOk(ebool.NewEBool(true))
|
|
|
|
|
|
|
+ return lev0.NewOk(ebool.NewEBool(true))
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Publish -- публикует сообщение в дистанционной шину.
|
|
// Publish -- публикует сообщение в дистанционной шину.
|
|
|
-func (sf *ClientBusHttp) Publish(topic bus_ent.ITopicFix, binMsg []byte) mL0.IResult[mKs.EBool] {
|
|
|
|
|
|
|
+func (sf *ClientBusHttp) Publish(topic bus_ent.ITopicFix, binMsg []byte) *lev0.Result[mKs.EBool] {
|
|
|
_uuid, err := uuid.NewV6()
|
|
_uuid, err := uuid.NewV6()
|
|
|
helpers.If(err != nil).
|
|
helpers.If(err != nil).
|
|
|
Hassert("ClientBusHttp.Publish(): in generate UUID v6, err=\n\t%v",
|
|
Hassert("ClientBusHttp.Publish(): in generate UUID v6, err=\n\t%v",
|
|
@@ -223,32 +222,32 @@ func (sf *ClientBusHttp) Publish(topic bus_ent.ITopicFix, binMsg []byte) mL0.IRe
|
|
|
resBody := sf.makePost(hReq)
|
|
resBody := sf.makePost(hReq)
|
|
|
if resBody.IsErr() {
|
|
if resBody.IsErr() {
|
|
|
err := defs.Err("ClientBusHttp.Publish(): in make request, err=\n\t%w", err)
|
|
err := defs.Err("ClientBusHttp.Publish(): in make request, err=\n\t%w", err)
|
|
|
- return mL0.NewErr[mKs.EBool](err)
|
|
|
|
|
|
|
+ return lev0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
}
|
|
|
resp := &dot.PublishResp{}
|
|
resp := &dot.PublishResp{}
|
|
|
err = json.Unmarshal(resBody.Ok(), resp)
|
|
err = json.Unmarshal(resBody.Ok(), resp)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
err := defs.Err("ClientBusHttp.Publish(): in unmarshal response, err=\n\t%v", err)
|
|
err := defs.Err("ClientBusHttp.Publish(): in unmarshal response, err=\n\t%v", err)
|
|
|
- return mL0.NewErr[mKs.EBool](err)
|
|
|
|
|
|
|
+ return lev0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
}
|
|
|
if resp.Status_.Get() != "ok" {
|
|
if resp.Status_.Get() != "ok" {
|
|
|
err := defs.Err("ClientBusHttp.Publish(): resp!='ok', err=\n\t%v", resp.Status_)
|
|
err := defs.Err("ClientBusHttp.Publish(): resp!='ok', err=\n\t%v", resp.Status_)
|
|
|
- return mL0.NewErr[mKs.EBool](err)
|
|
|
|
|
|
|
+ return lev0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
}
|
|
|
if resp.Uuid_ != req.Uuid_ {
|
|
if resp.Uuid_ != req.Uuid_ {
|
|
|
err := defs.Err("ClientBusHttp.Publish(): resp uuid(%v) bad", resp.Uuid_)
|
|
err := defs.Err("ClientBusHttp.Publish(): resp uuid(%v) bad", resp.Uuid_)
|
|
|
- return mL0.NewErr[mKs.EBool](err)
|
|
|
|
|
|
|
+ return lev0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
}
|
|
|
- return mL0.NewOk(ebool.NewEBool(true))
|
|
|
|
|
|
|
+ return lev0.NewOk(ebool.NewEBool(true))
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Единый обработчик запросов.
|
|
// Единый обработчик запросов.
|
|
|
-func (sf *ClientBusHttp) makePost(hReq *http.Request) def_spec.IResult[[]byte] {
|
|
|
|
|
|
|
+func (sf *ClientBusHttp) makePost(hReq *http.Request) *lev0.Result[[]byte] {
|
|
|
hReq.Header.Add("Content-Type", "application/json")
|
|
hReq.Header.Add("Content-Type", "application/json")
|
|
|
_resp, err := http.DefaultClient.Do(hReq)
|
|
_resp, err := http.DefaultClient.Do(hReq)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
err := defs.Err("ClientBusHttp.makePost(): after request, err=\n\t%w", err)
|
|
err := defs.Err("ClientBusHttp.makePost(): after request, err=\n\t%w", err)
|
|
|
- return mL0.NewErr[[]byte](err)
|
|
|
|
|
|
|
+ return lev0.NewErr[[]byte](err)
|
|
|
}
|
|
}
|
|
|
defer func() {
|
|
defer func() {
|
|
|
_ = _resp.Body.Close()
|
|
_ = _resp.Body.Close()
|
|
@@ -256,16 +255,16 @@ func (sf *ClientBusHttp) makePost(hReq *http.Request) def_spec.IResult[[]byte] {
|
|
|
if _resp.StatusCode != http.StatusOK {
|
|
if _resp.StatusCode != http.StatusOK {
|
|
|
err := defs.Err("ClientBusHttp.makePost(): url=%q, status=%q",
|
|
err := defs.Err("ClientBusHttp.makePost(): url=%q, status=%q",
|
|
|
hReq.URL, _resp.Status)
|
|
hReq.URL, _resp.Status)
|
|
|
- return mL0.NewErr[[]byte](err)
|
|
|
|
|
|
|
+ return lev0.NewErr[[]byte](err)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
binBody, err := io.ReadAll(_resp.Body)
|
|
binBody, err := io.ReadAll(_resp.Body)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
err := defs.Err("ClientBusHttp.makePost(): after read body, err=\n\t%v",
|
|
err := defs.Err("ClientBusHttp.makePost(): after read body, err=\n\t%v",
|
|
|
err)
|
|
err)
|
|
|
- return mL0.NewErr[[]byte](err)
|
|
|
|
|
|
|
+ return lev0.NewErr[[]byte](err)
|
|
|
}
|
|
}
|
|
|
- return mL0.NewOk(binBody)
|
|
|
|
|
|
|
+ return lev0.NewOk(binBody)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Log -- возвращает локальный лог клиента.
|
|
// Log -- возвращает локальный лог клиента.
|