fix: return general data info when a mtp is down

This commit is contained in:
leandrofars 2024-04-13 15:30:45 -03:00
parent 945405eaf7
commit 9ae5128800
2 changed files with 38 additions and 10 deletions

View File

@ -73,28 +73,24 @@ func (a *Api) generalInfo(w http.ResponseWriter, r *http.Request) {
result.ProductClassCount = productclasscount.Msg
now := time.Now()
_, err = bridge.NatsReq[time.Duration](
_, err = bridge.NatsReqWithoutHttpSet[time.Duration](
local.NATS_WS_ADAPTER_SUBJECT_PREFIX+"rtt",
[]byte(""),
w,
a.nc,
)
if err != nil {
return
}
if err == nil {
result.WebsocketsRtt = time.Until(now).String()
}
now = time.Now()
_, err = bridge.NatsReq[time.Duration](
_, err = bridge.NatsReqWithoutHttpSet[time.Duration](
local.NATS_MQTT_ADAPTER_SUBJECT_PREFIX+"rtt",
[]byte(""),
w,
a.nc,
)
if err != nil {
return
}
if err == nil {
result.MqttRtt = time.Until(now).String()
}
err = json.NewEncoder(w).Encode(result)
if err != nil {

View File

@ -172,3 +172,35 @@ func NatsReq[T entity.DataType](
return answer, nil
}
func NatsReqWithoutHttpSet[T entity.DataType](
subj string,
body []byte,
nc *nats.Conn,
) (*entity.MsgAnswer[T], error) {
var answer *entity.MsgAnswer[T]
msg, err := nc.Request(subj, body, local.NATS_REQUEST_TIMEOUT)
if err != nil {
log.Println(err)
return nil, err
}
err = json.Unmarshal(msg.Data, &answer)
if err != nil {
var errMsg *entity.MsgAnswer[*string]
err = json.Unmarshal(msg.Data, &errMsg)
if err != nil {
log.Println("Bad answer message formatting: ", err.Error())
return nil, err
}
log.Printf("Error message received, msg: %s, code: %d", *errMsg.Msg, errMsg.Code)
return nil, errNatsMsgReceivedWithErrorData
}
return answer, nil
}