dev
go 61 lines 1.31 KB
Raw
1 package main
2
3 import (
4 "C"
5 "unsafe"
6
7 "github.com/ltcmweb/mwebd"
8 )
9
10 var server *mwebd.Server
11
12 //export StartServer
13 func StartServer(chain *C.char, dataDir *C.char, nodeUri *C.char, errMsg **C.char) C.int {
14 if server != nil {
15 server.Stop()
16 }
17 goChain := C.GoString(chain)
18 goDataDir := C.GoString(dataDir)
19 goNodeUri := C.GoString(nodeUri)
20
21 var err error
22 server, err = mwebd.NewServer(goChain, goDataDir, goNodeUri)
23 if err != nil {
24 *errMsg = C.CString(err.Error())
25 return 0
26 }
27
28 // err = server.StartUnix(goDataDir + "/mwebd.sock")
29 start, err := server.Start(0)
30 if err != nil {
31 *errMsg = C.CString(err.Error())
32 return 0
33 }
34
35 return C.int(start)
36 }
37
38 //export StopServer
39 func StopServer() {
40 if server == nil {
41 return
42 }
43 server.Stop()
44 server = nil
45 }
46
47 //export Addresses
48 func Addresses(scanSecret *C.char, scanSecretLen C.int, spendPubKey *C.char, spendPubKeyLen C.int, i C.int, j C.int) *C.char {
49 // Convert C pointers to Go byte slices
50 goScanSecret := C.GoBytes(unsafe.Pointer(scanSecret), scanSecretLen)
51 goSpendPubKey := C.GoBytes(unsafe.Pointer(spendPubKey), spendPubKeyLen)
52
53 // Call the original Go function
54 addr := mwebd.Addresses(goScanSecret, goSpendPubKey, int32(i), int32(j))
55
56 // Convert the resulting Go string to a C string
57 // The C code must free this memory
58 return C.CString(addr)
59 }
60
61 func main() {}