diff options
10 files changed, 62 insertions, 26 deletions
diff --git a/AndroidAsync/AndroidManifest.xml b/AndroidAsync/AndroidManifest.xml index 2c1bacf..7ba5cab 100644 --- a/AndroidAsync/AndroidManifest.xml +++ b/AndroidAsync/AndroidManifest.xml @@ -12,11 +12,9 @@ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <application - android:icon="@drawable/ic_launcher" - android:label="@string/name" > + android:icon="@drawable/ic_launcher"> <activity - android:name="com.koushikdutta.test.TestActivity" - android:label="@string/name" > + android:name="com.koushikdutta.test.TestActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> diff --git a/AndroidAsync/gen/com/koushikdutta/async/R.java b/AndroidAsync/gen/com/koushikdutta/async/R.java index 4f4fe85..5d2ca9b 100644 --- a/AndroidAsync/gen/com/koushikdutta/async/R.java +++ b/AndroidAsync/gen/com/koushikdutta/async/R.java @@ -14,7 +14,4 @@ public final class R { public static int ic_action_search=0x7f020000; public static int ic_launcher=0x7f020001; } - public static final class string { - public static int name=0x7f030000; - } } diff --git a/AndroidAsync/res/values/strings.xml b/AndroidAsync/res/values/strings.xml index fd9382d..3261aff 100644 --- a/AndroidAsync/res/values/strings.xml +++ b/AndroidAsync/res/values/strings.xml @@ -1,5 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <string name="name">Async</string> </resources>
\ No newline at end of file diff --git a/AndroidAsync/src/com/koushikdutta/async/AsyncServer.java b/AndroidAsync/src/com/koushikdutta/async/AsyncServer.java index c333b65..4c79736 100644 --- a/AndroidAsync/src/com/koushikdutta/async/AsyncServer.java +++ b/AndroidAsync/src/com/koushikdutta/async/AsyncServer.java @@ -27,9 +27,13 @@ public class AsyncServer { private static final String LOGTAG = "NIO"; static { - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO) { - java.lang.System.setProperty("java.net.preferIPv4Stack", "true"); - java.lang.System.setProperty("java.net.preferIPv6Addresses", "false"); + try { + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO) { + java.lang.System.setProperty("java.net.preferIPv4Stack", "true"); + java.lang.System.setProperty("java.net.preferIPv6Addresses", "false"); + } + } + catch (Throwable ex) { } } diff --git a/AndroidAsync/src/com/koushikdutta/async/PushParser.java b/AndroidAsync/src/com/koushikdutta/async/PushParser.java index f076fdf..70e8777 100644 --- a/AndroidAsync/src/com/koushikdutta/async/PushParser.java +++ b/AndroidAsync/src/com/koushikdutta/async/PushParser.java @@ -16,6 +16,9 @@ public class PushParser { int length; } + static class StringWaiter extends BufferWaiter { + } + static class UntilWaiter { byte value; DataCallback callback; @@ -63,6 +66,14 @@ public class PushParser { return this; } + public PushParser readString() { + readInt(); + StringWaiter bw = new StringWaiter(); + bw.length = -1; + mWaiting.add(bw); + return this; + } + public PushParser until(byte b, DataCallback callback) { UntilWaiter waiter = new UntilWaiter(); waiter.value = b; @@ -163,7 +174,7 @@ public class PushParser { throw new Exception(); } } - else if (waiting instanceof BufferWaiter) { + else if (waiting instanceof BufferWaiter || waiting instanceof StringWaiter) { BufferWaiter bw = (BufferWaiter)waiting; int length = bw.length; if (length == -1) { @@ -185,7 +196,10 @@ public class PushParser { bb.get(bytes); } mNeeded -= length; - mArgs.add(bytes); + if (waiting instanceof StringWaiter) + mArgs.add(new String(bytes)); + else + mArgs.add(bytes); } else { Assert.fail(); diff --git a/AndroidAsync/src/com/koushikdutta/async/http/server/AsyncHttpServer.java b/AndroidAsync/src/com/koushikdutta/async/http/server/AsyncHttpServer.java index b22ac3d..b930a55 100644 --- a/AndroidAsync/src/com/koushikdutta/async/http/server/AsyncHttpServer.java +++ b/AndroidAsync/src/com/koushikdutta/async/http/server/AsyncHttpServer.java @@ -170,7 +170,7 @@ public class AsyncHttpServer implements ExceptionEmitter { addAction("GET", regex, callback); } - InputStream getAssetStream(final Context context, String asset) { + public static InputStream getAssetStream(final Context context, String asset) { String apkPath = context.getPackageResourcePath(); String assetPath = "assets/" + asset; try { diff --git a/AndroidAsync/src/com/koushikdutta/async/http/server/AsyncHttpServerResponse.java b/AndroidAsync/src/com/koushikdutta/async/http/server/AsyncHttpServerResponse.java index 4831c8c..56e0a88 100644 --- a/AndroidAsync/src/com/koushikdutta/async/http/server/AsyncHttpServerResponse.java +++ b/AndroidAsync/src/com/koushikdutta/async/http/server/AsyncHttpServerResponse.java @@ -1,5 +1,7 @@ package com.koushikdutta.async.http.server; +import java.io.File; + import org.json.JSONObject; import com.koushikdutta.async.DataSink; @@ -10,6 +12,7 @@ public interface AsyncHttpServerResponse extends DataSink { public void send(String contentType, String string); public void send(String string); public void send(JSONObject json); + public void sendFile(File file); public void responseCode(int code); public ResponseHeaders getHeaders(); public void writeHead(); diff --git a/AndroidAsync/src/com/koushikdutta/async/http/server/AsyncHttpServerResponseImpl.java b/AndroidAsync/src/com/koushikdutta/async/http/server/AsyncHttpServerResponseImpl.java index 35e7154..3e4ff2d 100644 --- a/AndroidAsync/src/com/koushikdutta/async/http/server/AsyncHttpServerResponseImpl.java +++ b/AndroidAsync/src/com/koushikdutta/async/http/server/AsyncHttpServerResponseImpl.java @@ -1,5 +1,8 @@ package com.koushikdutta.async.http.server; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; @@ -11,6 +14,8 @@ import com.koushikdutta.async.AsyncSocket; import com.koushikdutta.async.BufferedDataSink; import com.koushikdutta.async.ByteBufferList; import com.koushikdutta.async.FilteredDataSink; +import com.koushikdutta.async.Util; +import com.koushikdutta.async.callback.CompletedCallback; import com.koushikdutta.async.callback.WritableCallback; import com.koushikdutta.async.http.filter.ChunkedOutputFilter; import com.koushikdutta.async.http.libcore.RawHeaders; @@ -126,6 +131,24 @@ public class AsyncHttpServerResponseImpl implements AsyncHttpServerResponse { public void send(JSONObject json) { send("application/json", json.toString()); } + + public void sendFile(File file) { + try { + FileInputStream fin = new FileInputStream(file); + mRawHeaders.set("Content-Type", AsyncHttpServer.getContentType(file.getAbsolutePath())); + responseCode(200); + Util.pump(fin, this, new CompletedCallback() { + @Override + public void onCompleted(Exception ex) { + end(); + } + }); + } + catch (FileNotFoundException e) { + responseCode(404); + end(); + } + } @Override public void responseCode(int code) { diff --git a/AndroidAsyncSample/gen/com/koushikdutta/async/R.java b/AndroidAsyncSample/gen/com/koushikdutta/async/R.java index a260ef9..48d7fcd 100644 --- a/AndroidAsyncSample/gen/com/koushikdutta/async/R.java +++ b/AndroidAsyncSample/gen/com/koushikdutta/async/R.java @@ -29,12 +29,11 @@ public final class R { public static final int activity_main=0x7f060000; } public static final class string { - public static final int app_name=0x7f040001; - public static final int download=0x7f040005; - public static final int hello_world=0x7f040002; - public static final int menu_settings=0x7f040003; - public static final int name=0x7f040000; - public static final int title_activity_main=0x7f040004; + public static final int app_name=0x7f040000; + public static final int download=0x7f040004; + public static final int hello_world=0x7f040001; + public static final int menu_settings=0x7f040002; + public static final int title_activity_main=0x7f040003; } public static final class style { public static final int AppTheme=0x7f050000; diff --git a/AndroidAsyncSample/gen/com/koushikdutta/async/sample/R.java b/AndroidAsyncSample/gen/com/koushikdutta/async/sample/R.java index 4c6fd91..849c156 100644 --- a/AndroidAsyncSample/gen/com/koushikdutta/async/sample/R.java +++ b/AndroidAsyncSample/gen/com/koushikdutta/async/sample/R.java @@ -29,12 +29,11 @@ public final class R { public static final int activity_main=0x7f060000; } public static final class string { - public static final int app_name=0x7f040001; - public static final int download=0x7f040005; - public static final int hello_world=0x7f040002; - public static final int menu_settings=0x7f040003; - public static final int name=0x7f040000; - public static final int title_activity_main=0x7f040004; + public static final int app_name=0x7f040000; + public static final int download=0x7f040004; + public static final int hello_world=0x7f040001; + public static final int menu_settings=0x7f040002; + public static final int title_activity_main=0x7f040003; } public static final class style { public static final int AppTheme=0x7f050000; |