import (
"fmt"
"time"
- "unsafe"
"github.com/Jeffail/gabs"
"github.com/alicebob/miniredis/v2"
instance *C.AllInOneInstance
}
-//export goErrorHandler
-func goErrorHandler(size C.int, start *C.char) {
- dest := make([]byte, size)
- copy(dest, (*(*[1024]byte)(unsafe.Pointer(start)))[:size:size])
-
- println("Error from all in one runner: %s", string(dest))
-}
-
func NewAllInOne() (*AllInOne, error) {
redis := miniredis.NewMiniRedis()
nats, err := server.NewServer(&server.Options{})
if !s.nats.ReadyForConnections(5 * time.Second) {
return fmt.Errorf("nats server didn't start after 5 seconds, please check if there is another service listening on the same port as nats")
}
+
handler := C.ErrorHandler(C.allInOneErrorHandler)
// Set the error handler
C.set_error_handler(handler)
typedef void (*ErrorHandler)(int, char*);
-__attribute__((weak))
void allInOneErrorHandler(int size, char* string) {
goErrorHandler(size, string);
}
\ No newline at end of file
--- /dev/null
+package allinone
+
+import "C"
+import "unsafe"
+
+//go:linkname goErrorHandler c.goErrorHandler
+//export goErrorHandler
+func goErrorHandler(size C.int, start *C.char) {
+ dest := make([]byte, size)
+ copy(dest, (*(*[1024]byte)(unsafe.Pointer(start)))[:size:size])
+
+ println("Error from all in one runner: %s", string(dest))
+}