eventstreams.lua

Mon, 04 Jan 2016 16:27:00 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Mon, 04 Jan 2016 16:27:00 +0000
changeset 16
d35376a53644
parent 9
7da8b3c95bb1
permissions
-rw-r--r--

main, geoip: Add GeoIP lookup support for watcher info

9
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 local stream_methods = {};
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2 local stream_mt = { __index = stream_methods };
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 local response_head = table.concat({
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 "HTTP/1.1 200 OK";
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 "Content-Type: text/event-stream";
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 "";
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 "";
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 }, "\r\n");
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 function stream_methods:add_watcher(conn)
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 conn:write(response_head);
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13 self.watchers[conn] = true;
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 end
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 function stream_methods:remove_watcher(conn)
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 self.watchers[conn] = nil;
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 end
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 function stream_methods:push(data)
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 data = "data: "..data:gsub("\n", "\ndata: \n").."\n\n";
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 for conn in pairs(self.watchers) do
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 conn:write(data);
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 end
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 end
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 function stream_methods:is_unwatched()
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 return next(self.watchers) == nil;
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 end
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 local function new()
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 return setmetatable({ watchers = {} }, stream_mt);
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 end
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34
7da8b3c95bb1 Add and remove missing/deleted files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 return { new = new };

mercurial