annotate bindings/as3/ext/com/adobe/protocols/dict/util/SocketHelper.as @ 770:c54bc2ffbf92 tip

update tags
author convert-repo
date Fri, 16 Dec 2011 11:34:01 +0000
parents 3a0b9700b3d2
children
rev   line source
mas01mj@732 1 /*
mas01mj@732 2 Copyright (c) 2009, Adobe Systems Incorporated
mas01mj@732 3 All rights reserved.
mas01mj@732 4
mas01mj@732 5 Redistribution and use in source and binary forms, with or without
mas01mj@732 6 modification, are permitted provided that the following conditions are
mas01mj@732 7 met:
mas01mj@732 8
mas01mj@732 9 * Redistributions of source code must retain the above copyright notice,
mas01mj@732 10 this list of conditions and the following disclaimer.
mas01mj@732 11
mas01mj@732 12 * Redistributions in binary form must reproduce the above copyright
mas01mj@732 13 notice, this list of conditions and the following disclaimer in the
mas01mj@732 14 documentation and/or other materials provided with the distribution.
mas01mj@732 15
mas01mj@732 16 * Neither the name of Adobe Systems Incorporated nor the names of its
mas01mj@732 17 contributors may be used to endorse or promote products derived from
mas01mj@732 18 this software without specific prior written permission.
mas01mj@732 19
mas01mj@732 20 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
mas01mj@732 21 IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
mas01mj@732 22 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
mas01mj@732 23 PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
mas01mj@732 24 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
mas01mj@732 25 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
mas01mj@732 26 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
mas01mj@732 27 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
mas01mj@732 28 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
mas01mj@732 29 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
mas01mj@732 30 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mas01mj@732 31 */
mas01mj@732 32
mas01mj@732 33 package com.adobe.protocols.dict.util
mas01mj@732 34 {
mas01mj@732 35 import com.adobe.net.proxies.RFC2817Socket;
mas01mj@732 36 import flash.events.ProgressEvent;
mas01mj@732 37
mas01mj@732 38 public class SocketHelper
mas01mj@732 39 extends RFC2817Socket
mas01mj@732 40 {
mas01mj@732 41 private var terminator:String = "\r\n.\r\n";
mas01mj@732 42 private var buffer:String;
mas01mj@732 43 public static var COMPLETE_RESPONSE:String = "completeResponse";
mas01mj@732 44
mas01mj@732 45 public function SocketHelper()
mas01mj@732 46 {
mas01mj@732 47 super();
mas01mj@732 48 buffer = new String();
mas01mj@732 49 addEventListener(ProgressEvent.SOCKET_DATA, incomingData);
mas01mj@732 50 }
mas01mj@732 51
mas01mj@732 52 private function incomingData(event:ProgressEvent):void
mas01mj@732 53 {
mas01mj@732 54 buffer += readUTFBytes(bytesAvailable);
mas01mj@732 55 buffer = buffer.replace(/250[^\r\n]+\r\n/, ""); // Get rid of all 250s. Don't need them.
mas01mj@732 56 var codeStr:String = buffer.substring(0, 3);
mas01mj@732 57 if (!isNaN(parseInt(codeStr)))
mas01mj@732 58 {
mas01mj@732 59 var code:uint = uint(codeStr);
mas01mj@732 60 if (code == 150 || code >= 200)
mas01mj@732 61 {
mas01mj@732 62 buffer = buffer.replace("\r\n", this.terminator);
mas01mj@732 63 }
mas01mj@732 64 }
mas01mj@732 65
mas01mj@732 66 while (buffer.indexOf(this.terminator) != -1)
mas01mj@732 67 {
mas01mj@732 68 var chunk:String = buffer.substring(0, buffer.indexOf(this.terminator));
mas01mj@732 69 buffer = buffer.substring(chunk.length + this.terminator.length, buffer.length);
mas01mj@732 70 throwResponseEvent(chunk);
mas01mj@732 71 }
mas01mj@732 72 }
mas01mj@732 73
mas01mj@732 74 private function throwResponseEvent(response:String):void
mas01mj@732 75 {
mas01mj@732 76 var responseEvent:CompleteResponseEvent = new CompleteResponseEvent(CompleteResponseEvent.COMPLETE_RESPONSE);
mas01mj@732 77 responseEvent.response = response;
mas01mj@732 78 dispatchEvent(responseEvent);
mas01mj@732 79 }
mas01mj@732 80 }
mas01mj@732 81 }