lib.go 854 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package dart_bridge
  2. /*
  3. #include <stdlib.h>
  4. #include "stdint.h"
  5. #include "include/dart_api_dl.h"
  6. #include "include/dart_api_dl.c"
  7. #include "include/dart_native_api.h"
  8. bool GoDart_PostCObject(Dart_Port_DL port, Dart_CObject* obj) {
  9. return Dart_PostCObject_DL(port, obj);
  10. }
  11. */
  12. import "C"
  13. import (
  14. "fmt"
  15. "unsafe"
  16. )
  17. func InitDartApi(api unsafe.Pointer) {
  18. if C.Dart_InitializeApiDL(api) != 0 {
  19. panic("failed to create dart bridge")
  20. } else {
  21. fmt.Println("Dart Api DL is initialized")
  22. }
  23. }
  24. func SendToPort(port int64, msg string) bool {
  25. var obj C.Dart_CObject
  26. obj._type = C.Dart_CObject_kString
  27. msgString := C.CString(msg)
  28. defer C.free(unsafe.Pointer(msgString))
  29. ptr := unsafe.Pointer(&obj.value[0])
  30. *(**C.char)(ptr) = msgString
  31. isSuccess := C.GoDart_PostCObject(C.Dart_Port_DL(port), &obj)
  32. if !isSuccess {
  33. return false
  34. }
  35. return true
  36. }