package com.koushikdutta.async.http.server;
import com.koushikdutta.async.DataEmitter;
import com.koushikdutta.async.DataSink;
import com.koushikdutta.async.NullDataCallback;
import com.koushikdutta.async.Util;
import com.koushikdutta.async.callback.CompletedCallback;
import com.koushikdutta.async.callback.DataCallback;
import com.koushikdutta.async.http.AsyncHttpRequest;
import com.koushikdutta.async.http.body.AsyncHttpRequestBody;
public class UnknownRequestBody implements AsyncHttpRequestBody<Void> {
public UnknownRequestBody(String contentType) {
mContentType = contentType;
}
int length = -1;
public UnknownRequestBody(DataEmitter emitter, String contentType, int length) {
mContentType = contentType;
this.emitter = emitter;
this.length = length;
}
@Override
public void write(final AsyncHttpRequest request, DataSink sink, final CompletedCallback completed) {
Util.pump(emitter, sink, completed);
if (emitter.isPaused())
emitter.resume();
}
private String mContentType;
@Override
public String getContentType() {
return mContentType;
}
@Override
public boolean readFullyOnRequest() {
return false;
}
@Override
public int length() {
return length;
}
@Override
public Void get() {
return null;
}
public void setCallbacks(DataCallback callback, CompletedCallback endCallback) {
emitter.setEndCallback(endCallback);
emitter.setDataCallback(callback);
}
DataEmitter emitter;
@Override
public void parse(DataEmitter emitter, CompletedCallback completed) {
this.emitter = emitter;
emitter.setEndCallback(completed);
emitter.setDataCallback(new NullDataCallback());
}
}