Skip to content

Commit 47b53eb

Browse files
committed
add skynet meta
1 parent 2183bf6 commit 47b53eb

File tree

17 files changed

+1542
-0
lines changed

17 files changed

+1542
-0
lines changed

meta/3rd/skynet/config.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
words = { "skynet.start" }

meta/3rd/skynet/library/skynet.lua

Lines changed: 542 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---@meta
2+
---* cluster 相关的库
3+
---* 这个库,使用了一个叫 clusterd 的服务来进行工作
4+
---@class cluster
5+
local cluster = {}
6+
7+
---* 对某个节点上的服务传输消息
8+
---@param node string @配置中给出的节点名
9+
---@param address string | number @推荐使用 . 开头本地服务名,因为没有必要再用 master/slave 模式
10+
---@varargs any @传输数据
11+
function cluster.call(node, address, ...)
12+
end
13+
---* 对某个节点上的服务传输消息
14+
---* 越节点推送消息有丢失消息的风险。因为 cluster 基于 tcp 连接,当 cluster 间的连接断开,cluster.send 的消息就可能丢失。而这个函数会立刻返回,所以调用者没有机会知道发送出错。
15+
---@param node string @配置中给出的节点名
16+
---@param address string | number @推荐使用 . 开头本地服务名,因为没有必要再用 master/slave 模式
17+
---@varargs any @传输数据
18+
function cluster.send(node, address, ...)
19+
end
20+
---* 打开节点
21+
---* 如果参数是一个节点名,那么会从配置文件中加载的名称对应的IP和端口进行监听
22+
---* 实际上就是开了一个 gate 服务,监听套接字
23+
---@param port string | number @节点名或者是端口号
24+
function cluster.open(port)
25+
end
26+
---* 重新加载节点配置信息
27+
---* Cluster 是去中心化的,所以需要在每台机器上都放置一份配置文件(通常是相同的)。
28+
---* 通过调用 cluster.reload 可以让本进程重新加载配置。
29+
---* 如果你修改了每个节点名字对应的地址,那么 reload 之后的请求都会发到新的地址。
30+
---* 而之前没有收到回应的请求还是会在老地址上等待。如果你老的地址已经无效(通常是主动关闭了进程)那么请求方会收到一个错误。
31+
---@param config table @ 名称=IP:端口键值对
32+
function cluster.reload(config)
33+
end
34+
---* 为某个节点上的服务生成一个代理服务 clusterproxy
35+
---@param node string
36+
---@param name string
37+
function cluster.proxy(node, name)
38+
end
39+
function cluster.snax(node, name, address)
40+
end
41+
---* 可以把 addr 注册为 cluster 可见的一个字符串名字 name 。如果不传 addr 表示把自身注册为 name 。
42+
---@param name string
43+
---@param addr number
44+
function cluster.register(name, addr)
45+
end
46+
---* 查询节点上服务的地址
47+
---@param node string
48+
---@param name string
49+
---@return number
50+
function cluster.query(node, name)
51+
end
52+
return cluster
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
---@meta
2+
---@class crypt
3+
local crypt = {}
4+
5+
---计算 hash
6+
---@param key any
7+
---@return string
8+
function crypt.hashkey(key)
9+
end
10+
---生成一个8位的 key
11+
---@return string
12+
function crypt.randomkey()
13+
end
14+
---des 加密
15+
---@param key number
16+
---@param data string
17+
---@param padding number | nil @对齐模式 默认 iso7816_4
18+
---@return string
19+
function crypt.desencode(key, data, padding)
20+
end
21+
---desc 解密
22+
---@param key number
23+
---@param data string
24+
---@param padding number | nil @对齐模式 默认 iso7816_4
25+
---@return string
26+
function crypt.desdecode(key, data, padding)
27+
end
28+
---hex 编码
29+
---@param data string
30+
---@return string
31+
function crypt.hexencode(data)
32+
end
33+
---hex 解码
34+
---@param data string
35+
---@return string
36+
function crypt.hexdecode(data)
37+
end
38+
---hmac 签名
39+
---@param challenge string @挑战消息
40+
---@param secret string @密钥
41+
---@return string
42+
function crypt.hmac64(challenge, secret)
43+
end
44+
---hmac md5签名
45+
---@param msg string
46+
---@param secret string
47+
---@return string
48+
function crypt.hmac64_md5(msg, secret)
49+
end
50+
---dh交换
51+
---@param key string
52+
---@return string
53+
function crypt.dhexchange(key)
54+
end
55+
---密钥计算
56+
---@param dhkey string @经过 exchange 后的密钥
57+
---@param selfkey string @原始
58+
function crypt.dhsecret(dhkey, selfkey)
59+
end
60+
---base64编码
61+
---@param msg string
62+
---@return string
63+
function crypt.base64encode(msg)
64+
end
65+
---base64解码
66+
---@param msg string
67+
---@return string
68+
function crypt.base64decode(msg)
69+
end
70+
---sha1
71+
---@param msg string
72+
---@return string
73+
function crypt.sha1(msg)
74+
end
75+
function crypt.hmac_sha1()
76+
end
77+
---hmac hash
78+
---@param key string
79+
---@param msg string
80+
---@return string
81+
function crypt.hmac_hash(key, msg)
82+
end
83+
---xor 字符串
84+
---@param s1 string
85+
---@param key string
86+
---@return lightuserdata
87+
function crypt.xor_str(s1, key)
88+
end
89+
90+
return crypt
Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
---@meta
2+
local mongo = {}
3+
4+
---@class mongo_client
5+
---@field host string
6+
---@field port number
7+
---@field username string
8+
---@field password string
9+
---@field authdb string
10+
---@field authmod string
11+
---@field __id number
12+
---@field __sock socketchannel
13+
local mongo_client = {}
14+
15+
---@class mongo_db
16+
---@field connection mongo_client
17+
---@field name string
18+
---@field full_name string
19+
---@field database mongo_db
20+
---@field _cmd string dbname.$cmd
21+
local mongo_db = {}
22+
23+
---@class mongo_collection
24+
---@field connection mongo_client
25+
---@field name string
26+
---@field full_name string
27+
---@field database boolean
28+
local mongo_collection = {}
29+
30+
---@class mongo_cursor
31+
local mongo_cursor = {}
32+
---建立一个客户端
33+
---@param conf table {host, port, username, password, authdb, authmod}
34+
---@return mongo_client
35+
function mongo.client(conf)
36+
end
37+
---获取一个 mongo_db 对象
38+
---@param dbname string
39+
---@return mongo_db
40+
function mongo_client:getDB(dbname)
41+
end
42+
43+
---断开连接
44+
function mongo_client:disconnect()
45+
end
46+
---以 self.admin:runCommand(...) 来执行命令
47+
function mongo_client:runCommand(...)
48+
end
49+
50+
---退出登录
51+
function mongo_client:logout()
52+
end
53+
54+
---验证登录
55+
---@param user string
56+
---@param pass string
57+
function mongo_db:auth(user, pass)
58+
59+
end
60+
---执行命令
61+
function mongo_db:runCommand(cmd, cmd_v, ...)
62+
end
63+
---获取集合
64+
---@param collection string
65+
---@return mongo_collection
66+
function mongo_db:getCollection(collection)
67+
end
68+
---获取集合
69+
---@param collection string
70+
---@return mongo_collection
71+
function mongo_collection:getCollection(collection)
72+
end
73+
74+
---向集合插入文档
75+
---@param doc table
76+
function mongo_collection:insert(doc)
77+
end
78+
---向集合安全的插入数据
79+
---@param dco table
80+
function mongo_collection:safe_insert(dco)
81+
end
82+
83+
---插入批量数据
84+
---@param docs table[]
85+
function mongo_collection:batch_insert(docs)
86+
87+
end
88+
---安全插入批量数据
89+
---@param docs table[]
90+
function mongo_collection:safe_batch_insert(docs)
91+
92+
end
93+
---更新数据
94+
---@param selector table
95+
---@param update table
96+
---@param upsert boolean
97+
---@param multi boolean
98+
function mongo_collection:update(selector, update, upsert, multi)
99+
100+
end
101+
---安全更新数据
102+
---@param selector table
103+
---@param update table
104+
---@param upsert boolean
105+
---@param multi boolean
106+
function mongo_collection:safe_update(selector, update, upsert, multi)
107+
108+
end
109+
110+
---删除数据
111+
---@param selector table
112+
---@param single boolean
113+
function mongo_collection:delete(selector, single)
114+
115+
end
116+
---安全删除数据
117+
---@param selector table
118+
---@param single boolean
119+
function mongo_collection:safe_delete(selector, single)
120+
121+
end
122+
---@param query table
123+
---@param selector table
124+
---@return mongo_cursor
125+
function mongo_collection:find(query, selector)
126+
127+
end
128+
---@param query table
129+
---@param selector table
130+
---@return table
131+
function mongo_collection:findOne(query, selector)
132+
133+
end
134+
135+
---建立索引
136+
---* collection:createIndex { { key1 = 1}, { key2 = 1 }, unique = true }
137+
---* or collection:createIndex { "key1", "key2", unique = true }
138+
---* or collection:createIndex( { key1 = 1} , { unique = true } ) -- For compatibility
139+
---@param arg1 table
140+
---@param arg2 table
141+
function mongo_collection:createIndex(arg1, arg2)
142+
143+
end
144+
---建立多个索引
145+
---@vararg table
146+
function mongo_collection:createIndexs(...)
147+
148+
end
149+
mongo_collection.ensureIndex = mongo_collection.createIndex
150+
151+
---删除集合
152+
function mongo_collection:drop()
153+
154+
end
155+
--- 删除索引
156+
---* collection:dropIndex("age_1")
157+
---* collection:dropIndex("*")
158+
---@param indexName string
159+
function mongo_collection:dropIndex(indexName)
160+
161+
end
162+
163+
---查找并修改
164+
---* collection:findAndModify({query = {name = "userid"}, update = {["$inc"] = {nextid = 1}}, })
165+
---* keys, value type
166+
---* query, table
167+
---* sort, table
168+
---* remove, bool
169+
---* update, table
170+
---* new, bool
171+
---* fields, bool
172+
---* upsert, boolean
173+
---@param doc table
174+
function mongo_collection:findAndModify(doc)
175+
176+
end
177+
178+
---排序
179+
---* cursor:sort { key = 1 } or cursor:sort( {key1 = 1}, {key2 = -1})
180+
---@param key table
181+
---@param key_v table
182+
function mongo_cursor:sort(key, key_v, ...)
183+
end
184+
---跳过多少行
185+
---@param amount number
186+
function mongo_cursor:skip(amount)
187+
end
188+
---限制行数
189+
---@param amount number
190+
function mongo_cursor:limit(amount)
191+
end
192+
---统计行数
193+
---@param with_limit_and_skip boolean
194+
function mongo_cursor:count(with_limit_and_skip)
195+
end
196+
---是否有下一行
197+
---@return boolean
198+
function mongo_cursor:hasNext()
199+
end
200+
---下一行
201+
---@return table
202+
function mongo_cursor:next()
203+
end
204+
---关闭游标
205+
function mongo_cursor:close()
206+
end
207+
return mongo
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---@meta
2+
---@class debug
3+
local debug = {}
4+
5+
---初始化 debug
6+
---@param skynet table
7+
---@param export table
8+
function debug.init(skynet, export)
9+
10+
end
11+
---注册一个 debug 指令函数
12+
---@param name string
13+
---@param fn fun()
14+
function debug.reg_debugcmd(name, fn)
15+
16+
end
17+
return debug
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---@meta
2+
---* 多节点相关的 API
3+
---@class harbor
4+
local harbor = {}
5+
6+
---* 注册一个全局名字。如果 handle 为空,则注册自己。skynet.name 和 skynet.register 是用其实现的。
7+
---@param name string @服务名称
8+
---@param handle number | nil @服务地址,可为空,表示注册自己
9+
function harbor.globalname(name, handle)
10+
end
11+
---* 可以用来查询全局名字或本地名字对应的服务地址。它是一个阻塞调用。
12+
---@param name string
13+
function harbor.queryname(name)
14+
end
15+
---* 用来监控一个 slave 是否断开。如果 harbor id 对应的 slave 正常,这个 api 将阻塞。当 slave 断开时,会立刻返回。
16+
---@param id number @harbor id
17+
function harbor.link(id)
18+
end
19+
---* 和 harbor.link 相反。如果 harbor id 对应的 slave 没有连接,这个 api 将阻塞,一直到它连上来才返回。
20+
---@param id number @harbor id
21+
function harbor.connect(id)
22+
end
23+
---* 用来在 slave 上监控和 master 的连接是否正常。这个 api 多用于异常时的安全退出(因为当 slave 和 master 断开后,没有手段可以恢复)。
24+
function harbor.linkmaster()
25+
end
26+
27+
return harbor

0 commit comments

Comments
 (0)