feat: integrating metrics (#84)

This commit is contained in:
gabrielmer 2025-06-27 16:31:02 +02:00 committed by GitHub
parent 0b42ac56ee
commit aba84ffc7b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -321,6 +321,10 @@ package waku
waku_is_online(wakuCtx, (WakuCallBack) WakuGoCallback, resp);
}
static void cGoWakuGetMetrics(void* wakuCtx, void* resp) {
waku_get_metrics(wakuCtx, (WakuCallBack) WakuGoCallback, resp);
}
*/
import "C"
import (
@ -1651,3 +1655,39 @@ func (n *WakuNode) IsOnline() (bool, error) {
return false, errors.New(errMsg)
}
func (n *WakuNode) GetMetrics() (string, error) {
if n == nil {
err := errors.New("waku node is nil")
Error("Failed to get metrics %v", err)
return "", err
}
Debug("Querying metrics for %v", n.nodeName)
wg := sync.WaitGroup{}
var resp = C.allocResp(unsafe.Pointer(&wg))
defer C.freeResp(resp)
wg.Add(1)
C.cGoWakuGetMetrics(n.wakuCtx, resp)
wg.Wait()
if C.getRet(resp) == C.RET_OK {
metricsStr := C.GoStringN(C.getMyCharPtr(resp), C.int(C.getMyCharLen(resp)))
if metricsStr == "" {
errMsg := "received empty metrics response"
Error(errMsg)
return "", errors.New(errMsg)
}
return metricsStr, nil
}
errMsg := "error GetMetrics: " + C.GoStringN(C.getMyCharPtr(resp), C.int(C.getMyCharLen(resp)))
Error("Failed to query metrics for %v: %v", n.nodeName, errMsg)
return "", errors.New(errMsg)
}