From d2af082ed28d28c381fd00ae6211802691a0d45e Mon Sep 17 00:00:00 2001 From: Constantin Kaplinsky Date: Sat, 21 Jun 2008 11:41:42 +0000 Subject: [PATCH] [Refactoring] Added a separate function to connect to a byte range via HTTP using the Range header. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2610 3789f03b-4d11-0410-bbf8-ca57d06f2519 --- .../com/tightvnc/rfbplayer/FbsConnection.java | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/java/src/com/tightvnc/rfbplayer/FbsConnection.java b/java/src/com/tightvnc/rfbplayer/FbsConnection.java index 20b01544..d952f4fe 100644 --- a/java/src/com/tightvnc/rfbplayer/FbsConnection.java +++ b/java/src/com/tightvnc/rfbplayer/FbsConnection.java @@ -199,20 +199,15 @@ public class FbsConnection { } // Prepare URLConnection to the right part of the .fbk file. - URLConnection fbkConn = fbkURL.openConnection(); - long firstByteOffset = entryPoint.key_fpos; - long lastByteOffset = entryPoint.key_fpos + entryPoint.key_size - 1; - String rangeSpec = "bytes=" + firstByteOffset + "-" + lastByteOffset; - System.err.println("Range: " + rangeSpec); - fbkConn.setRequestProperty("Range", rangeSpec); - fbkConn.connect(); - DataInputStream is = new DataInputStream(fbkConn.getInputStream()); + InputStream is = + openByteRange(fbkURL, entryPoint.key_fpos, entryPoint.key_size); + DataInputStream dis = new DataInputStream(is); // Load keyframe data from the .fbk file. - int keyDataSize = is.readInt(); + int keyDataSize = dis.readInt(); byte[] keyData = new byte[keyDataSize]; - is.readFully(keyData); - is.close(); + dis.readFully(keyData); + dis.close(); // Open the FBS stream. URLConnection fbsConn = fbsURL.openConnection(); @@ -221,4 +216,15 @@ public class FbsConnection { keyData, entryPoint.fbs_skip); } + private InputStream openByteRange(URL url, long offset, long length) + throws IOException { + URLConnection conn = url.openConnection(); + long lastByteOffset = offset + length - 1; + String rangeSpec = "bytes=" + offset + "-" + lastByteOffset; + System.err.println("Range: " + rangeSpec); + conn.setRequestProperty("Range", rangeSpec); + conn.connect(); + return conn.getInputStream(); + } + } -- 2.39.5