home *** CD-ROM | disk | FTP | other *** search
/ Computer Active 2010 August / CA08.iso / Multimedija / shufflr.air / ShufflrClient.swf / scripts / mx / rpc / AsyncRequest.as < prev    next >
Encoding:
Text File  |  2010-06-23  |  2.1 KB  |  70 lines

  1. package mx.rpc
  2. {
  3.    import mx.core.mx_internal;
  4.    import mx.messaging.Producer;
  5.    import mx.messaging.events.MessageEvent;
  6.    import mx.messaging.events.MessageFaultEvent;
  7.    import mx.messaging.messages.AcknowledgeMessage;
  8.    import mx.messaging.messages.ErrorMessage;
  9.    import mx.messaging.messages.IMessage;
  10.    
  11.    use namespace mx_internal;
  12.    
  13.    public class AsyncRequest extends Producer
  14.    {
  15.       private var _pendingRequests:Object = {};
  16.       
  17.       public function AsyncRequest()
  18.       {
  19.          super();
  20.       }
  21.       
  22.       override public function hasPendingRequestForMessage(param1:IMessage) : Boolean
  23.       {
  24.          var _loc2_:String = param1.messageId;
  25.          return _pendingRequests[_loc2_];
  26.       }
  27.       
  28.       override public function fault(param1:ErrorMessage, param2:IMessage) : void
  29.       {
  30.          super.fault(param1,param2);
  31.          if(_ignoreFault)
  32.          {
  33.             return;
  34.          }
  35.          var _loc3_:String = param2.messageId;
  36.          var _loc4_:IResponder = IResponder(_pendingRequests[_loc3_]);
  37.          if(_loc4_)
  38.          {
  39.             delete _pendingRequests[_loc3_];
  40.             _loc4_.fault(MessageFaultEvent.createEvent(param1));
  41.          }
  42.       }
  43.       
  44.       public function invoke(param1:IMessage, param2:IResponder) : void
  45.       {
  46.          _pendingRequests[param1.messageId] = param2;
  47.          send(param1);
  48.       }
  49.       
  50.       override public function acknowledge(param1:AcknowledgeMessage, param2:IMessage) : void
  51.       {
  52.          var _loc4_:String = null;
  53.          var _loc5_:IResponder = null;
  54.          var _loc3_:Boolean = Boolean(param1.headers[AcknowledgeMessage.ERROR_HINT_HEADER]);
  55.          super.acknowledge(param1,param2);
  56.          if(!_loc3_)
  57.          {
  58.             _loc4_ = param1.correlationId;
  59.             _loc5_ = IResponder(_pendingRequests[_loc4_]);
  60.             if(_loc5_)
  61.             {
  62.                delete _pendingRequests[_loc4_];
  63.                _loc5_.result(MessageEvent.createEvent(MessageEvent.RESULT,param1));
  64.             }
  65.          }
  66.       }
  67.    }
  68. }
  69.  
  70.