summaryrefslogtreecommitdiffstats
path: root/java/src/com/tightvnc
diff options
context:
space:
mode:
authorConstantin Kaplinsky <const@tightvnc.com>2008-06-21 11:41:42 +0000
committerConstantin Kaplinsky <const@tightvnc.com>2008-06-21 11:41:42 +0000
commitd2af082ed28d28c381fd00ae6211802691a0d45e (patch)
tree542214862a450d4e303f09626d86464e9375699a /java/src/com/tightvnc
parentd3a2df1f9777a3d02819a40ef2e4b18604e61649 (diff)
downloadtigervnc-d2af082ed28d28c381fd00ae6211802691a0d45e.tar.gz
tigervnc-d2af082ed28d28c381fd00ae6211802691a0d45e.zip
[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
Diffstat (limited to 'java/src/com/tightvnc')
-rw-r--r--java/src/com/tightvnc/rfbplayer/FbsConnection.java28
1 files 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();
+ }
+
}