1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
(function () {
var activityQueue = [];
var send = function (service, json) {
return Q.Promise(function (resolve, reject, notify) {
$.ajax({
'type': 'POST',
'url': codeq.urlPrefix + service,
'accepts': 'application/json',
'contentType': 'application/json; charset=UTF-8', // type of our request
'data': json,
'processData': false, // don't process outgoing data
'dataType': 'json', // expected type of the response
'timeout': 60000, // one minute
'error': function sendErrorHandler(jqXHR, textStatus, errorThrown) {
reject(new Error(errorThrown || textStatus));
},
'success': function sendSuccessHandler(data, textStatus, jqXHR) {
resolve(data);
}
});
});
};
var sendCount = 0,
sendActivityInternal = function () {
var request;
// send max. 100 activities, do not be excessive
if (activityQueue.length > 100) {
sendCount = 100;
request = '[' + activityQueue.slice(0, 100).join(',') + ']';
}
else {
sendCount = activityQueue.length;
request = '[' + activityQueue.join(',') + ']';
}
send('activity', request).then(
function sendActivitySuccess() {
activityQueue.splice(0, sendCount);
if (activityQueue.length > 0) sendActivityInternal();
},
function sendActivityFailure() {
Q.delay(500).then(sendActivityInternal).done();
}
).done();
};
codeq.comms = {
sendActivity: function commsSendActivity (json) {
var triggerSending = activityQueue.length == 0;
json['sid'] = codeq.sid;
activityQueue.push(codeq.jsonize(json));
if (triggerSending) {
setTimeout(sendActivityInternal, 0); // async trigger: see if you can collect some more payload
}
},
sendQuery: function commsSendQuery (json) {
json['sid'] = codeq.sid;
return send('query', codeq.jsonize(json));
},
getProblem: function commsGetProblem (language, problem_group, problem) {
return send('get_problem', codeq.jsonize({
'sid': codeq.sid,
'language': language,
'problem_group': problem_group,
'problem': problem
}));
}
};
})();
|