username@email.com
2025-04-27 15eb82df2d6ec539e9d4245bfe08d531e8eb6379
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.adobe.protocols.dict.util
{
    import com.adobe.net.proxies.RFC2817Socket;
    import flash.events.ProgressEvent;
 
    public class SocketHelper
        extends RFC2817Socket
    {
        private var terminator:String = "\r\n.\r\n";
        private var buffer:String;
        public static var COMPLETE_RESPONSE:String = "completeResponse";
 
        public function SocketHelper()
        {
            super();
            buffer = new String();
            addEventListener(ProgressEvent.SOCKET_DATA, incomingData);
        }
 
        private function incomingData(event:ProgressEvent):void
        {
            buffer += readUTFBytes(bytesAvailable);
            buffer = buffer.replace(/250[^\r\n]+\r\n/, ""); // Get rid of all 250s. Don't need them.
            var codeStr:String = buffer.substring(0, 3);
            if (!isNaN(parseInt(codeStr)))
            {
                var code:uint = uint(codeStr);
                if (code == 150 || code >= 200)
                {
                    buffer = buffer.replace("\r\n", this.terminator);
                }
            }
 
            while (buffer.indexOf(this.terminator) != -1)
            {
                var chunk:String = buffer.substring(0, buffer.indexOf(this.terminator));
                buffer = buffer.substring(chunk.length + this.terminator.length, buffer.length);
                throwResponseEvent(chunk);
            }
        }
        
        private function throwResponseEvent(response:String):void
        {
            var responseEvent:CompleteResponseEvent = new CompleteResponseEvent();
            responseEvent.response = response;
            dispatchEvent(responseEvent);            
        }
    }
}