- function receiveMessage(server, time, id, text) {
- var seen_key = make_seen_key(id, text);
- if (!(seen_key in seen)) {
- seen[seen_key] = true;
- rcaddmessagetohistory(text);
- for (var i in servers) {
- rcchangeserverstatus(servers[i], "sad");
+ function rcupdatemessagetime(message) {
+ // Set message.Time to be the median of message.ServerTimes
+ var times = [];
+ for (var i in message.ServerTimes) {
+ times.push(message.ServerTimes[i]);
+ }
+ times.sort();
+ var middle = times.length/2;
+ if (times.length % 2) {
+ message.Time = times[middle];
+ } else {
+ var difference = times[middle].getTime() - times[middle-1].getTime();
+ message.Time = new Date(times[middle-1].getTime() + difference/2);
+ }
+ }
+
+ function rcreceivemessages(server, messages) {
+ for (var i in messages) {
+ var m = messages[i];
+ m.Time = new Date(m.Time);
+ var seen_key = make_seen_key(m.ID, m.Text);
+ if (seen_key in seen) {
+ seen[seen_key].ServerTimes[server] = m.Time;
+ rcupdatemessagetime(seen[seen_key]);
+ } else {
+ m.ServerTimes = {};
+ m.ServerTimes[server] = m.Time;
+ seen[seen_key] = m;
+ rcaddmessagetohistory(m);
+ for (var i in servers) {
+ rcchangeserverstatus(servers[i], "sad");
+ }