use ArrayUtils.reverse(), some cleanups and docs
This commit is contained in:
parent
4c77ae6c4b
commit
beba45fcdf
@ -26,9 +26,14 @@ import java.util.zip.InflaterInputStream;
|
|||||||
|
|
||||||
import org.oscim.backend.Log;
|
import org.oscim.backend.Log;
|
||||||
import org.oscim.core.Tile;
|
import org.oscim.core.Tile;
|
||||||
|
import org.oscim.utils.ArrayUtils;
|
||||||
|
|
||||||
//import android.os.SystemClock;
|
/**
|
||||||
|
* Lightweight HTTP connection for tile loading.
|
||||||
|
*
|
||||||
|
* Default tile url format is 'z/x/y'. Override formatTilePath() for a
|
||||||
|
* different format.
|
||||||
|
*/
|
||||||
public class LwHttp {
|
public class LwHttp {
|
||||||
private static final String TAG = LwHttp.class.getName();
|
private static final String TAG = LwHttp.class.getName();
|
||||||
|
|
||||||
@ -36,7 +41,7 @@ public class LwHttp {
|
|||||||
private final static byte[] HEADER_CONTENT_TYPE = "Content-Type".getBytes();
|
private final static byte[] HEADER_CONTENT_TYPE = "Content-Type".getBytes();
|
||||||
private final static byte[] HEADER_CONTENT_LENGTH = "Content-Length".getBytes();
|
private final static byte[] HEADER_CONTENT_LENGTH = "Content-Length".getBytes();
|
||||||
private final static int RESPONSE_EXPECTED_LIVES = 100;
|
private final static int RESPONSE_EXPECTED_LIVES = 100;
|
||||||
private final static long RESPONSE_TIMEOUT = (long) 10E9; // 10 second in nanosecond (I guess)
|
private final static long RESPONSE_TIMEOUT = (long) 10E9; // 10 second in nanosecond
|
||||||
|
|
||||||
private final static int BUFFER_SIZE = 1024;
|
private final static int BUFFER_SIZE = 1024;
|
||||||
private final byte[] buffer = new byte[BUFFER_SIZE];
|
private final byte[] buffer = new byte[BUFFER_SIZE];
|
||||||
@ -60,6 +65,16 @@ public class LwHttp {
|
|||||||
|
|
||||||
private int mContentLength = -1;
|
private int mContentLength = -1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param url
|
||||||
|
* Base url for tiles
|
||||||
|
* @param contentType
|
||||||
|
* Expected Content-Type
|
||||||
|
* @param extension
|
||||||
|
* 'file' extension, usually .png
|
||||||
|
* @param deflate
|
||||||
|
* true when content uses gzip compression
|
||||||
|
*/
|
||||||
public LwHttp(URL url, String contentType, String extension, boolean deflate) {
|
public LwHttp(URL url, String contentType, String extension, boolean deflate) {
|
||||||
mContentType = contentType.getBytes();
|
mContentType = contentType.getBytes();
|
||||||
mInflateContent = deflate;
|
mInflateContent = deflate;
|
||||||
@ -132,7 +147,7 @@ public class LwHttp {
|
|||||||
|
|
||||||
mContentLength = -1;
|
mContentLength = -1;
|
||||||
|
|
||||||
// header cannot be larger than BUFFER_SIZE for this to work
|
// header may not be larger than BUFFER_SIZE for this to work
|
||||||
for (; (pos < read) || ((read < BUFFER_SIZE) &&
|
for (; (pos < read) || ((read < BUFFER_SIZE) &&
|
||||||
(len = is.read(buf, read, BUFFER_SIZE - read)) >= 0); len = 0) {
|
(len = is.read(buf, read, BUFFER_SIZE - read)) >= 0); len = 0) {
|
||||||
|
|
||||||
@ -159,13 +174,16 @@ public class LwHttp {
|
|||||||
ok = false;
|
ok = false;
|
||||||
|
|
||||||
} else if (check(HEADER_CONTENT_TYPE, buf, pos, end)) {
|
} else if (check(HEADER_CONTENT_TYPE, buf, pos, end)) {
|
||||||
if (!check(mContentType, buf,
|
// check that response contains the expected
|
||||||
pos + HEADER_CONTENT_TYPE.length + 2, end))
|
// Content-Type
|
||||||
|
if (!check(mContentType, buf, pos +
|
||||||
|
HEADER_CONTENT_TYPE.length + 2, end))
|
||||||
ok = false;
|
ok = false;
|
||||||
|
|
||||||
} else if (check(HEADER_CONTENT_LENGTH, buf, pos, end)) {
|
} else if (check(HEADER_CONTENT_LENGTH, buf, pos, end)) {
|
||||||
mContentLength = parseInt(buf,
|
// parse Content-Length
|
||||||
pos + HEADER_CONTENT_LENGTH.length + 2, end - 1);
|
mContentLength = parseInt(buf, pos +
|
||||||
|
HEADER_CONTENT_LENGTH.length + 2, end - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
@ -281,12 +299,7 @@ public class LwHttp {
|
|||||||
for (int n = val; n > 0; n = n / 10, i++)
|
for (int n = val; n > 0; n = n / 10, i++)
|
||||||
buf[pos + i] = (byte) ('0' + n % 10);
|
buf[pos + i] = (byte) ('0' + n % 10);
|
||||||
|
|
||||||
// reverse bytes
|
ArrayUtils.reverse(buf, pos, pos + i);
|
||||||
for (int j = pos, end = pos + i - 1, mid = pos + i / 2; j < mid; j++, end--) {
|
|
||||||
byte tmp = buf[j];
|
|
||||||
buf[j] = buf[end];
|
|
||||||
buf[end] = tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
return pos + i;
|
return pos + i;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user