]> git.proxmox.com Git - mirror_novnc.git/blob - tests/playback.js
playback.js: realtime playback and split out code.
[mirror_novnc.git] / tests / playback.js
1 var rfb, mode, test_state, frame_idx, frame_length,
2 iteration, iterations, istart_time;
3
4 // Override send_array
5 send_array = function (arr) {
6 // Stub out send_array
7 }
8
9 function next_iteration () {
10 var time, iter_time, end_time;
11
12 if (iteration === 0) {
13 frame_length = VNC_frame_data.length;
14 test_state = 'running';
15 } else {
16 rfb.disconnect();
17 }
18
19 if (test_state !== 'running') { return; }
20
21 iteration++;
22 if (iteration > iterations) {
23 finish();
24 return;
25 }
26
27 frame_idx = 0;
28 istart_time = (new Date()).getTime();
29 rfb.connect('test', 0, "bogus");
30
31 queue_next_packet();
32
33 }
34
35 function queue_next_packet () {
36 var frame, now, foffset, toffset, delay;
37 if (test_state !== 'running') { return; }
38
39 frame = VNC_frame_data[frame_idx];
40 while ((frame_idx < frame_length) && (frame.charAt(0) === "}")) {
41 //Util.Debug("Send frame " + frame_idx);
42 frame_idx += 1;
43 frame = VNC_frame_data[frame_idx];
44 }
45
46 if (frame === 'EOF') {
47 Util.Debug("Finished, found EOF");
48 next_iteration();
49 return;
50 }
51 if (frame_idx >= frame_length) {
52 Util.Debug("Finished, no more frames");
53 next_iteration();
54 return;
55 }
56
57 if (mode === 'realtime') {
58 foffset = frame.slice(1, frame.indexOf('{', 1));
59 toffset = (new Date()).getTime() - istart_time;
60 delay = foffset - toffset;
61 if (delay < 1) {
62 delay = 1;
63 }
64
65 setTimeout(do_packet, delay);
66 } else {
67 setTimeout(do_packet, 1);
68 }
69 }
70
71 function do_packet () {
72 //Util.Debug("Processing frame: " + frame_idx);
73 frame = VNC_frame_data[frame_idx];
74 rfb.recv_message({'data' : frame.slice(frame.indexOf('{', 1)+1)});
75 frame_idx += 1;
76
77 queue_next_packet();
78 }
79