-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtabSimpleService.lua
More file actions
101 lines (79 loc) · 2.36 KB
/
tabSimpleService.lua
File metadata and controls
101 lines (79 loc) · 2.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
-- author cs
-- email 04nycs@gmail.com
-- https://github.com/ThinEureka/tabMachine
-- created on Oct 18 2022
local tabSocket = require("tabMachine.tabSocket")
local tabSimpleService = nil
tabSimpleService = _{
tabName = "tabSimpleService",
s1 = function(c, socket, serviceId, serviceParams)
local ip, port = socket:getpeername()
c._nickName = serviceId .. "[" .. ip .. ":" .. port .. "]"
c._ip = ip
c._port = port
c._socket = socket
c._serviceId = serviceId
c._tabCmdHandler = c:call(serviceParams.cmdHandler(serviceParams.handlerParams), "cmdHandler")
end,
s2 = function(c)
c._tabSocket = c:call(tabSocket, "socket", nil, 15)
c._tabSocket:acceptSocket(c._socket)
c:call(c._tabSocket:tabInState(tabSocket.STATE.CONNECTED), "s3")
c:call(c._tabSocket:tabPullSegments(c._tabCmdHandler.decodeSegment, function(msg)
c._tabCmdHandler:onNewSegment(msg)
end), "pullMsgs")
end,
s4 = function(c)
-- for current implementation we only provide once service per tab lifetime and
-- further optimization will be done only when necessarcy
-- c:stop("pullMsgs")
c:stop()
c._isDead = true
end,
-- event & inner
event = g_t.empty_event,
inner = {
tabSocket = function(c)
return c._tabSocket
end,
tabCmdHandler = function(c)
return c._tabCmdHandler
end,
service = function(c)
return c
end,
},
sendRpc = function(c, ...)
return c._tabCmdHandler:sendRpc(...)
end,
sendRequest = function(c, ...)
return c._tabCmdHandler:sendRequest(...)
end,
}
--------------------------------------------------------------------------------
-- public:
function tabSimpleService:isDead()
return self._isDead
end
function tabSimpleService:reconnect(socket)
return false
end
function tabSimpleService:getTabSocket()
return self._tabSocket
end
function tabSimpleService:getIp()
return self._ip
end
function tabSimpleService:getPort()
return self._port
end
function tabSimpleService:getSocketName()
return self._ip, self._port
end
function tabSimpleService:getServiceId()
return self._serviceId
end
function tabSimpleService:getCmdHandler()
return self._tabCmdHandler
end
return tabSimpleService