|
|
@@ -12,6 +12,7 @@ import (
|
|
|
|
|
|
mL0 "gitp78su.ipnodns.ru/svi/kern/v4/lev0"
|
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/topic"
|
|
|
+ "gitp78su.ipnodns.ru/svi/kern/v4/lev0/etypes/ebool"
|
|
|
mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kspec"
|
|
|
mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
|
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev1/kbus_msg/msg_pub"
|
|
|
@@ -53,7 +54,7 @@ func NewClientBusHttp(urlRemote string) mKs.IBusClient {
|
|
|
lCtx: mL1.NewLocalCtx(kCtx.Ctx()),
|
|
|
log: log,
|
|
|
bus: kBusHttp,
|
|
|
- isWork: mL1.NewSafeBool(),
|
|
|
+ isWork: mL1.NewSafeBool(true),
|
|
|
urlRemote: strings.TrimSuffix(urlRemote, "/"),
|
|
|
urlLocal: strings.TrimSuffix(urlLocal.Get(), "/"),
|
|
|
}
|
|
|
@@ -96,7 +97,7 @@ func (sf *ClientBusHttp) Unsubscribe(handler mKs.IBusHandlerSubscribe) {
|
|
|
}
|
|
|
|
|
|
// Subscribe -- подписывается на топик в дистанционной шине.
|
|
|
-func (sf *ClientBusHttp) Subscribe(handler mKs.IBusHandlerSubscribe) mKs.IResult[bool] {
|
|
|
+func (sf *ClientBusHttp) Subscribe(handler mKs.IBusHandlerSubscribe) mKs.IResult[mKs.EBool] {
|
|
|
_uuid, err := uuid.NewV6()
|
|
|
mL0.Hassert(err == nil, "ClientBusHttp.Subscribe(): in generate UUID v6, err=\n\t%v", err)
|
|
|
req := &msg_sub.SubscribeReq{
|
|
|
@@ -114,21 +115,21 @@ func (sf *ClientBusHttp) Subscribe(handler mKs.IBusHandlerSubscribe) mKs.IResult
|
|
|
resBody := sf.makePost(hReq)
|
|
|
if resBody.IsErr() {
|
|
|
err := fmt.Errorf("ClientBusHttp.Subscribe(): in make POST-request, err=\n\t%w", err)
|
|
|
- return mL0.NewErr[bool](err)
|
|
|
+ return mL0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
|
resp := &msg_sub.SubscribeResp{}
|
|
|
err = json.Unmarshal(resBody.Ok(), resp)
|
|
|
if err != nil {
|
|
|
err := fmt.Errorf("ClientBusHttp.Subscribe(): in unmarshal response, err=\n\t%v", err)
|
|
|
- return mL0.NewErr[bool](err)
|
|
|
+ return mL0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
|
if resp.Status_ != "ok" {
|
|
|
err := fmt.Errorf("ClientBusHttp.Subscribe(): resp!='ok', err=\n\t%v", resp.Status_)
|
|
|
- return mL0.NewErr[bool](err)
|
|
|
+ return mL0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
|
if resp.Uuid_ != req.Uuid_ {
|
|
|
err := fmt.Errorf("ClientBusHttp.Subscribe(): resp uuid(%v) bad", resp.Uuid_)
|
|
|
- return mL0.NewErr[bool](err)
|
|
|
+ return mL0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
|
res := sf.bus.Subscribe(handler)
|
|
|
return res
|
|
|
@@ -173,20 +174,20 @@ func (sf *ClientBusHttp) SendRequest(topic *topic.ATopic, binReq []byte) mL0.IRe
|
|
|
}
|
|
|
|
|
|
// RegisterServe -- регистрирует в локальной шине обработчик.
|
|
|
-func (sf *ClientBusHttp) RegisterServe(handler mKs.IBusHandlerServe) mL0.IResult[bool] {
|
|
|
+func (sf *ClientBusHttp) RegisterServe(handler mKs.IBusHandlerServe) mL0.IResult[mKs.EBool] {
|
|
|
if handler == nil {
|
|
|
- return mL0.NewErr[bool](fmt.Errorf("ClientBusHttp.RegisterServe(): handler==nil"))
|
|
|
+ return mL0.NewErr[mKs.EBool](fmt.Errorf("ClientBusHttp.RegisterServe(): handler==nil"))
|
|
|
}
|
|
|
res := sf.bus.RegisterServe(handler)
|
|
|
if res.IsErr() {
|
|
|
err := fmt.Errorf("ClientBusHttp.RegisterServe(): in register serve to bus, err=\n\t%v", res.Err())
|
|
|
- return mL0.NewErr[bool](err)
|
|
|
+ return mL0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
|
- return mL0.NewOk(true)
|
|
|
+ return mL0.NewOk(ebool.NewEBool(true))
|
|
|
}
|
|
|
|
|
|
// Publish -- публикует сообщение в дистанционной шину.
|
|
|
-func (sf *ClientBusHttp) Publish(topic *topic.ATopic, binMsg []byte) mL0.IResult[bool] {
|
|
|
+func (sf *ClientBusHttp) Publish(topic *topic.ATopic, binMsg []byte) mL0.IResult[mKs.EBool] {
|
|
|
_uuid, err := uuid.NewV6()
|
|
|
mL1.Hassert()(err == nil, "ClientBusHttp.Publish(): in generate UUID v6, err=\n\t%v", err)
|
|
|
req := &msg_pub.PublishReq{
|
|
|
@@ -204,23 +205,23 @@ func (sf *ClientBusHttp) Publish(topic *topic.ATopic, binMsg []byte) mL0.IResult
|
|
|
resBody := sf.makePost(hReq)
|
|
|
if resBody.IsErr() {
|
|
|
err := fmt.Errorf("ClientBusHttp.Publish(): in make request, err=\n\t%w", err)
|
|
|
- return mL0.NewErr[bool](err)
|
|
|
+ return mL0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
|
resp := &msg_pub.PublishResp{}
|
|
|
err = json.Unmarshal(resBody.Ok(), resp)
|
|
|
if err != nil {
|
|
|
err := fmt.Errorf("ClientBusHttp.Publish(): in unmarshal response, err=\n\t%v", err)
|
|
|
- return mL0.NewErr[bool](err)
|
|
|
+ return mL0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
|
if resp.Status_ != "ok" {
|
|
|
err := fmt.Errorf("ClientBusHttp.Publish(): resp!='ok', err=\n\t%v", resp.Status_)
|
|
|
- return mL0.NewErr[bool](err)
|
|
|
+ return mL0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
|
if resp.Uuid_ != req.Uuid_ {
|
|
|
err := fmt.Errorf("ClientBusHttp.Publish(): resp uuid(%v) bad", resp.Uuid_)
|
|
|
- return mL0.NewErr[bool](err)
|
|
|
+ return mL0.NewErr[mKs.EBool](err)
|
|
|
}
|
|
|
- return mL0.NewOk(true)
|
|
|
+ return mL0.NewOk(ebool.NewEBool(true))
|
|
|
}
|
|
|
|
|
|
// Единый обработчик запросов.
|