diff options
| author | ruki <[email protected]> | 2022-04-05 00:57:33 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-04-05 00:57:33 +0800 |
| commit | fc1eda282369071bd5d81963a01b618ff13ea48e (patch) | |
| tree | 23afb2e2cc702cbcfde410855e4a5142609e8ff7 /xmake/plugins/service/server.lua | |
| parent | a42eec83431f69649a349baf35593b39d0c25ca7 (diff) | |
improve super for server
Diffstat (limited to 'xmake/plugins/service/server.lua')
| -rw-r--r-- | xmake/plugins/service/server.lua | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/xmake/plugins/service/server.lua b/xmake/plugins/service/server.lua index 5fd1cb860..e2ccbbd86 100644 --- a/xmake/plugins/service/server.lua +++ b/xmake/plugins/service/server.lua @@ -29,9 +29,9 @@ local server = server or object() function server:init() end --- get super -function server:super() - return self._super +-- set handler +function server:handler_set(handler) + self._HANDLER = handler end -- get the listen address @@ -46,24 +46,33 @@ end -- run main loop function server:runloop() - local sock_clients = {} + assert(self._HANDLER, "no handler found!") local sock = socket.bind(self:addr(), self:port()) sock:listen(100) - print("%s: listening %s:%d ..", sock, self:addr(), self:port()) + print("%s: listening %s:%d ..", self, self:addr(), self:port()) while true do local sock_client = sock:accept() if sock_client then scheduler.co_start(function (sock) - print("%s: accepted", sock_client) + self._HANDLER(self, sock) + sock:close() end, sock_client) end end sock:close() end +-- get class +function server:class() + return server +end + +function server:__tostring() + return "<server>" +end + function main() local instance = server() - instance._super = server instance:init() return instance end |
