123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- package main
- import (
- "encoding/json"
- "fmt"
- zrfu "git.swzry.com/zry/zry-rust-ffi-utils/go-zrfu"
- "io"
- )
- type TestCBORStruct struct {
- A string `cbor:"a"`
- B int64 `cbor:"b"`
- C map[string]string `cbor:"c"`
- D map[string]interface{} `cbor:"d"`
- }
- func main() {
- lib, err := zrfu.LoadDyLib("zrfu_test_rust.dll")
- if err != nil {
- fmt.Println("failed init dll: ", err)
- return
- }
- lib.SetDebugMode(true)
- bv1, err := zrfu.NewBytesVec(lib)
- defer bv1.Close()
- if err != nil {
- fmt.Println("failed new BytesVec: ", err)
- return
- }
- fmt.Println("Write 'neko: '...")
- n, err := bv1.Write([]byte("neko: "))
- if err != nil {
- fmt.Println("failed write to BytesVec: ", err)
- return
- }
- fmt.Println(n, "byte(s) written into BytesVec.")
- l, err := bv1.Len()
- if err != nil {
- fmt.Println("failed get length of BytesVec: ", err)
- return
- }
- fmt.Println("Now length=", l, " byte(s).")
- fmt.Println("Write 'nya~'...")
- n, err = bv1.Write([]byte("nya~"))
- if err != nil {
- fmt.Println("failed write to BytesVec: ", err)
- return
- }
- fmt.Println(n, "byte(s) written into BytesVec.")
- l, err = bv1.Len()
- if err != nil {
- fmt.Println("failed get length of BytesVec: ", err)
- return
- }
- fmt.Println("Now length=", l, " byte(s).")
- rdat, err := io.ReadAll(bv1)
- if err != nil {
- fmt.Println("failed read from BytesVec: ", err)
- return
- }
- fmt.Println("Read from BytesVec: ", string(rdat))
- fmt.Println("======== Call Func Test ========")
- caller, err := zrfu.NewZRFUCaller(lib)
- if err != nil {
- fmt.Println("failed init ZRFUCaller: ", err)
- return
- }
- fmt.Println("---- TestFuncAR ----")
- argar := &TestCBORStruct{
- A: "hello, TestFuncAR",
- B: 114514,
- C: map[string]string{
- "nya": "meow~",
- "hello": "world",
- },
- D: map[string]interface{}{
- "test": 1919.810,
- "satori": 5,
- },
- }
- var retar TestCBORStruct
- err = caller.CallAR("TestFuncAR", argar, &retar)
- if err != nil {
- fmt.Println("failed call proc: ", err)
- return
- }
- fmt.Println(" ---- TestFuncAR Result ----")
- JsonPrintUtil(retar)
- fmt.Println("---- TestFuncA ----")
- arga := &TestCBORStruct{
- A: "hello, TestFuncA",
- B: 1919810,
- C: map[string]string{
- "nya": "cat",
- "hello": "gensokyo",
- },
- D: map[string]interface{}{
- "test": 114.514,
- "satori": 5,
- },
- }
- err = caller.CallA("TestFuncA", arga)
- if err != nil {
- fmt.Println("failed call proc: ", err)
- return
- }
- fmt.Println("---- TestFuncR ----")
- var retr TestCBORStruct
- err = caller.CallR("TestFuncR", &retr)
- if err != nil {
- fmt.Println("failed call proc: ", err)
- return
- }
- fmt.Println(" ---- TestFuncR Result ----")
- JsonPrintUtil(retar)
- fmt.Println("---- TestFuncN ----")
- err = caller.CallN("TestFuncN")
- if err != nil {
- fmt.Println("failed call proc: ", err)
- return
- }
- }
- func JsonPrintUtil(v interface{}) {
- jd, err := json.MarshalIndent(v, "\t", " ")
- if err != nil {
- fmt.Println("Failed encode json for debug: ", err)
- return
- }
- fmt.Println(string(jd))
- }
|