github.com/code-to-go/safepool.lib@v0.0.0-20221205180519-ee25e63c226e/exports.go (about) 1 package main 2 3 /* 4 typedef struct Result{ 5 char* err; 6 char* data; 7 } Result; 8 9 typedef struct App { 10 void (*feed)(char* name, char* data, int eof); 11 } App; 12 13 #include <stdlib.h> 14 */ 15 import "C" 16 import ( 17 "encoding/json" 18 19 pool "github.com/code-to-go/safepool.lib/pool" 20 "github.com/code-to-go/safepool.lib/transport" 21 ) 22 23 //export start 24 func start() C.Result { 25 var res C.Result 26 27 return res 28 } 29 30 //export stop 31 func stop() C.Result { 32 var res C.Result 33 return res 34 } 35 36 //export setDomain 37 func setDomain(domainDef *C.char) *C.char { 38 return nil 39 } 40 41 //export saveSafe 42 func saveSafe(nameC *C.char, configsC *C.char) *C.char { 43 name := C.GoString(nameC) 44 configsS := C.GoString(configsC) 45 46 var configs []transport.Config 47 err := json.Unmarshal([]byte(configsS), &configs) 48 if err != nil { 49 return C.CString(err.Error()) 50 } 51 52 if err = pool.Save(name, configs); err != nil { 53 return C.CString(err.Error()) 54 } 55 return nil 56 } 57 58 //export openSafe 59 func openSafe(nameC *C.char, handle *C.int) *C.char { 60 name := C.GoString(nameC) 61 pool.Load(name) 62 63 return nil 64 } 65 66 //export createSafe 67 func createSafe(nameDef *C.char, jsonConfig *C.char, handle *C.int) *C.char { 68 return nil 69 }