File: /home/mmickelson/theflexguy.com/tools/QingHttpService/srcview/source/QingHttpService.mxml.html
<!-- saved from url=(0014)about:internet -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>QingHttpService.mxml</title>
<link rel="stylesheet" type="text/css" href="../SourceStyles.css"/>
</head>
<body><pre><span class="MXMLProcessing_Instruction"><?xml version="1.0" encoding="utf-8"?></span>
<span class="MXMLComponent_Tag"><mx:Canvas</span><span class="MXMLDefault_Text"> xmlns:mx="</span><span class="MXMLString">http://www.adobe.com/2006/mxml</span><span class="MXMLDefault_Text">" creationComplete="</span><span class="ActionScriptDefault_Text">init</span><span class="ActionScriptBracket/Brace">()</span>;<span class="MXMLDefault_Text">"</span><span class="MXMLComponent_Tag">></span>
<span class="MXMLSpecial_Tag"><mx:Script></span>
<span class="ActionScriptOperator"><!</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">CDATA</span><span class="ActionScriptBracket/Brace">[</span>
<span class="ActionScriptComment">/*------------------------------------------------------------------
| **** QingHttpService ****
| Created By: Marty Mickelson
|
|
------------------------------------------------------------------*/</span>
<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">mx</span>.<span class="ActionScriptDefault_Text">events</span>.<span class="ActionScriptDefault_Text">CollectionEvent</span>;
<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">mx</span>.<span class="ActionScriptDefault_Text">events</span>.<span class="ActionScriptDefault_Text">CollectionEventKind</span>;
<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">mx</span>.<span class="ActionScriptDefault_Text">collections</span>.<span class="ActionScriptDefault_Text">ArrayCollection</span>;
<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">mx</span>.<span class="ActionScriptDefault_Text">rpc</span>.<span class="ActionScriptDefault_Text">http</span>.<span class="ActionScriptDefault_Text">mxml</span>.<span class="ActionScriptDefault_Text">HTTPService</span>;
<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">mx</span>.<span class="ActionScriptDefault_Text">rpc</span>.<span class="ActionScriptDefault_Text">events</span>.<span class="ActionScriptDefault_Text">ResultEvent</span>;
<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">mx</span>.<span class="ActionScriptDefault_Text">rpc</span>.<span class="ActionScriptDefault_Text">AsyncToken</span>;
<span class="ActionScriptComment">// this is how many services to allow at once
</span> <span class="ActionScriptComment">// NOTE: Theoretically, more doesn't mean faster. HTTP 1.1 spec suggests only
</span> <span class="ActionScriptComment">// 2 concurrent connections to a server, IE limits to 2, Firefox to 6
</span> <span class="ActionScriptComment">// but however many svcs are instantiated, they will all use the same
</span> <span class="ActionScriptComment">// browser connection, limiting it.
</span> <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">qty</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 80;
<span class="ActionScriptComment">// this is the array of httpServices
</span> <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">svc</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">ArrayCollection</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">ArrayCollection</span><span class="ActionScriptBracket/Brace">()</span>;
<span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">dispatchQ</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">ArrayCollection</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">ArrayCollection</span><span class="ActionScriptBracket/Brace">()</span>;
<span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptMetadata">Bindable</span><span class="ActionScriptBracket/Brace">]</span>
<span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_numInQ</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 0;
<span class="ActionScriptComment">// this is the public interface. Pass in the url and the result handler function
</span> <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">call</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">String</span>, <span class="ActionScriptDefault_Text">callback</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Function</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">null</span>, <span class="ActionScriptDefault_Text">asyncTokenObj</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Object</span><span class="ActionScriptOperator">=</span><span class="ActionScriptReserved">null</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScriptDefault_Text">qlbl</span>.<span class="ActionScriptDefault_Text">text</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">String</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">++</span><span class="ActionScriptDefault_Text">_numInQ</span><span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptDefault_Text">dispatchQ</span>.<span class="ActionScriptDefault_Text">addItem</span><span class="ActionScriptBracket/Brace">({</span><span class="ActionScriptDefault_Text">url</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">value</span>, <span class="ActionScriptDefault_Text">callback</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">callback</span>, <span class="ActionScriptDefault_Text">asyncTokenObj</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">asyncTokenObj</span><span class="ActionScriptBracket/Brace">})</span>;
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">init</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScriptReserved">for</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span><span class="ActionScriptOperator">=</span>0; <span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator"><</span><span class="ActionScriptDefault_Text">qty</span>; <span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">++</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">temp</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">HTTPService</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">HTTPService</span><span class="ActionScriptBracket/Brace">()</span>;
<span class="ActionScriptDefault_Text">temp</span>.<span class="ActionScriptDefault_Text">contentType</span><span class="ActionScriptOperator">=</span><span class="ActionScriptString">"application/x-www-form-urlencoded"</span>;
<span class="ActionScriptDefault_Text">temp</span>.<span class="ActionScriptDefault_Text">method</span><span class="ActionScriptOperator">=</span><span class="ActionScriptString">"POST"</span>;
<span class="ActionScriptDefault_Text">temp</span>.<span class="ActionScriptDefault_Text">resultFormat</span><span class="ActionScriptOperator">=</span><span class="ActionScriptString">"text"</span>;
<span class="ActionScriptDefault_Text">temp</span>.<span class="ActionScriptDefault_Text">showBusyCursor</span><span class="ActionScriptOperator">=</span><span class="ActionScriptReserved">false</span>;
<span class="ActionScriptDefault_Text">temp</span>.<span class="ActionScriptDefault_Text">useProxy</span><span class="ActionScriptOperator">=</span><span class="ActionScriptReserved">false</span>;
<span class="ActionScriptDefault_Text">svc</span>.<span class="ActionScriptDefault_Text">addItem</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">temp</span><span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptDefault_Text">dispatchQ</span>.<span class="ActionScriptDefault_Text">addEventListener</span><span class="ActionScriptBracket/Brace">(C</span><span class="ActionScriptDefault_Text">ollectionEvent</span>.<span class="ActionScriptDefault_Text">COLLECTION_CHANGE</span>, <span class="ActionScriptDefault_Text">qChangeHandler</span><span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptComment">// watches for changes to the dispatchQ
</span> <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">qChangeHandler</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">event</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">CollectionEvent</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">event</span>.<span class="ActionScriptDefault_Text">kind</span> <span class="ActionScriptOperator">==</span> <span class="ActionScriptDefault_Text">CollectionEventKind</span>.<span class="ActionScriptDefault_Text">ADD</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScriptDefault_Text">makeCall</span><span class="ActionScriptBracket/Brace">()</span>;
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptReserved">else</span> <span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">event</span>.<span class="ActionScriptDefault_Text">kind</span> <span class="ActionScriptOperator">==</span> <span class="ActionScriptDefault_Text">CollectionEventKind</span>.<span class="ActionScriptDefault_Text">REMOVE</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptComment">// this is the function that returns the index of the available service
</span> <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">availableSvc</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">id</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptOperator">-</span>1;
<span class="ActionScriptReserved">for</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span><span class="ActionScriptOperator">=</span>0; <span class="ActionScriptDefault_Text">i</span> <span class="ActionScriptOperator"><</span> <span class="ActionScriptDefault_Text">svc</span>.<span class="ActionScriptDefault_Text">length</span>; <span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">++</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScriptComment">// the willTrigger method of an httpService will return true if
</span> <span class="ActionScriptComment">// it has an event listener for the event passed in which means
</span> <span class="ActionScriptComment">// it's still in use (we haven't removed the event listener yet)
</span> <span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">svc</span>.<span class="ActionScriptDefault_Text">getItemAt</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">i</span><span class="ActionScriptBracket/Brace">)</span>.<span class="ActionScriptDefault_Text">willTrigger</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">mx</span>.<span class="ActionScriptDefault_Text">rpc</span>.<span class="ActionScriptDefault_Text">events</span>.<span class="ActionScriptDefault_Text">ResultEvent</span>.<span class="ActionScriptDefault_Text">RESULT</span><span class="ActionScriptBracket/Brace">))</span> <span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScripttrace">trace</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">"svc["</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">i</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptString">"] is unavailable so id="</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">id</span><span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptReserved">else</span> <span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScriptDefault_Text">id</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">i</span>;
<span class="ActionScripttrace">trace</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">"svc["</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">id</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptString">"] is available"</span><span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptReserved">break</span>;
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptComment">// if an available service was found, id is set to it's index,
</span> <span class="ActionScriptComment">// otherwise it returns -1
</span> <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">id</span>;
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptComment">// This function prevents IE from caching the results of previous calls
</span> <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">uniqueString</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">str</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">Math</span>.<span class="ActionScriptDefault_Text">random</span><span class="ActionScriptBracket/Brace">()</span>.<span class="ActionScriptDefault_Text">toString</span><span class="ActionScriptBracket/Brace">()</span>;
<span class="ActionScriptDefault_Text">str</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptString">"&NOCACHE="</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Date</span><span class="ActionScriptBracket/Brace">()</span>.<span class="ActionScriptDefault_Text">time</span>.<span class="ActionScriptDefault_Text">toString</span><span class="ActionScriptBracket/Brace">()</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">str</span>.<span class="ActionScriptDefault_Text">substr</span><span class="ActionScriptBracket/Brace">(</span>2,8<span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptComment">//trace(str);
</span> <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">str</span>;
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptComment">// Attempts to make a call to a server, if there are no services available,
</span> <span class="ActionScriptComment">// it trys again later (at the next screen refresh)
</span> <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">makeCall</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">svcId</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">availableSvc</span><span class="ActionScriptBracket/Brace">()</span>;
<span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">svcId</span> <span class="ActionScriptOperator">==</span> <span class="ActionScriptOperator">-</span>1<span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScripttrace">trace</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">"no services available, calling later..."</span><span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptDefault_Text">callLater</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">makeCall</span><span class="ActionScriptBracket/Brace">)</span>; <span class="ActionScriptComment">// waits until the next screen refresh to check again
</span> <span class="ActionScriptReserved">return</span>;
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">dispatchQ</span>.<span class="ActionScriptDefault_Text">getItemAt</span><span class="ActionScriptBracket/Brace">(</span>0<span class="ActionScriptBracket/Brace">)</span>.<span class="ActionScriptDefault_Text">callback</span> <span class="ActionScriptOperator">!=</span> <span class="ActionScriptReserved">null</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScriptDefault_Text">svc</span>.<span class="ActionScriptDefault_Text">getItemAt</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">svcId</span><span class="ActionScriptBracket/Brace">)</span>.<span class="ActionScriptDefault_Text">addEventListener</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">ResultEvent</span>.<span class="ActionScriptDefault_Text">RESULT</span>, <span class="ActionScriptDefault_Text">dispatchQ</span>.<span class="ActionScriptDefault_Text">getItemAt</span><span class="ActionScriptBracket/Brace">(</span>0<span class="ActionScriptBracket/Brace">)</span>.<span class="ActionScriptDefault_Text">callback</span><span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">dispatchQ</span>.<span class="ActionScriptDefault_Text">getItemAt</span><span class="ActionScriptBracket/Brace">(</span>0<span class="ActionScriptBracket/Brace">)</span>.<span class="ActionScriptDefault_Text">asyncTokenObj</span> <span class="ActionScriptOperator">!=</span> <span class="ActionScriptReserved">null</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">asyncTokenObj</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Object</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">dispatchQ</span>.<span class="ActionScriptDefault_Text">getItemAt</span><span class="ActionScriptBracket/Brace">(</span>0<span class="ActionScriptBracket/Brace">)</span>.<span class="ActionScriptDefault_Text">asyncTokenObj</span>;
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptDefault_Text">svc</span>.<span class="ActionScriptDefault_Text">getItemAt</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">svcId</span><span class="ActionScriptBracket/Brace">)</span>.<span class="ActionScriptDefault_Text">addEventListener</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">ResultEvent</span>.<span class="ActionScriptDefault_Text">RESULT</span>, <span class="ActionScriptDefault_Text">myResultHandler</span><span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptDefault_Text">svc</span>.<span class="ActionScriptDefault_Text">getItemAt</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">svcId</span><span class="ActionScriptBracket/Brace">)</span>.<span class="ActionScriptDefault_Text">url</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">dispatchQ</span>.<span class="ActionScriptDefault_Text">removeItemAt</span><span class="ActionScriptBracket/Brace">(</span>0<span class="ActionScriptBracket/Brace">)</span>.<span class="ActionScriptDefault_Text">url</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">uniqueString</span><span class="ActionScriptBracket/Brace">()</span>;
<span class="ActionScriptComment">// use the AsyncToken of the service call to identify it when it returns
</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">svcToken</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">AsyncToken</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">svc</span>.<span class="ActionScriptDefault_Text">getItemAt</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">svcId</span><span class="ActionScriptBracket/Brace">)</span>.<span class="ActionScriptDefault_Text">send</span><span class="ActionScriptBracket/Brace">()</span>;
<span class="ActionScriptDefault_Text">svcToken</span>.<span class="ActionScriptDefault_Text">svcId</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">svcId</span>;
<span class="ActionScriptDefault_Text">svcToken</span>.<span class="ActionScriptDefault_Text">asyncTokenObj</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">asyncTokenObj</span>;
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">myResultHandler</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">event</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">ResultEvent</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span> <span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScriptDefault_Text">_numInQ</span><span class="ActionScriptOperator">--</span>;
<span class="ActionScriptComment">// get the token from the service call to identify which one it is
</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">svcToken</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">AsyncToken</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">event</span>.<span class="ActionScriptDefault_Text">token</span>;
<span class="ActionScriptComment">// remove the event listener so the willTrigger method will return false
</span> <span class="ActionScriptComment">//svc.getItemAt(svcToken.svcId)
</span> <span class="ActionScriptDefault_Text">event</span>.<span class="ActionScriptDefault_Text">target</span>.<span class="ActionScriptDefault_Text">removeEventListener</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">ResultEvent</span>.<span class="ActionScriptDefault_Text">RESULT</span>, <span class="ActionScriptDefault_Text">myResultHandler</span><span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScripttrace">trace</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">"svc["</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">svcToken</span>.<span class="ActionScriptDefault_Text">svcId</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptString">"] returned"</span><span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_numInQ</span> <span class="ActionScriptOperator">==</span> 0<span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScripttrace">trace</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">"numInQ is now 0"</span><span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptDefault_Text">dispatchEvent</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Event</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">Event</span>.<span class="ActionScriptDefault_Text">COMPLETE</span><span class="ActionScriptBracket/Brace">))</span>;
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptBracket/Brace">]]</span><span class="ActionScriptOperator">></span>
<span class="MXMLSpecial_Tag"></mx:Script></span>
<span class="MXMLComponent_Tag"><mx:Label</span><span class="MXMLDefault_Text"> id="</span><span class="MXMLString">qlbl</span><span class="MXMLDefault_Text">" text="</span><span class="MXMLString">{</span><span class="ActionScriptDefault_Text">_numInQ</span>.<span class="ActionScriptDefault_Text">toString</span><span class="ActionScriptBracket/Brace">()</span><span class="MXMLString">}</span><span class="MXMLDefault_Text">" horizontalCenter="</span><span class="MXMLString">0</span><span class="MXMLDefault_Text">" verticalCenter="</span><span class="MXMLString">1</span><span class="MXMLDefault_Text">"
textAlign="</span><span class="MXMLString">center</span><span class="MXMLDefault_Text">" fontSize="</span><span class="MXMLString">14</span><span class="MXMLDefault_Text">" fontWeight="</span><span class="MXMLString">bold</span><span class="MXMLDefault_Text">" fontFamily="</span><span class="MXMLString">Arial</span><span class="MXMLDefault_Text">"</span><span class="MXMLComponent_Tag">/></span>
<span class="MXMLComponent_Tag"></mx:Canvas></span></pre></body>
</html>