blob: 19a6848f5c5d71400a28684548d522e514942496 (
plain)
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
|
socket = require "socket"
local civet = {}
-- default params
civet.port=12345
civet.max_retry=100
civet.start_delay=0.1
function civet.start(docroot)
-- TODO: use a property
docroot = docroot or 'ci/test/01_basic/docroot'
assert(io.popen('./civetweb'
.. " -listening_ports " .. civet.port
.. " -document_root " .. docroot
.. " > /dev/null 2>&1 &"
))
-- wait until the server answers
for i=1,civet.max_retry do
local s = socket.connect('127.0.0.1', civet.port)
if s then
s:close()
break
end
socket.select(nil, nil, civet.start_delay) -- sleep
end
end
function civet.stop()
os.execute('killall civetweb')
-- wait until the server port closes
for i=1,civet.max_retry do
local s = socket.connect('127.0.0.1', civet.port)
if not s then
break
end
s:close()
socket.select(nil, nil, civet.start_delay) -- sleep
end
end
return civet
|