diff --git a/server/imserver/WSPListener.go b/server/imserver/WSPListener.go index a1052202..cbae1464 100644 --- a/server/imserver/WSPListener.go +++ b/server/imserver/WSPListener.go @@ -21,7 +21,7 @@ type WSPListener struct { func (this *WSPListener) init() { this.ch = make(chan *f5.MsgHdr) listener, err := net.Listen("tcp", "0.0.0.0:" + - q5.ToString(mt.Table.IMServer.GetById(0).GetListenPort())) + q5.ToString(mt.Table.IMCluster.GetById(0).GetListenPort())) if err != nil { } else { diff --git a/server/imserver/mt/IMCluster.go b/server/imserver/mt/IMCluster.go new file mode 100644 index 00000000..e65e3a6e --- /dev/null +++ b/server/imserver/mt/IMCluster.go @@ -0,0 +1,14 @@ +package mt + +import ( + "f5" + "mtb" +) + +type IMCluster struct { + mtb.IMCluster +} + +type IMClusterTable struct { + f5.IdMetaTable[IMCluster] +} diff --git a/server/imserver/mt/IMServer.go b/server/imserver/mt/IMServer.go deleted file mode 100644 index 8b8dbd5a..00000000 --- a/server/imserver/mt/IMServer.go +++ /dev/null @@ -1,14 +0,0 @@ -package mt - -import ( - "f5" - "mtb" -) - -type IMServer struct { - mtb.IMServer -} - -type IMServerTable struct { - f5.IdMetaTable[IMServer] -} diff --git a/server/imserver/mt/export.go b/server/imserver/mt/export.go index 3455ab25..f019480f 100644 --- a/server/imserver/mt/export.go +++ b/server/imserver/mt/export.go @@ -5,11 +5,11 @@ import ( ) type table struct { - IMServer *IMServerTable + IMCluster *IMClusterTable } var Table = f5.New(func (this* table) { - this.IMServer = f5.New(func (this *IMServerTable) { + this.IMCluster = f5.New(func (this *IMClusterTable) { this.FileName = "../config/imserver.cluster.json" this.PrimKey = "" }); diff --git a/server/imserver/mtb/mtb.auto_gen.go b/server/imserver/mtb/mtb.auto_gen.go index f7e3f2dc..fd80e2ee 100644 --- a/server/imserver/mtb/mtb.auto_gen.go +++ b/server/imserver/mtb/mtb.auto_gen.go @@ -4,21 +4,61 @@ import ( "f5" ) -type IMServer struct { +type IMCluster struct { listen_port int32 _flags1_ uint64 _flags2_ uint64 } -func (this *IMServer) GetListenPort() int32 { +type MasterCluster struct { + instance_id int32 + ip string + listen_port int32 + + _flags1_ uint64 + _flags2_ uint64 +} + +func (this *IMCluster) GetListenPort() int32 { return this.listen_port } -func (this *IMServer) HasListenPort() bool { +func (this *IMCluster) HasListenPort() bool { return (this._flags1_ & (uint64(1) << 1)) > 0 } -func (this *IMServer) LoadFromKv(kv map[string]interface{}) { +func (this *MasterCluster) GetInstanceId() int32 { + return this.instance_id +} + +func (this *MasterCluster) HasInstanceId() bool { + return (this._flags1_ & (uint64(1) << 1)) > 0 +} + +func (this *MasterCluster) GetIp() string { + return this.ip +} + +func (this *MasterCluster) HasIp() bool { + return (this._flags1_ & (uint64(1) << 2)) > 0 +} + +func (this *MasterCluster) GetListenPort() int32 { + return this.listen_port +} + +func (this *MasterCluster) HasListenPort() bool { + return (this._flags1_ & (uint64(1) << 3)) > 0 +} + + +func (this *IMCluster) LoadFromKv(kv map[string]interface{}) { f5.ReadMetaTableField(&this.listen_port, "listen_port", &this._flags1_, 1, kv) } + +func (this *MasterCluster) LoadFromKv(kv map[string]interface{}) { + f5.ReadMetaTableField(&this.instance_id, "instance_id", &this._flags1_, 1, kv) + f5.ReadMetaTableField(&this.ip, "ip", &this._flags1_, 2, kv) + f5.ReadMetaTableField(&this.listen_port, "listen_port", &this._flags1_, 3, kv) +} diff --git a/server/imserver/playermgr.go b/server/imserver/playermgr.go index a2674464..a006ae00 100644 --- a/server/imserver/playermgr.go +++ b/server/imserver/playermgr.go @@ -36,7 +36,7 @@ func (this *PlayerMgr) reportServerState() { "node_id": q5.ToString(f5.GetApp().GetNodeId()), "instance_id": q5.ToString(f5.GetApp().GetInstanceId()), "ip": "", - "port": q5.ToString(mt.Table.IMServer.GetById(0).GetListenPort()), + "port": q5.ToString(mt.Table.IMCluster.GetById(0).GetListenPort()), "online_num": q5.ToString(0), "room_num": q5.ToString(0), "channel": q5.ToString(0), diff --git a/server/imserver/proto/mt.proto b/server/imserver/proto/mt.proto index 4fa6ffe2..c05e0478 100644 --- a/server/imserver/proto/mt.proto +++ b/server/imserver/proto/mt.proto @@ -2,7 +2,14 @@ package mt; option go_package = ".;mt"; -message IMServer +message IMCluster { optional int32 listen_port = 1; } + +message MasterCluster +{ + optional int32 instance_id = 1; + optional string ip = 2; + optional int32 listen_port = 3; +} diff --git a/tools/pbtools/app.js b/tools/pbtools/app.js index 89a600f7..de5e5ddd 100644 --- a/tools/pbtools/app.js +++ b/tools/pbtools/app.js @@ -194,10 +194,12 @@ import ( data += ` _flags1_ uint64 _flags2_ uint64 -}`; +} + +`; } ); - data += '\n\n'; + data += ''; this.mtPb.nested.mt.nestedArray.forEach( (item) => { item.fieldsArray.forEach @@ -214,7 +216,7 @@ import ( } else { data += ` return (this._flags2_ & (uint64(1) << (${item2.id} - 64))) > 0\n`; } - data += `}\n`; + data += `}\n\n`; } ); } diff --git a/tools/pbtools/package-lock.json b/tools/pbtools/package-lock.json index 627edab3..94137e79 100644 --- a/tools/pbtools/package-lock.json +++ b/tools/pbtools/package-lock.json @@ -1,214 +1,8 @@ { "name": "pbtools", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "pbtools", - "version": "1.0.0", - "dependencies": { - "axios": "^0.27.0", - "minimist": "^1.2.6", - "nodejs-websocket": "^1.7.2", - "protobufjs": "^6.11.2" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "node_modules/@types/node": { - "version": "20.4.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.9.tgz", - "integrity": "sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/nodejs-websocket": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/nodejs-websocket/-/nodejs-websocket-1.7.2.tgz", - "integrity": "sha512-PFX6ypJcCNDs7obRellR0DGTebfUhw1SXGKe2zpB+Ng1DQJhdzbzx1ob+AvJCLzy2TJF4r8cCDqMQqei1CZdPQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/protobufjs": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", - "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - } - } - }, "dependencies": { "@protobufjs/aspromise": { "version": "1.1.2",