diff --git a/Go/regworkerid/main.go b/Go/regworkerid/main.go index fdb37e87365c567abc8e85f5c91d38c05e3d3e94..09c01e7f3bb6fae1f14a6b22d43c4c27d566ad77 100644 --- a/Go/regworkerid/main.go +++ b/Go/regworkerid/main.go @@ -90,11 +90,11 @@ func Validate(workerId int32) int32 { // 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 +// go build -o ./target/workeridgo.dll -buildmode=c-shared main.go +// // go build -o ./target/workeridgo.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 +// go build -o ./target/workeridgo.so -buildmode=c-shared main.go +// go build -o ./target/workeridgo.so -buildmode=c-shared main.go reg.go // https://books.studygolang.com/advanced-go-programming-book/ch2-cgo/ch2-09-static-shared-lib.html diff --git a/Tools/AutoRegisterWorkerId/lib/workeridgo.h b/Tools/AutoRegisterWorkerId/lib/workeridgo.h new file mode 100644 index 0000000000000000000000000000000000000000..6124a9cf98c69279105cf79a95a7f450615ca62a --- /dev/null +++ b/Tools/AutoRegisterWorkerId/lib/workeridgo.h @@ -0,0 +1,101 @@ +/* Code generated by cmd/cgo; DO NOT EDIT. */ + +/* package command-line-arguments */ + + +#line 1 "cgo-builtin-export-prolog" + +#include /* for ptrdiff_t below */ + +#ifndef GO_CGO_EXPORT_PROLOGUE_H +#define GO_CGO_EXPORT_PROLOGUE_H + +#ifndef GO_CGO_GOSTRING_TYPEDEF +typedef struct { const char *p; ptrdiff_t n; } _GoString_; +#endif + +#endif + +/* Start of preamble from import "C" comments. */ + + + + +/* End of preamble from import "C" comments. */ + + +/* Start of boilerplate cgo prologue. */ +#line 1 "cgo-gcc-export-header-prolog" + +#ifndef GO_CGO_PROLOGUE_H +#define GO_CGO_PROLOGUE_H + +typedef signed char GoInt8; +typedef unsigned char GoUint8; +typedef short GoInt16; +typedef unsigned short GoUint16; +typedef int GoInt32; +typedef unsigned int GoUint32; +typedef long long GoInt64; +typedef unsigned long long GoUint64; +typedef GoInt64 GoInt; +typedef GoUint64 GoUint; +typedef __SIZE_TYPE__ GoUintptr; +typedef float GoFloat32; +typedef double GoFloat64; +typedef float _Complex GoComplex64; +typedef double _Complex GoComplex128; + +/* + static assertion to make sure the file is being used on architecture + at least with matching size of GoInt. +*/ +typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1]; + +#ifndef GO_CGO_GOSTRING_TYPEDEF +typedef _GoString_ GoString; +#endif +typedef void *GoMap; +typedef void *GoChan; +typedef struct { void *t; void *v; } GoInterface; +typedef struct { void *data; GoInt len; GoInt cap; } GoSlice; + +#endif + +/* End of boilerplate cgo prologue. */ + +#ifdef __cplusplus +extern "C" { +#endif + + +// RegisterOne 注册一个 WorkerId,会先注销所有本机已注册的记录 +// address: Redis连接地址,单机模式示例:127.0.0.1:6379,哨兵/集群模式示例:127.0.0.1:26380,127.0.0.1:26381,127.0.0.1:26382 +// password: Redis连接密码 +// db: Redis指定存储库,示例:1 +// sentinelMasterName: Redis 哨兵模式下的服务名称,示例:mymaster,非哨兵模式传入空字符串即可 +// minWorkerId: WorkerId 最小值,示例:30 +// maxWorkerId: WorkerId 最大值,示例:63 +// lifeTimeSeconds: WorkerId缓存时长(秒,3的倍数) +extern __declspec(dllexport) GoInt32 RegisterOne(char* address, char* password, GoInt db, char* sentinelMasterName, GoInt32 minWorkerId, GoInt32 maxWorkerId, GoInt32 lifeTimeSeconds); + +// RegisterMany 注册多个 WorkerId,会先注销所有本机已注册的记录 +// address: Redis连接地址,单机模式示例:127.0.0.1:6379,哨兵/集群模式示例:127.0.0.1:26380,127.0.0.1:26381,127.0.0.1:26382 +// password: Redis连接密码 +// db: Redis指定存储库,示例:1 +// sentinelMasterName: Redis 哨兵模式下的服务名称,示例:mymaster,非哨兵模式传入空字符串即可 +// maxWorkerId: WorkerId 最大值,示例:63 +// minWorkerId: WorkerId 最小值,示例:30 +// totalCount: 获取N个WorkerId,示例:5 +// lifeTimeSeconds: WorkerId缓存时长(秒,3的倍数) +extern __declspec(dllexport) GoSlice RegisterMany(char* address, char* password, GoInt db, char* sentinelMasterName, GoInt32 minWorkerId, GoInt32 maxWorkerId, GoInt32 totalCount, GoInt32 lifeTimeSeconds); + +// UnRegister 注销本机已注册的 WorkerId +extern __declspec(dllexport) void UnRegister(); + +// Validate 检查本地WorkerId是否有效(0-有效,其它-无效) +extern __declspec(dllexport) GoInt32 Validate(GoInt32 workerId); + +#ifdef __cplusplus +} +#endif diff --git a/Tools/AutoRegisterWorkerId/lib/yitidgengo.h b/Tools/AutoRegisterWorkerId/lib/yitidgengo.h deleted file mode 100644 index 01cad9d9823d414fd0ef245e83f10d1d85b36bdc..0000000000000000000000000000000000000000 --- a/Tools/AutoRegisterWorkerId/lib/yitidgengo.h +++ /dev/null @@ -1,83 +0,0 @@ -/* Code generated by cmd/cgo; DO NOT EDIT. */ - -/* package command-line-arguments */ - - -#line 1 "cgo-builtin-export-prolog" - -#include /* for ptrdiff_t below */ - -#ifndef GO_CGO_EXPORT_PROLOGUE_H -#define GO_CGO_EXPORT_PROLOGUE_H - -#ifndef GO_CGO_GOSTRING_TYPEDEF -typedef struct { const char *p; ptrdiff_t n; } _GoString_; -#endif - -#endif - -/* Start of preamble from import "C" comments. */ - - - - -/* End of preamble from import "C" comments. */ - - -/* Start of boilerplate cgo prologue. */ -#line 1 "cgo-gcc-export-header-prolog" - -#ifndef GO_CGO_PROLOGUE_H -#define GO_CGO_PROLOGUE_H - -typedef signed char GoInt8; -typedef unsigned char GoUint8; -typedef short GoInt16; -typedef unsigned short GoUint16; -typedef int GoInt32; -typedef unsigned int GoUint32; -typedef long long GoInt64; -typedef unsigned long long GoUint64; -typedef GoInt64 GoInt; -typedef GoUint64 GoUint; -typedef __SIZE_TYPE__ GoUintptr; -typedef float GoFloat32; -typedef double GoFloat64; -typedef float _Complex GoComplex64; -typedef double _Complex GoComplex128; - -/* - static assertion to make sure the file is being used on architecture - at least with matching size of GoInt. -*/ -typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1]; - -#ifndef GO_CGO_GOSTRING_TYPEDEF -typedef _GoString_ GoString; -#endif -typedef void *GoMap; -typedef void *GoChan; -typedef struct { void *t; void *v; } GoInterface; -typedef struct { void *data; GoInt len; GoInt cap; } GoSlice; - -#endif - -/* End of boilerplate cgo prologue. */ - -#ifdef __cplusplus -extern "C" { -#endif - - -// 注册一个 WorkerId,会先注销所有本机已注册的记录 -extern __declspec(dllexport) GoInt32 RegisterOne(char* ip, GoInt32 port, char* password, GoInt32 maxWorkerId, GoInt database); - -// 注销本机已注册的 WorkerId -extern __declspec(dllexport) void UnRegister(); - -// 检查本地WorkerId是否有效(0-有效,其它-无效) -extern __declspec(dllexport) GoInt32 Validate(GoInt32 workerId); - -#ifdef __cplusplus -} -#endif