aboutsummaryrefslogtreecommitdiffstats
path: root/AndroidAsync/src/com/koushikdutta/async/BufferedDataSink.java
diff options
context:
space:
mode:
Diffstat (limited to 'AndroidAsync/src/com/koushikdutta/async/BufferedDataSink.java')
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/BufferedDataSink.java40
1 files changed, 25 insertions, 15 deletions
diff --git a/AndroidAsync/src/com/koushikdutta/async/BufferedDataSink.java b/AndroidAsync/src/com/koushikdutta/async/BufferedDataSink.java
index 8daa836..3c074c5 100644
--- a/AndroidAsync/src/com/koushikdutta/async/BufferedDataSink.java
+++ b/AndroidAsync/src/com/koushikdutta/async/BufferedDataSink.java
@@ -49,18 +49,23 @@ public class BufferedDataSink implements DataSink {
write(bb, false);
}
- protected void write(ByteBufferList bb, boolean ignoreBuffer) {
- if (!mPendingWrites.hasRemaining())
- mDataSink.write(bb);
+ protected void write(final ByteBufferList bb, final boolean ignoreBuffer) {
+ getServer().run(new Runnable() {
+ @Override
+ public void run() {
+ if (!mPendingWrites.hasRemaining())
+ mDataSink.write(bb);
- if (bb.remaining() > 0) {
- int toRead = Math.min(bb.remaining(), mMaxBuffer);
- if (ignoreBuffer)
- toRead = bb.remaining();
- if (toRead > 0) {
- bb.get(mPendingWrites, toRead);
+ if (bb.remaining() > 0) {
+ int toRead = Math.min(bb.remaining(), mMaxBuffer);
+ if (ignoreBuffer)
+ toRead = bb.remaining();
+ if (toRead > 0) {
+ bb.get(mPendingWrites, toRead);
+ }
+ }
}
- }
+ });
}
WritableCallback mWritable;
@@ -96,11 +101,16 @@ public class BufferedDataSink implements DataSink {
boolean endPending;
@Override
public void end() {
- if (mPendingWrites.hasRemaining()) {
- endPending = true;
- return;
- }
- mDataSink.end();
+ getServer().run(new Runnable() {
+ @Override
+ public void run() {
+ if (mPendingWrites.hasRemaining()) {
+ endPending = true;
+ return;
+ }
+ mDataSink.end();
+ }
+ });
}
@Override