diff options
author | Christian Pointner <equinox@spreadspace.org> | 2014-10-18 23:37:27 +0200 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2014-10-18 23:38:27 +0200 |
commit | d05240899cb00e0431b4c6b63d1be2efaed6eecf (patch) | |
tree | 0ca374666672dc8d0dbd2267f0fe6d67639def99 /src/daq/nginx-lua/s5-nginx-fetch.lua | |
parent | daq: nginx-lua works now but it has possible unresolvable issues (diff) |
reverted to old nginx-lua model
Diffstat (limited to 'src/daq/nginx-lua/s5-nginx-fetch.lua')
-rw-r--r-- | src/daq/nginx-lua/s5-nginx-fetch.lua | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/daq/nginx-lua/s5-nginx-fetch.lua b/src/daq/nginx-lua/s5-nginx-fetch.lua new file mode 100644 index 0000000..8821094 --- /dev/null +++ b/src/daq/nginx-lua/s5-nginx-fetch.lua @@ -0,0 +1,73 @@ +-- +-- sfive +-- +-- sfive - spreadspace streaming statistics suite is a generic +-- statistic collection tool for streaming server infrastuctures. +-- The system collects and stores meta data like number of views +-- and throughput from a number of streaming servers and stores +-- it in a global data store. +-- The data acquisition is designed to be generic and extensible in +-- order to support different streaming software. +-- sfive also contains tools and applications to filter and visualize +-- live and recorded data. +-- +-- +-- Copyright (C) 2014 Christian Pointner <equinox@spreadspace.org> +-- Markus Grueneis <gimpf@gimpf.org> +-- +-- This file is part of sfive. +-- +-- sfive is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License version 3 +-- as published by the Free Software Foundation. +-- +-- sfive is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with sfive. If not, see <http://www.gnu.org/licenses/>. +-- +-- +-- Install this by adding the following to your nginx.conf +-- +-- location /sfive { +-- allow 127.0.0.1; +-- allow ::1; +-- deny all; +-- +-- content_by_lua_file '/path/to/s5-nginx-fetch.lua'; +-- } +-- + +local lock = locks:new("sfive_locks", { exptime = nil, timeout = 0.001 }) +local ok, err = lock:lock("fetch") +if not ok then + if err == "timeout" then + ngx.exit(ngx.HTTP_SERVICE_UNAVAILABLE) + else + ngx.log(ngx.ERR, "SFive(fetch): failed to acquire fetch lock: " .. err) + ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) + end +else + ngx.log(ngx.INFO, "SFive(fetch): client connected") + local sfive_data = ngx.shared.sfive_data + while true do + logs = sfive_data:get_keys() + for i, k in ipairs(logs) do + local ok, err = ngx.say(sfive_data:get(k)) + if not ok then + ngx.log(ngx.ERR, "SFive(fetch): failed to send data set: ", err) + break + end + sfive_data:delete(k) + end + ngx.flush() + ngx.sleep(0.1) + end + ok, err = lock:unlock("fetch") + if not ok then + ngx.log(ngx.ERR, "SFive(fetch): unlock error: " .. err) + end +end |