64 lines
1.3 KiB
Haxe
Executable File
64 lines
1.3 KiB
Haxe
Executable File
package com.abit.haxework.net;
|
|
|
|
import com.abit.haxework.net.callback.Callback;
|
|
import com.abit.haxework.net.callback.ICallback;
|
|
import flash.events.Event;
|
|
import com.abit.haxework.net.ILoader.Method;
|
|
|
|
class BaseLoader<T> implements ILoader<T> {
|
|
|
|
private var busy:Bool;
|
|
private var url:String;
|
|
private var callback:ICallback<T>;
|
|
|
|
public function new() {
|
|
busy = false;
|
|
}
|
|
|
|
public function request(url:String, method:Method):ICallback<T> {
|
|
if (busy) throw "Busy";
|
|
busy = true;
|
|
this.url = url;
|
|
callback = new Callback<T>();
|
|
internalRequest();
|
|
return callback;
|
|
}
|
|
|
|
public function GET(url:String):ICallback<T> {
|
|
return request(url, Method.GET);
|
|
}
|
|
|
|
private function internalRequest():Void {
|
|
throw "Abstract";
|
|
}
|
|
|
|
private function onComplete(e:Event):Void {
|
|
var data:T = extrudeResult(e);
|
|
var c:ICallback<T> = callback;
|
|
dispose();
|
|
c.callSuccess(data);
|
|
}
|
|
|
|
private function onError(e:Event):Void {
|
|
var c:ICallback<T> = callback;
|
|
dispose();
|
|
c.callFail(e);
|
|
}
|
|
|
|
private function extrudeResult(e:Event):T {
|
|
throw "Abstract";
|
|
return null;
|
|
}
|
|
|
|
private function dispose():Void {
|
|
url = null;
|
|
callback = null;
|
|
busy = false;
|
|
}
|
|
|
|
public function cancel():Void {
|
|
dispose();
|
|
}
|
|
}
|
|
|