package in.srain.cube.request;
public abstract class RequestBase<T> implements IRequest<T> {
private RequestData mRequestData = new RequestData();
private boolean mHasBeenCanceled = false;
public RequestData getRequestData() {
return mRequestData;
}
@Override
public void send() {
prepareRequest();
doSendRequest();
}
@Override
public void cancelRequest() {
mHasBeenCanceled = true;
onCancel();
}
@Override
public T onDataFromServer(String data) {
JsonData jsonData = JsonData.create(data);
return processOriginDataFromServer(jsonData);
}
protected boolean hasBeenCanceled() {
return mHasBeenCanceled;
}
protected void onCancel() {
}
/**
* implement this method to process request data
*/
protected abstract void doSendRequest();
/**
* prepare request
*/
protected abstract void prepareRequest();
}