Skip to content

Instantly share code, notes, and snippets.

@jayproulx
Created January 31, 2011 19:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jayproulx/804610 to your computer and use it in GitHub Desktop.
Save jayproulx/804610 to your computer and use it in GitHub Desktop.
Signals don't like the ... rest operator.
package com.pollensoft.pbt.twitter
{
import mx.core.mx_internal;
import mx.messaging.messages.IMessage;
import mx.rpc.AsyncToken;
use namespace mx_internal;
import org.osflash.signals.Signal;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.Fault;
public class SignalAsyncToken extends AsyncToken
{
public var responseSignal:Signal;
public var faultSignal:Signal;
public var responseIndex:int;
public var faultCodeIndex:int;
public var faultStringIndex:int;
public var faultDetailIndex:int;
public function SignalAsyncToken(message:IMessage=null, responseSignal:Signal=null, responseIndex:int=-1, faultSignal:Signal=null, faultCodeIndex:int=-1, faultStringIndex:int=-1, faultDetailIndex:int=-1)
{
super(message);
this.responseSignal = responseSignal;
this.responseIndex = responseIndex;
this.faultSignal = faultSignal;
this.faultCodeIndex = faultCodeIndex;
this.faultStringIndex = faultStringIndex;
this.faultDetailIndex = faultDetailIndex;
responseSignal.addOnce( responseHandler );
faultSignal.addOnce( faultHandler );
}
private function responseHandler( ... signalArgs ):void
{
var data:* = responseIndex >= 0 ? signalArgs[responseIndex] : null;
var event:ResultEvent = ResultEvent.createEvent( data, this );
mx_internal::applyResult(event);
}
private function faultHandler( ... signalArgs ):void
{
var faultCode:String = faultCodeIndex >= 0 ? signalArgs[faultCodeIndex] : "";
var faultString:String = faultStringIndex >= 0 ? signalArgs[faultStringIndex] : "";
var faultDetail:String = faultDetailIndex >= 0 ? signalArgs[faultDetailIndex] : "";
var event:FaultEvent = FaultEvent.createEvent(new Fault(faultCode, faultString, faultDetail), this);
mx_internal::applyFault( event );
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment