-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathserver.class.bash
More file actions
91 lines (70 loc) · 1.61 KB
/
server.class.bash
File metadata and controls
91 lines (70 loc) · 1.61 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
@class server
@method construct() {
if [ $# -ne 0 ]; then
@var dir $1
else
@var dir $(mktemp -d -t blank.XXXXXXXX)
fi
touch $dir/program
touch $dir/listen
touch $dir/logs
touch $dir/pid
mkdir -p $dir/requests/
}
@method get-listen() {
@var dir
cat "$dir/listen"
}
@method set-listen() {
@var dir
local address="$1"
echo "$address" > "$dir/listen"
}
@method set-program() {
@var dir
local program="$1"
echo "$program" > "$dir/program"
}
@method get-pid() {
@var dir
cat $dir/pid
}
@method stop() {
@var dir
local pid=$(cat $dir/pid)
command kill $pid &>/dev/null
}
@method random-port() {
local port=$((10000+$RANDOM))
echo "$port"
}
@method start() {
@var dir
local program="$(cat $dir/program)"
if [[ ! "$program" ]]; then
program="/bin/true"
fi
if [[ ! -s $dir/listen ]]; then
local port=$($this::random-port)
echo "$(hostname):$port" > $dir/listen
fi
local listen=$(cat $dir/listen)
command blankd \
-d "$dir/requests/" \
-l "$listen" \
-e "$program" \
-o "$dir/logs" > $dir/pid
}
@method logs() {
@var dir
cat "$dir/logs"
}
@method cleanup() {
@var dir
$this::stop
rm -r $dir
}
@method get-dir() {
@var dir
echo "$dir"
}