| /* |
| * noVNC: HTML5 VNC client |
| * Copyright (C) 2011 Joel Martin |
| * Licensed under LGPL-3 (see LICENSE.LGPL-3) |
| */ |
| |
| "use strict"; |
| /*jslint browser: true, white: false */ |
| /*global Util, VNC_frame_data, finish */ |
| |
| var rfb, mode, test_state, frame_idx, frame_length, |
| iteration, iterations, istart_time, |
| |
| // Pre-declarations for jslint |
| send_array, next_iteration, queue_next_packet, do_packet; |
| |
| // Override send_array |
| send_array = function (arr) { |
| // Stub out send_array |
| }; |
| |
| next_iteration = function () { |
| if (iteration === 0) { |
| frame_length = VNC_frame_data.length; |
| test_state = 'running'; |
| } else { |
| rfb.disconnect(); |
| } |
| |
| if (test_state !== 'running') { return; } |
| |
| iteration += 1; |
| if (iteration > iterations) { |
| finish(); |
| return; |
| } |
| |
| frame_idx = 0; |
| istart_time = (new Date()).getTime(); |
| rfb.connect('test', 0, "bogus"); |
| |
| queue_next_packet(); |
| |
| }; |
| |
| queue_next_packet = function () { |
| var frame, foffset, toffset, delay; |
| if (test_state !== 'running') { return; } |
| |
| frame = VNC_frame_data[frame_idx]; |
| while ((frame_idx < frame_length) && (frame.charAt(0) === "}")) { |
| //Util.Debug("Send frame " + frame_idx); |
| frame_idx += 1; |
| frame = VNC_frame_data[frame_idx]; |
| } |
| |
| if (frame === 'EOF') { |
| Util.Debug("Finished, found EOF"); |
| next_iteration(); |
| return; |
| } |
| if (frame_idx >= frame_length) { |
| Util.Debug("Finished, no more frames"); |
| next_iteration(); |
| return; |
| } |
| |
| if (mode === 'realtime') { |
| foffset = frame.slice(1, frame.indexOf('{', 1)); |
| toffset = (new Date()).getTime() - istart_time; |
| delay = foffset - toffset; |
| if (delay < 1) { |
| delay = 1; |
| } |
| |
| setTimeout(do_packet, delay); |
| } else { |
| setTimeout(do_packet, 1); |
| } |
| }; |
| |
| do_packet = function () { |
| //Util.Debug("Processing frame: " + frame_idx); |
| var frame = VNC_frame_data[frame_idx]; |
| rfb.recv_message({'data' : frame.slice(frame.indexOf('{', 1) + 1)}); |
| frame_idx += 1; |
| |
| queue_next_packet(); |
| }; |
| |