var fs = require('fs');
var url = require('url');
var querystring = require('querystring');
+var path = require('path');
// Constants.
var json_filename = '/srv/analysis.sesse.net/www/analysis.json';
// The current contents of the file to hand out, and its last modified time.
-var json_contents = null;
-var json_last_modified = null;
+var json_contents = undefined;
+var json_last_modified = undefined;
// The list of clients that are waiting for new data to show up,
// and their associated timers. Uniquely keyed by request_id
// Used to show a viewer count to the user.
var last_seen_clients = {};
-var reread_file = function() {
+var reread_file = function(event, filename) {
+ if (filename != path.basename(json_filename)) {
+ return;
+ }
+ console.log("Rereading " + json_filename);
fs.open(json_filename, 'r+', function(err, fd) {
if (err) throw err;
fs.fstat(fd, function(err, st) {
// Set up a watcher to catch changes to the file, then do an initial read
// to make sure we have a copy.
-fs.watch(json_filename, reread_file);
-reread_file();
+fs.watch(path.dirname(json_filename), reread_file);
+reread_file(null, path.basename(json_filename));
http.createServer(function(request, response) {
var u = url.parse(request.url, true);
// If we already have something newer than what the user has,
// just send it out and be done with it.
- if (!ims || json_last_modified > ims) {
+ if (json_last_modified !== undefined && (!ims || json_last_modified > ims)) {
send_json(response);
return;
}