Mercurial > hg > rlgwebd
comparison rlgwebd.js @ 66:57bf0dcd080e
Display idle time of games in progress.
statusmsg() now includes games' idle times, and the client displays
them using getcurrent().
| author | John "Elwin" Edwards <elwin@sdf.org> |
|---|---|
| date | Wed, 20 Jun 2012 11:37:05 -0700 |
| parents | e3082fd06520 |
| children | e4773ac5d4d5 |
comparison
equal
deleted
inserted
replaced
| 65:e63c26dc0497 | 66:57bf0dcd080e |
|---|---|
| 799 res.write(JSON.stringify(msgs)); | 799 res.write(JSON.stringify(msgs)); |
| 800 res.end(); | 800 res.end(); |
| 801 } | 801 } |
| 802 | 802 |
| 803 function statusmsg(req, res) { | 803 function statusmsg(req, res) { |
| 804 var now = new Date(); | |
| 804 var reply = {"s": allowlogin, "g": []}; | 805 var reply = {"s": allowlogin, "g": []}; |
| 806 function respond() { | |
| 807 res.writeHead(200, { "Content-Type": "application/json" }); | |
| 808 if (req.method != 'HEAD') | |
| 809 res.write(JSON.stringify(reply)); | |
| 810 res.end(); | |
| 811 } | |
| 812 function idleset(i, idletime) { | |
| 813 if (i >= 0 && i < reply.g.length) { | |
| 814 reply.g[i].i = idletime; | |
| 815 } | |
| 816 for (var j = 0; j < reply.g.length; j++) { | |
| 817 if (!("i" in reply.g[j])) | |
| 818 return; | |
| 819 } | |
| 820 respond(); | |
| 821 } | |
| 805 for (var sessid in sessions) { | 822 for (var sessid in sessions) { |
| 806 var gamedesc = {}; | 823 var gamedesc = {}; |
| 807 gamedesc["n"] = sessid; | 824 gamedesc["n"] = sessid; |
| 808 gamedesc["p"] = sessions[sessid].pname; | 825 gamedesc["p"] = sessions[sessid].pname; |
| 809 gamedesc["g"] = sessions[sessid].game.uname; | 826 gamedesc["g"] = sessions[sessid].game.uname; |
| 810 reply["g"].push(gamedesc); | 827 reply["g"].push(gamedesc); |
| 811 } | 828 } |
| 812 res.writeHead(200, { "Content-Type": "application/json" }); | 829 if (reply.g.length == 0) { |
| 813 if (req.method != 'HEAD') | 830 respond(); |
| 814 res.write(JSON.stringify(reply)); | 831 return; |
| 815 res.end(); | 832 } |
| 833 function makecallback(i) { | |
| 834 return function (err, stats) { | |
| 835 if (err) | |
| 836 idleset(i, null); | |
| 837 else | |
| 838 idleset(i, now - stats.mtime); | |
| 839 } | |
| 840 } | |
| 841 for (var i = 0; i < reply.g.length; i++) { | |
| 842 if (reply.g[i].n in sessions) { | |
| 843 fs.fstat(sessions[reply.g[i].n].record.fd, makecallback(i)); | |
| 844 } | |
| 845 else { | |
| 846 idleset(i, null); | |
| 847 } | |
| 848 } | |
| 816 } | 849 } |
| 817 | 850 |
| 818 function pstatusmsg(req, res) { | 851 function pstatusmsg(req, res) { |
| 819 if (req.method == 'HEAD') { | 852 if (req.method == 'HEAD') { |
| 820 res.writeHead(200, { "Content-Type": "application/json" }); | 853 res.writeHead(200, { "Content-Type": "application/json" }); |
