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  }