--- /dev/null
+package com.adobe.protocols.dict.util\r
+{\r
+ import com.adobe.net.proxies.RFC2817Socket;\r
+ import flash.events.ProgressEvent;\r
+\r
+ public class SocketHelper\r
+ extends RFC2817Socket\r
+ {\r
+ private var terminator:String = "\r\n.\r\n";\r
+ private var buffer:String;\r
+ public static var COMPLETE_RESPONSE:String = "completeResponse";\r
+\r
+ public function SocketHelper()\r
+ {\r
+ super();\r
+ buffer = new String();\r
+ addEventListener(ProgressEvent.SOCKET_DATA, incomingData);\r
+ }\r
+\r
+ private function incomingData(event:ProgressEvent):void\r
+ {\r
+ buffer += readUTFBytes(bytesAvailable);\r
+ buffer = buffer.replace(/250[^\r\n]+\r\n/, ""); // Get rid of all 250s. Don't need them.\r
+ var codeStr:String = buffer.substring(0, 3);\r
+ if (!isNaN(parseInt(codeStr)))\r
+ {\r
+ var code:uint = uint(codeStr);\r
+ if (code == 150 || code >= 200)\r
+ {\r
+ buffer = buffer.replace("\r\n", this.terminator);\r
+ }\r
+ }\r
+\r
+ while (buffer.indexOf(this.terminator) != -1)\r
+ {\r
+ var chunk:String = buffer.substring(0, buffer.indexOf(this.terminator));\r
+ buffer = buffer.substring(chunk.length + this.terminator.length, buffer.length);\r
+ throwResponseEvent(chunk);\r
+ }\r
+ }\r
+ \r
+ private function throwResponseEvent(response:String):void\r
+ {\r
+ var responseEvent:CompleteResponseEvent = new CompleteResponseEvent();\r
+ responseEvent.response = response;\r
+ dispatchEvent(responseEvent); \r
+ }\r
+ }\r
+}
\ No newline at end of file