public NpcSocketHandler(String clientString, INpcServerCallback callback, NpcExecutor npcExecutor, INpcHtmlGenerator npcHtmlGenerator)
            : base(clientString, callback, npcExecutor, npcHtmlGenerator)
        {
            if (callback == null)
            {
                throw new ArgumentNullException("callback");
            }

            this.lineParser = new LineParser(Encoding.ASCII, Buf.DefaultInitialCapacity, Buf.DefaultExpandLength);
        }
Exemple #2
0
        public void TestMethod()
        {
            Encoding   encoding   = Encoding.ASCII;
            LineParser lineParser = new LineParser(encoding, 3);

            lineParser.Add(encoding.GetBytes("abcd\n"));
            Assert.AreEqual("abcd", lineParser.GetLine());
            Assert.IsNull(lineParser.GetLine());

            lineParser.Add(encoding.GetBytes("abcd\r\n"));
            Assert.AreEqual("abcd", lineParser.GetLine());
            Assert.IsNull(lineParser.GetLine());

            lineParser.Add(encoding.GetBytes("abcd\nefgh\r\n"));
            Assert.AreEqual("abcd", lineParser.GetLine());
            Assert.AreEqual("efgh", lineParser.GetLine());
            Assert.IsNull(lineParser.GetLine());

            lineParser.Add(encoding.GetBytes("abcd\r\nefghijkl"));
            Assert.AreEqual("abcd", lineParser.GetLine());
            Assert.IsNull(lineParser.GetLine());
            lineParser.Add(encoding.GetBytes("\n"));
            Assert.AreEqual("efghijkl", lineParser.GetLine());
            Assert.IsNull(lineParser.GetLine());

            lineParser.Add(encoding.GetBytes("abcd\n"));
            lineParser.Add(encoding.GetBytes("abcd\r\n"));
            lineParser.Add(encoding.GetBytes("abcd\n"));
            Assert.AreEqual("abcd", lineParser.GetLine());
            Assert.AreEqual("abcd", lineParser.GetLine());
            Assert.AreEqual("abcd", lineParser.GetLine());
            Assert.IsNull(lineParser.GetLine());

            lineParser.Add(encoding.GetBytes("a"));
            Assert.IsNull(lineParser.GetLine());
            lineParser.Add(encoding.GetBytes("bc"));
            Assert.IsNull(lineParser.GetLine());
            lineParser.Add(encoding.GetBytes("d"));
            Assert.IsNull(lineParser.GetLine());
            lineParser.Add(encoding.GetBytes("\r\ntu"));
            lineParser.Add(encoding.GetBytes("v"));
            Assert.AreEqual("abcd", lineParser.GetLine());
            Assert.IsNull(lineParser.GetLine());
            lineParser.Add(encoding.GetBytes("\r"));
            Assert.IsNull(lineParser.GetLine());
            lineParser.Add(encoding.GetBytes("\n"));
            Assert.AreEqual("tuv", lineParser.GetLine());
            Assert.IsNull(lineParser.GetLine());
        }
Exemple #3
0
        protected static Dictionary <IniSectionKeyPair, String> ParseIniStream(Stream stream, Encoding encoding, UInt32 readBufferSize, out HashSet <String> sections)
        {
            sections = new HashSet <String>();
            Dictionary <IniSectionKeyPair, String> keyPairs = new Dictionary <IniSectionKeyPair, String>();
            String currentSection = null;

            LineParser lineParser = new LineParser(encoding, readBufferSize);

            byte[] readBuffer = new Byte[readBufferSize];

            while (true)
            {
                Int32 bytesRead = stream.Read(readBuffer, 0, readBuffer.Length);
                if (bytesRead <= 0)
                {
                    break;
                }

                lineParser.Add(readBuffer, 0, (UInt32)bytesRead);

                String line;
                while ((line = lineParser.GetLine()) != null)
                {
                    line = line.Trim();
                    if (line.Length > 0)
                    {
                        //String lineUpperCase = line.ToUpper();

                        if (line.StartsWith("[") && line.EndsWith("]"))
                        {
                            currentSection = line.Substring(1, line.Length - 2).ToUpper();
                            sections.Add(currentSection);
                        }
                        else
                        {
                            String[] keyPair = line.Split(StringSplitByEquals, 2);
                            if (keyPair == null)
                            {
                                throw new InvalidOperationException(String.Format("String.Split byte '=' returned null of line '{0}'", line));
                            }

                            IniSectionKeyPair sectionPair;
                            sectionPair.section = currentSection;

                            String value;
                            if (keyPair.Length == 1)
                            {
                                sectionPair.key = keyPair[0].ToUpper();
                                value           = null;
                            }
                            else if (keyPair.Length == 2)
                            {
                                sectionPair.key = keyPair[0].ToUpper();
                                value           = keyPair[1];
                            }
                            else
                            {
                                throw new InvalidOperationException(String.Format(
                                                                        "Expected String.Split by '=' to return 1 or 2 for line '{0}' but it returned {1}", line, keyPair.Length));
                            }

                            keyPairs.Add(sectionPair, value);
                        }
                    }
                }
            }

            return(keyPairs);
        }
Exemple #4
0
 public SocketLineReader(Socket socket, Encoding encoding, UInt32 lineBufferInitialCapacity)
 {
     this.socket        = socket;
     this.lineParser    = new LineParser(encoding, lineBufferInitialCapacity);
     this.receiveBuffer = new Byte[512];
 }
Exemple #5
0
 public StreamLineReader(Encoding encoding, Stream stream, UInt32 lineBufferInitialCapacity)
 {
     this.stream        = stream;
     this.lineParser    = new LineParser(encoding, lineBufferInitialCapacity);
     this.receiveBuffer = new Byte[512];
 }