remove callback

This commit is contained in:
2015-07-17 23:53:19 +03:00
parent 047db87a25
commit c532dc6e9f
7 changed files with 18 additions and 144 deletions

View File

@@ -35,7 +35,7 @@ class MovieView extends View {
private function set_movieUrl(value:String):String {
movieUrl = value;
new SwfLoader().GET(movieUrl)
.success(function(data:MovieClip):Void {
.then(function(data:MovieClip):Void {
movie = data;
});
return movieUrl;

View File

@@ -1,6 +1,5 @@
package haxework.net;
import haxework.net.callback.ICallback;
import flash.system.Security;
import flash.utils.ByteArray;
import flash.display.LoaderInfo;
@@ -23,15 +22,11 @@ class ExternalImageLoader extends BaseMediaLoader<BitmapData> {
#end
internalLoader = new InternalLoader();
internalLoader.fromBytes(loader.contentLoaderInfo.bytes)
.success(function(data:BitmapData):Void {
var c:ICallback<BitmapData> = callback;
dispose();
c.callSuccess(data);
.then(function(data:BitmapData):Void {
resolve(data);
})
.fail(function(error:Dynamic):Void {
var c:ICallback<BitmapData> = callback;
dispose();
c.callFail(e);
.catchError(function(error:Dynamic):Void {
throwError(e);
});
return null;
#if flash} #end

View File

@@ -1,17 +0,0 @@
package haxework.net.callback;
@:deprecated("Use promhx.Deffered")
class AutoCallback {
public static function success<T>(?value:T):ICallback<T> {
var callback:ICallback<T> = new Callback<T>();
callback.callSuccessAsync(value);
return callback;
}
public static function fail<T>(error:Dynamic):ICallback<T> {
var callback:ICallback<T> = new Callback<T>();
callback.callFailAsync(error);
return callback;
}
}

View File

@@ -1,74 +0,0 @@
package haxework.net.callback;
import haxe.Timer;
@:deprecated("Use promhx.Deffered")
class Callback<T> implements ICallback<T> {
public static function build<T>():ICallback<T> {
return new Callback<T>();
}
private var _success:Null<T -> Void>;
private var _fail:Null<Dynamic -> Void>;
public function new() {}
public function success(f:T -> Void):ICallback<T> {
_success = f;
return this;
}
public function fail(f:Dynamic -> Void):ICallback<T> {
_fail = f;
return this;
}
public function any(f:Dynamic -> Void):ICallback<T> {
_success = f;
_fail = f;
return this;
}
public function callSuccess(data:T):Void {
try {
if (_success != null) _success(data);
} catch (error:Dynamic) {
callFail(error);
}
dispose();
}
public function callSuccessAsync(data:T):Void {
Timer.delay(function():Void {
callSuccess(data);
}, 1);
}
public function callFail(error:Dynamic):Void {
try {
if (_fail != null) _fail(error);
} catch (error:Dynamic) {
L.d("Callback", "", error);
}
dispose();
}
public function callFailAsync(error:Dynamic):Void {
Timer.delay(function():Void {
callFail(error);
}, 1);
}
public function glue(callback:ICallback<T>):ICallback<T> {
this._success = callback.callSuccess;
this._fail = callback.callFail;
//callback.dispose(); //ToDo:
return this;
}
public function dispose():Void {
_success = null;
_fail = null;
}
}

View File

@@ -1,16 +0,0 @@
package haxework.net.callback;
import haxework.core.IDisposable;
@:deprecated("Use promhx.Deffered")
interface ICallback<T> extends IDisposable {
public function success(f:T -> Void):ICallback<T>;
public function fail(f:Dynamic -> Void):ICallback<T>;
public function any(f:Dynamic -> Void):ICallback<T>;
public function callSuccess(data:T):Void;
public function callSuccessAsync(data:T):Void;
public function callFail(error:Dynamic):Void;
public function callFailAsync(error:Dynamic):Void;
public function glue(callback:ICallback<T>):ICallback<T>;
}

View File

@@ -1,17 +1,17 @@
package haxework.net.order;
import haxework.net.callback.ICallback;
import promhx.Deferred;
typedef Order<T> = {
var id:String;
var data:Null<T>;
var callbacks:Array<ICallback<T>>;
var deferred:Deferred<T>;
var clients:Int;
}
interface IOrderSupplier {
public var orders(default, null):Map<String, Order<Dynamic>>;
public function request<T>(url:String, clazz:Class<T>):ICallback<T>;
public function request<T>(url:String, clazz:Class<T>):Deferred<T>;
public function release(url:String, ?force:Bool = false):Void;
}

View File

@@ -1,12 +1,8 @@
package haxework.net.order;
import haxework.net.callback.AutoCallback;
import promhx.Deferred;
import haxework.net.order.IOrderSupplier.Order;
import haxework.storage.IStorage;
import haxework.provider.Provider;
import haxework.net.callback.Callback;
import flash.display.BitmapData;
import haxework.net.callback.ICallback;
class OrderSupplier implements IOrderSupplier {
@@ -18,43 +14,33 @@ class OrderSupplier implements IOrderSupplier {
orders = new Map<String, Order<Dynamic>>();
}
public function request<T>(url:String, clazz:Class<T>):ICallback<T> {
public function request<T>(url:String, clazz:Class<T>):Deferred<T> {
if (orders.exists(url)) {
var order:Order<T> = orders.get(url);
order.clients++;
//L.d(TAG, "Request(" + order.clients + "): " + url);
if (order.data == null) {
var callback:ICallback<T> = new Callback<T>();
order.callbacks.push(callback);
return callback;
} else {
return AutoCallback.success(order.data);
}
return cast orders.get(url).deferred;
} else {
var callback:ICallback<T> = new Callback<T>();
var deferred = new Deferred<T>();
var order:Order<T> = {
id:url,
data:null,
callbacks:[callback],
deferred:deferred,
clients:1
}
//L.d(TAG, "Request(" + order.clients + "): " + url);
orders.set(url, order);
var loader:ILoader<T> = buildLoader(clazz);
loader.GET(url)
.success(function(data:T):Void {
.then(function(data:T):Void {
if (orders.exists(url)) {
var order:Order<T> = orders.get(url);
order.data = data;
for (callback in order.callbacks) callback.callSuccess(data);
order.callbacks = [];
order.deferred.resolve(data);
}
})
.fail(function(error:Dynamic):Void {
if (orders.exists(url)) for (callback in orders.get(url).callbacks) callback.callFail(error);
.catchError(function(error:Dynamic):Void {
if (orders.exists(url)) orders.get(url).deferred.throwError(error);
orders.remove(url);
});
return callback;
return deferred;
}
}