70 lines
2.0 KiB
Go
70 lines
2.0 KiB
Go
package main
|
||
|
||
import (
|
||
"C"
|
||
"fmt"
|
||
"time"
|
||
|
||
"github.com/yitter/idgenerator-go/regworkerid"
|
||
)
|
||
|
||
func main() {
|
||
ip := "localhost"
|
||
password := ""
|
||
|
||
ipChar := C.CString(ip)
|
||
passChar := C.CString(password)
|
||
|
||
workerIdList := RegisterMany(ipChar, 6379, passChar, 4, 3, 0)
|
||
for _, value := range workerIdList {
|
||
fmt.Println("注册的WorkerId:", value)
|
||
}
|
||
|
||
id := RegisterOne(ipChar, 6379, passChar, 4, 0)
|
||
fmt.Println("注册的WorkerId:", id)
|
||
|
||
// var workerId = regworkerid.RegisterOne(ip, 6379, "", 4)
|
||
// fmt.Println("注册的WorkerId:", workerId)
|
||
|
||
fmt.Println("end")
|
||
time.Sleep(time.Duration(300) * time.Second)
|
||
}
|
||
|
||
//export RegisterOne
|
||
// 注册一个 WorkerId
|
||
func RegisterOne(ip *C.char, port int32, password *C.char, maxWorkerId int32, database int) int32 {
|
||
return regworkerid.RegisterOne(C.GoString(ip), port, C.GoString(password), maxWorkerId, database)
|
||
}
|
||
|
||
//export UnRegister
|
||
// 注销本机已注册的 WorkerId
|
||
func UnRegister() {
|
||
regworkerid.UnRegister()
|
||
}
|
||
|
||
// export Validate
|
||
// 检查本地WorkerId是否有效(0-有效,其它-无效)
|
||
func Validate(workerId int32) int32 {
|
||
return regworkerid.Validate(workerId)
|
||
}
|
||
|
||
// RegisterMany
|
||
// 注册多个 WorkerId,会先注销所有本机已注册的记录
|
||
func RegisterMany(ip *C.char, port int32, password *C.char, maxWorkerId, totalCount int32, database int) []int32 {
|
||
// return (*C.int)(unsafe.Pointer(&values))
|
||
//return regworkerid.RegisterMany(ip, port, password, maxWorkerId, totalCount, database)
|
||
return regworkerid.RegisterMany(C.GoString(ip), port, C.GoString(password), maxWorkerId, totalCount, database)
|
||
}
|
||
|
||
// To Build a dll/so:
|
||
|
||
// windows:
|
||
// go build -o ./target/yitidgengo.dll -buildmode=c-shared main.go
|
||
// // go build -o ./target/yitidgengo.dll -buildmode=c-shared main.go reg.go
|
||
|
||
// linux init: go install -buildmode=shared -linkshared std
|
||
// go build -o ./target/yitidgengo.so -buildmode=c-shared main.go
|
||
// go build -o ./target/yitidgengo.so -buildmode=c-shared main.go reg.go
|
||
|
||
// https://books.studygolang.com/advanced-go-programming-book/ch2-cgo/ch2-09-static-shared-lib.html
|