aboutsummaryrefslogtreecommitdiffstats
path: root/AndroidAsync
diff options
context:
space:
mode:
Diffstat (limited to 'AndroidAsync')
-rw-r--r--AndroidAsync/AndroidManifest.xml1
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/AsyncServer.java12
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/ByteBufferList.java3
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpClient.java4
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpRequest.java2
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/http/server/HybiParser.java10
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/http/server/WebSocketImpl.java4
-rw-r--r--AndroidAsync/src/com/koushikdutta/test/TestActivity.java86
8 files changed, 83 insertions, 39 deletions
diff --git a/AndroidAsync/AndroidManifest.xml b/AndroidAsync/AndroidManifest.xml
index d89e9aa..9443c98 100644
--- a/AndroidAsync/AndroidManifest.xml
+++ b/AndroidAsync/AndroidManifest.xml
@@ -7,6 +7,7 @@
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.INTERNET"/>
+ <uses-permission android:name="android.permission.READ_LOGS"/>
<application
android:icon="@drawable/ic_launcher"
diff --git a/AndroidAsync/src/com/koushikdutta/async/AsyncServer.java b/AndroidAsync/src/com/koushikdutta/async/AsyncServer.java
index 0d1da6d..2bd9a3b 100644
--- a/AndroidAsync/src/com/koushikdutta/async/AsyncServer.java
+++ b/AndroidAsync/src/com/koushikdutta/async/AsyncServer.java
@@ -25,7 +25,7 @@ import android.util.Log;
public class AsyncServer {
private static final String LOGTAG = "NIO";
- static AsyncServer mInstance;
+ static AsyncServer mInstance = new AsyncServer();
public static AsyncServer getDefault() {
if (mInstance == null)
mInstance = new AsyncServer();
@@ -229,6 +229,8 @@ public class AsyncServer {
while (mRun) {
try {
runLoop();
+ if (mSelector.keys().size() == 0)
+ mRun = false;
}
catch (Exception e) {
Log.i(LOGTAG, "exception?");
@@ -253,11 +255,17 @@ public class AsyncServer {
mSelector = null;
mShuttingDown = false;
mAffinity = null;
+ Log.i(LOGTAG, "****AsyncServer has shut down.****");
}
private void runLoop() throws IOException {
- mSelector.select();
runQueue();
+ int readyNow = mSelector.selectNow();
+ if (readyNow == 0) {
+ if (mSelector.keys().size() == 0)
+ return;
+ mSelector.select();
+ }
Set<SelectionKey> readyKeys = mSelector.selectedKeys();
for (SelectionKey key : readyKeys) {
if (key.isAcceptable()) {
diff --git a/AndroidAsync/src/com/koushikdutta/async/ByteBufferList.java b/AndroidAsync/src/com/koushikdutta/async/ByteBufferList.java
index 61f49c2..8179e57 100644
--- a/AndroidAsync/src/com/koushikdutta/async/ByteBufferList.java
+++ b/AndroidAsync/src/com/koushikdutta/async/ByteBufferList.java
@@ -87,6 +87,9 @@ public class ByteBufferList implements Iterable<ByteBuffer> {
public ByteBuffer read(int count) {
Assert.assertTrue(count <= remaining());
+ if (count == 0) {
+ return ByteBuffer.wrap(new byte[0]);
+ }
ByteBuffer first = mBuffers.peek();
while (first.position() == first.limit()) {
diff --git a/AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpClient.java b/AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpClient.java
index d4bbcac..733d444 100644
--- a/AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpClient.java
+++ b/AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpClient.java
@@ -98,7 +98,6 @@ public class AsyncHttpClient {
}
String kas = headers.get("Connection");
- // wip
if (kas != null && "keep-alive".toLowerCase().equals(kas.toLowerCase()))
keepalive = true;
}
@@ -161,7 +160,6 @@ public class AsyncHttpClient {
for (final SocketExchange se: sockets) {
final AsyncSocket socket = se.socket;
if (socket.isConnected()) {
- System.out.println("reuing socket");
sockets.remove(se);
socket.setClosedCallback(null);
server.post(new Runnable() {
@@ -317,7 +315,7 @@ public class AsyncHttpClient {
}
private static void download(AsyncHttpRequest req, final ResultPairCallback callback, final ResultConvert convert) {
- final Handler handler = new Handler();
+ final Handler handler = Looper.myLooper() == null ? null : new Handler();
connect(req, new HttpConnectCallback() {
ByteBufferList buffer = new ByteBufferList();
@Override
diff --git a/AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpRequest.java b/AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpRequest.java
index 5d64a44..22a65a1 100644
--- a/AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpRequest.java
+++ b/AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpRequest.java
@@ -14,7 +14,7 @@ public class AsyncHttpRequest {
if (path.length() == 0)
path = "/";
String query = getUri().getQuery();
- if (query.length() != 0)
+ if (query != null && query.length() != 0)
path += "?" + getUri().getQuery();
return String.format("%s %s HTTP/1.1", mMethod, path);
}
diff --git a/AndroidAsync/src/com/koushikdutta/async/http/server/HybiParser.java b/AndroidAsync/src/com/koushikdutta/async/http/server/HybiParser.java
index aff2025..253a402 100644
--- a/AndroidAsync/src/com/koushikdutta/async/http/server/HybiParser.java
+++ b/AndroidAsync/src/com/koushikdutta/async/http/server/HybiParser.java
@@ -37,12 +37,10 @@ import java.util.Arrays;
import java.util.List;
import junit.framework.Assert;
-import android.util.Log;
import com.koushikdutta.async.ByteBufferList;
import com.koushikdutta.async.DataEmitter;
import com.koushikdutta.async.DataEmitterReader;
-import com.koushikdutta.async.DataSink;
import com.koushikdutta.async.callback.DataCallback;
abstract class HybiParser {
@@ -266,7 +264,7 @@ abstract class HybiParser {
private byte[] frame(Object data, int opcode, int errorCode) {
if (mClosed) return null;
- Log.d(TAG, "Creating frame for: " + data + " op: " + opcode + " err: " + errorCode);
+// Log.d(TAG, "Creating frame for: " + data + " op: " + opcode + " err: " + errorCode);
byte[] buffer = (data instanceof String) ? decode((String) data) : (byte[]) data;
int insert = (errorCode > 0) ? 2 : 0;
@@ -363,18 +361,18 @@ abstract class HybiParser {
} else if (opcode == OP_CLOSE) {
int code = (payload.length >= 2) ? 256 * payload[0] + payload[1] : 0;
String reason = (payload.length > 2) ? encode(slice(payload, 2)) : null;
- Log.d(TAG, "Got close op! " + code + " " + reason);
+// Log.d(TAG, "Got close op! " + code + " " + reason);
onDisconnect(code, reason);
} else if (opcode == OP_PING) {
if (payload.length > 125) { throw new ProtocolError("Ping payload too large"); }
- Log.d(TAG, "Sending pong!!");
+// Log.d(TAG, "Sending pong!!");
sendFrame(frame(payload, OP_PONG, -1));
} else if (opcode == OP_PONG) {
String message = encode(payload);
// FIXME: Fire callback...
- Log.d(TAG, "Got pong! " + message);
+// Log.d(TAG, "Got pong! " + message);
}
}
diff --git a/AndroidAsync/src/com/koushikdutta/async/http/server/WebSocketImpl.java b/AndroidAsync/src/com/koushikdutta/async/http/server/WebSocketImpl.java
index bcf4135..dfa9811 100644
--- a/AndroidAsync/src/com/koushikdutta/async/http/server/WebSocketImpl.java
+++ b/AndroidAsync/src/com/koushikdutta/async/http/server/WebSocketImpl.java
@@ -40,8 +40,8 @@ public class WebSocketImpl implements WebSocket {
response.getHeaders().getHeaders().set("Upgrade", "WebSocket");
response.getHeaders().getHeaders().set("Connection", "Upgrade");
response.getHeaders().getHeaders().set("Sec-WebSocket-Accept", sha1);
- if (origin != null)
- response.getHeaders().getHeaders().set("Access-Control-Allow-Origin", "http://" + origin);
+// if (origin != null)
+// response.getHeaders().getHeaders().set("Access-Control-Allow-Origin", "http://" + origin);
response.writeHead();
mParser = new HybiParser(request) {
diff --git a/AndroidAsync/src/com/koushikdutta/test/TestActivity.java b/AndroidAsync/src/com/koushikdutta/test/TestActivity.java
index ae5a665..2058065 100644
--- a/AndroidAsync/src/com/koushikdutta/test/TestActivity.java
+++ b/AndroidAsync/src/com/koushikdutta/test/TestActivity.java
@@ -1,5 +1,7 @@
package com.koushikdutta.test;
+import java.io.DataInputStream;
+import java.io.OutputStream;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.InetSocketAddress;
@@ -79,6 +81,7 @@ public class TestActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ /*
AsyncHttpServer server = new AsyncHttpServer(3000);
server.get("/", new HttpServerRequestCallback() {
@Override
@@ -93,18 +96,52 @@ public class TestActivity extends Activity {
server.websocket("/test", new WebSocketCallback() {
@Override
public void onConnected(final WebSocket webSocket) {
+ new Thread() {
+ public void run() {
+ try {
+ final Process process = Runtime.getRuntime().exec("su -c /system/bin/logcat");
+ new Thread() {
+ public void run() {
+ try {
+ DataInputStream dd = new DataInputStream(process.getErrorStream());
+ String s;
+ while (null != (s = dd.readLine())) {
+ if (s.length() == 0)
+ continue;
+ webSocket.send(s);
+ }
+ }
+ catch (Exception ex) {
+
+ }
+ };
+
+ }.start();
+ DataInputStream dis = new DataInputStream(process.getInputStream());
+ OutputStream os = process.getOutputStream();
+ String s;
+ while (null != (s = dis.readLine())) {
+ if (s.length() == 0)
+ continue;
+ webSocket.send(s);
+ os.write("\n".getBytes());
+ }
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+ Log.i(TAG, "Done!!!!");
+ };
+ }.start();
webSocket.setStringCallback(new WebSocket.StringCallback() {
@Override
public void onStringAvailable(String s) {
Log.i(TAG, s);
- webSocket.send(s);
}
});
}
});
- if (true)
- return;
-
+ */
// try {
// ByteArrayOutputStream bout = new ByteArrayOutputStream();
@@ -160,18 +197,8 @@ public class TestActivity extends Activity {
// if (true)
// return;
- ThreadPolicy.Builder b = new Builder();
- StrictMode.setThreadPolicy(b.permitAll().build());
- final String host = "builder.clockworkmod.com";
- final int port = 443;
-
- final String shit = "GET / HTTP/1.1\n"
- + "User-Agent: curl/7.25.0 (x86_64-apple-darwin11.3.0) libcurl/7.25.0 OpenSSL/1.0.1c zlib/1.2.7 libidn/1.22\n"
- + String.format("Host: %s\n", host)
- + "Accept: */*\n" + "\n\n";
-
// final AsyncServer server = new AsyncServer();
try {
// server.initialize();
@@ -221,19 +248,28 @@ public class TestActivity extends Activity {
if (true)
return;
*/
-
- for (int i = 0; i < 5; i++) {
- AsyncHttpClient.download("http://builder.clockworkmod.com", new StringCallback() {
- @Override
- public void onCompleted(Exception e, AsyncHttpResponse response, String result) {
- if (e != null) {
- e.printStackTrace();
+
+ new Thread() {
+ public void run() {
+ try {
+ for (int i = 0; i < 5; i++) {
+ AsyncHttpClient.download("http://builder.clockworkmod.com", new StringCallback() {
+ @Override
+ public void onCompleted(Exception e, AsyncHttpResponse response, String result) {
+ if (e != null) {
+ e.printStackTrace();
+ }
+ System.out.println(result);
+ }
+ });
+ Thread.sleep(5000);
}
- System.out.println(result);
}
- });
- Thread.sleep(5000);
- }
+ catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ };
+ }.start();
if (true)
return;