Skip to content
2 changes: 1 addition & 1 deletion internal/buffer/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
)

func TestMain(m *testing.M) {
native.Init("")
native.Initialize("")

Comment thread
dongwlin marked this conversation as resolved.
os.Exit(m.Run())
}
60 changes: 41 additions & 19 deletions internal/native/agent_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ import (
"github.com/ebitengine/purego"
)

var maaAgentClient uintptr
var (
maaAgentClient uintptr
maaAgentClientName = "MaaAgentClient"
)

var (
MaaAgentClientCreateV2 func(identifier uintptr) uintptr
Expand All @@ -28,14 +31,32 @@ var (
MaaAgentClientGetCustomActionList func(client uintptr, buffer uintptr) bool
)

var agentClientEntries = []Entry{
{&MaaAgentClientCreateV2, "MaaAgentClientCreateV2"},
{&MaaAgentClientCreateTcp, "MaaAgentClientCreateTcp"},
{&MaaAgentClientDestroy, "MaaAgentClientDestroy"},
{&MaaAgentClientIdentifier, "MaaAgentClientIdentifier"},
{&MaaAgentClientBindResource, "MaaAgentClientBindResource"},
{&MaaAgentClientRegisterResourceSink, "MaaAgentClientRegisterResourceSink"},
{&MaaAgentClientRegisterControllerSink, "MaaAgentClientRegisterControllerSink"},
{&MaaAgentClientRegisterTaskerSink, "MaaAgentClientRegisterTaskerSink"},
{&MaaAgentClientConnect, "MaaAgentClientConnect"},
{&MaaAgentClientDisconnect, "MaaAgentClientDisconnect"},
{&MaaAgentClientConnected, "MaaAgentClientConnected"},
{&MaaAgentClientAlive, "MaaAgentClientAlive"},
{&MaaAgentClientSetTimeout, "MaaAgentClientSetTimeout"},
{&MaaAgentClientGetCustomRecognitionList, "MaaAgentClientGetCustomRecognitionList"},
{&MaaAgentClientGetCustomActionList, "MaaAgentClientGetCustomActionList"},
}

func initAgentClient(libDir string) error {
libName := getMaaAgentClientLibrary()
libPath := filepath.Join(libDir, libName)

handle, err := openLibrary(libPath)
if err != nil {
return &LibraryLoadError{
LibraryName: "MaaAgentClient",
LibraryName: maaAgentClientName,
LibraryPath: libPath,
Err: err,
}
Expand All @@ -62,23 +83,24 @@ func getMaaAgentClientLibrary() string {
}

func registerAgentClient() {
purego.RegisterLibFunc(&MaaAgentClientCreateV2, maaAgentClient, "MaaAgentClientCreateV2")
purego.RegisterLibFunc(&MaaAgentClientCreateTcp, maaAgentClient, "MaaAgentClientCreateTcp")
purego.RegisterLibFunc(&MaaAgentClientDestroy, maaAgentClient, "MaaAgentClientDestroy")
purego.RegisterLibFunc(&MaaAgentClientIdentifier, maaAgentClient, "MaaAgentClientIdentifier")
purego.RegisterLibFunc(&MaaAgentClientBindResource, maaAgentClient, "MaaAgentClientBindResource")
purego.RegisterLibFunc(&MaaAgentClientRegisterResourceSink, maaAgentClient, "MaaAgentClientRegisterResourceSink")
purego.RegisterLibFunc(&MaaAgentClientRegisterControllerSink, maaAgentClient, "MaaAgentClientRegisterControllerSink")
purego.RegisterLibFunc(&MaaAgentClientRegisterTaskerSink, maaAgentClient, "MaaAgentClientRegisterTaskerSink")
purego.RegisterLibFunc(&MaaAgentClientConnect, maaAgentClient, "MaaAgentClientConnect")
purego.RegisterLibFunc(&MaaAgentClientDisconnect, maaAgentClient, "MaaAgentClientDisconnect")
purego.RegisterLibFunc(&MaaAgentClientConnected, maaAgentClient, "MaaAgentClientConnected")
purego.RegisterLibFunc(&MaaAgentClientAlive, maaAgentClient, "MaaAgentClientAlive")
purego.RegisterLibFunc(&MaaAgentClientSetTimeout, maaAgentClient, "MaaAgentClientSetTimeout")
purego.RegisterLibFunc(&MaaAgentClientGetCustomRecognitionList, maaAgentClient, "MaaAgentClientGetCustomRecognitionList")
purego.RegisterLibFunc(&MaaAgentClientGetCustomActionList, maaAgentClient, "MaaAgentClientGetCustomActionList")
for _, entry := range agentClientEntries {
purego.RegisterLibFunc(entry.ptrToFunc, maaAgentClient, entry.name)
}
}

func unregisterAgentClient() error {
return unloadLibrary(maaAgentClient)
func releaseAgentClient() error {
err := unloadLibrary(maaAgentClient)
if err != nil {
return err
}

unregisterAgentClient()

return nil
}

func unregisterAgentClient() {
for _, entry := range agentClientEntries {
clearFuncVar(entry.ptrToFunc)
}
}
50 changes: 36 additions & 14 deletions internal/native/agent_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ import (
"github.com/ebitengine/purego"
)

var maaAgentServer uintptr
var (
maaAgentServer uintptr
maaAgentServerName = "MaaAgentServer"
)

var (
MaaAgentServerRegisterCustomRecognition func(name string, recognition MaaCustomRecognitionCallback, transArg unsafe.Pointer) bool
Expand All @@ -24,14 +27,27 @@ var (
MaaAgentServerDetach func()
)

var agentServerEntries = []Entry{
{&MaaAgentServerRegisterCustomRecognition, "MaaAgentServerRegisterCustomRecognition"},
{&MaaAgentServerRegisterCustomAction, "MaaAgentServerRegisterCustomAction"},
{&MaaAgentServerAddResourceSink, "MaaAgentServerAddResourceSink"},
{&MaaAgentServerAddControllerSink, "MaaAgentServerAddControllerSink"},
{&MaaAgentServerAddTaskerSink, "MaaAgentServerAddTaskerSink"},
{&MaaAgentServerAddContextSink, "MaaAgentServerAddContextSink"},
{&MaaAgentServerStartUp, "MaaAgentServerStartUp"},
{&MaaAgentServerShutDown, "MaaAgentServerShutDown"},
{&MaaAgentServerJoin, "MaaAgentServerJoin"},
{&MaaAgentServerDetach, "MaaAgentServerDetach"},
}

func initAgentServer(libDir string) error {
libName := getMaaAgentServerLibrary()
libPath := filepath.Join(libDir, libName)

handle, err := openLibrary(libPath)
if err != nil {
return &LibraryLoadError{
LibraryName: "MaaAgentServer",
LibraryName: maaAgentServerName,
LibraryPath: libPath,
Err: err,
}
Expand All @@ -58,18 +74,24 @@ func getMaaAgentServerLibrary() string {
}

func registerAgentServer() {
purego.RegisterLibFunc(&MaaAgentServerRegisterCustomRecognition, maaAgentServer, "MaaAgentServerRegisterCustomRecognition")
purego.RegisterLibFunc(&MaaAgentServerRegisterCustomAction, maaAgentServer, "MaaAgentServerRegisterCustomAction")
purego.RegisterLibFunc(&MaaAgentServerAddResourceSink, maaAgentServer, "MaaAgentServerAddResourceSink")
purego.RegisterLibFunc(&MaaAgentServerAddControllerSink, maaAgentServer, "MaaAgentServerAddControllerSink")
purego.RegisterLibFunc(&MaaAgentServerAddTaskerSink, maaAgentServer, "MaaAgentServerAddTaskerSink")
purego.RegisterLibFunc(&MaaAgentServerAddContextSink, maaAgentServer, "MaaAgentServerAddContextSink")
purego.RegisterLibFunc(&MaaAgentServerStartUp, maaAgentServer, "MaaAgentServerStartUp")
purego.RegisterLibFunc(&MaaAgentServerShutDown, maaAgentServer, "MaaAgentServerShutDown")
purego.RegisterLibFunc(&MaaAgentServerJoin, maaAgentServer, "MaaAgentServerJoin")
purego.RegisterLibFunc(&MaaAgentServerDetach, maaAgentServer, "MaaAgentServerDetach")
for _, entry := range agentServerEntries {
purego.RegisterLibFunc(entry.ptrToFunc, maaAgentServer, entry.name)
}
}

func unregisterAgentServer() error {
return unloadLibrary(maaAgentServer)
func releaseAgentServer() error {
err := unloadLibrary(maaAgentServer)
if err != nil {
return err
}

unregisterAgentServer()

return nil
}

func unregisterAgentServer() {
for _, entry := range agentServerEntries {
clearFuncVar(entry.ptrToFunc)
}
}
Loading
Loading