BadVPN – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 include_guard "onoff_server"
2  
3 template onoff_server_main {
4 alias("_arg0") socket_path;
5  
6 depend_scope() depsc;
7 process_manager() mgr;
8  
9 sys.request_server({"unix", socket_path}, "onoff_server__request_handler", {});
10 }
11  
12 template onoff_server_onoff {
13 alias(_arg0) main;
14 alias("_arg1") onoff_id;
15 alias("_arg2") default_state;
16  
17 main.mgr->start(onoff_id, "onoff_server__id_proc", {onoff_id, default_state});
18 main.depsc->depend({onoff_id}) id_proc;
19  
20 id_proc.blk->use();
21 }
22  
23 template onoff_server__id_proc {
24 alias("_caller") main;
25 alias("_arg0") onoff_id;
26 alias("_arg1") default_state;
27  
28 blocker() blk;
29 If (default_state) {
30 blk->up();
31 };
32 main.depsc->provide(onoff_id);
33 }
34  
35 template onoff_server__request_handler {
36 alias("_caller") main;
37  
38 try("onoff_server__try_request", {});
39  
40 _request->reply({"error", "Bad request."});
41 _request->finish();
42 }
43  
44 template onoff_server__try_request {
45 alias("_caller.main") main;
46 alias("_caller._request") request;
47  
48 value(request.data) data;
49  
50 val_equal(data.type, "list") a;
51 _try->assert(a);
52  
53 num_greater_equal(data.length, "1") a;
54 _try->assert(a);
55  
56 data->get("0") request_cmd;
57 val_equal(request_cmd, "set_onoff") is_set_onoff;
58  
59 If (is_set_onoff) {
60 num_equal(data.length, "3") a;
61 _try->assert(a);
62  
63 data->get("1") onoff_id;
64 data->get("2") new_state;
65  
66 main.mgr->start(onoff_id, "onoff_server__id_proc", {onoff_id, new_state});
67 main.depsc->depend({onoff_id}) id_proc;
68  
69 val_equal(new_state, "true") is_on;
70 If (is_on) {
71 id_proc.blk->up();
72 } Else {
73 id_proc.blk->down();
74 };
75 }
76 Else {
77 _try->assert("false");
78 };
79  
80 request->reply({"OK", "state has been set"});
81 request->finish();
82 }