summaryrefslogtreecommitdiff
path: root/tests/modules/socket/sched_tcp/echo_server.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2019-11-28 22:34:52 +0800
committerruki <[email protected]>2019-11-28 09:29:14 +0800
commit5419b4eb3112fbe9b43249c62f9e319518caa71e (patch)
tree19c84c95aa945d37cfb05393b2e9f25681ebc837 /tests/modules/socket/sched_tcp/echo_server.lua
parent6cde799f0a1ebb3151e0880299a0dce75567f764 (diff)
add sched_tcp/echo tests
Diffstat (limited to 'tests/modules/socket/sched_tcp/echo_server.lua')
-rw-r--r--tests/modules/socket/sched_tcp/echo_server.lua40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/modules/socket/sched_tcp/echo_server.lua b/tests/modules/socket/sched_tcp/echo_server.lua
new file mode 100644
index 000000000..4ae2119cc
--- /dev/null
+++ b/tests/modules/socket/sched_tcp/echo_server.lua
@@ -0,0 +1,40 @@
+import("core.base.socket")
+import("core.base.scheduler")
+
+function _session(sock)
+ local count = 0
+ local result = nil
+ while true do
+ local recv, data = sock:recv(13, {block = true})
+ if recv > 0 then
+ result = data
+ sock:send(data, {block = true})
+ count = count + 1
+ else
+ break
+ end
+ end
+ print("%s: recv: %d, count: %d", sock, result and result:size() or 0, count)
+ result:dump()
+ sock:close()
+end
+
+function _listen(addr, port)
+
+ local sock = socket.bind(addr, port)
+ sock:listen(20)
+ print("%s: listening %s:%d ..", sock, addr, port)
+ while true do
+ local sock_client = sock:accept()
+ if sock_client then
+ print("%s: accepted", sock_client)
+ scheduler.run(_session, sock_client)
+ end
+ end
+ sock:close()
+end
+
+function main()
+ scheduler.run(_listen, "127.0.0.1", 9001)
+ scheduler.runloop()
+end