Mon, 04 Jan 2016 16:27:00 +0000
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 }; |