mirror of https://github.com/status-im/go-waku.git
65 lines
1.3 KiB
Go
65 lines
1.3 KiB
Go
package main
|
|
|
|
/*
|
|
#include <stdlib.h>
|
|
#include <cgo_utils.h>
|
|
extern void _waku_execCB(WakuCallBack cb, int retCode, char* msg, void* user_data);
|
|
*/
|
|
import "C"
|
|
import (
|
|
"errors"
|
|
"unsafe"
|
|
|
|
"github.com/waku-org/go-waku/library"
|
|
)
|
|
|
|
const ret_ok = 0
|
|
const ret_err = 1
|
|
const ret_cb = 2
|
|
|
|
var errMissingCallback = errors.New("missing callback")
|
|
|
|
func onSuccesfulResponse(value string, cb C.WakuCallBack, userData unsafe.Pointer) C.int {
|
|
retCode := ret_ok
|
|
if cb == nil {
|
|
retCode = ret_cb
|
|
value = errMissingCallback.Error()
|
|
}
|
|
|
|
cstrVal := C.CString(value)
|
|
C._waku_execCB(cb, C.int(retCode), cstrVal, userData)
|
|
|
|
C.free(unsafe.Pointer(cstrVal))
|
|
|
|
return ret_ok
|
|
}
|
|
|
|
func onError(err error, cb C.WakuCallBack, userData unsafe.Pointer) C.int {
|
|
retCode := ret_err
|
|
if cb == nil {
|
|
retCode = ret_cb
|
|
err = errMissingCallback
|
|
}
|
|
|
|
if err != nil {
|
|
errMsg := err.Error()
|
|
cstrVal := C.CString(errMsg)
|
|
C._waku_execCB(cb, C.int(retCode), cstrVal, userData)
|
|
C.free(unsafe.Pointer(cstrVal))
|
|
return ret_err
|
|
}
|
|
|
|
retCode = ret_ok
|
|
C._waku_execCB(cb, C.int(retCode), nil, userData)
|
|
return ret_ok
|
|
}
|
|
|
|
func getInstance(wakuCtx unsafe.Pointer) (*library.WakuInstance, error) {
|
|
pid := (*uint)(wakuCtx)
|
|
if pid == nil {
|
|
return nil, errors.New("invalid waku context")
|
|
}
|
|
|
|
return library.GetInstance(*pid)
|
|
}
|