Example #1
0
        public void RandomInsertTest()
        {
            IOBuffer iobuf = new IOBuffer();
            Random   rnd   = new Random(625232);

            byte[] buf = new byte[100];
            for (int i = 0; i < buf.Length; i++)
            {
                buf[i] = (byte)i;
            }
            for (int i = 0; i < 500; i++)
            {
                int ll = rnd.Next(0, 100);
                iobuf.Write(buf.Take(ll));
            }

            rnd = new Random(625232);
            for (int i = 0; i < 500; i++)
            {
                int ll   = rnd.Next(0, 100);
                var buf2 = iobuf.Read(ll);
                for (int i2 = 0; i2 < buf2.Length; i2++)
                {
                    Assert.AreEqual(i2, buf2[i2]);
                }
                iobuf.Compress();
            }

            Assert.AreEqual(0, iobuf.Length);
        }
Example #2
0
        public void Run(Socket s_svc)
        {
            connected = true;
            OnStateChanged("CONNECTED");
            byte[]   buffer = new byte[65536];  // maximum UDP message size
            IOBuffer inbuf  = new IOBuffer();

            try {
                while (running)
                {
                    int rlen = s_svc.Receive(buffer, 0, buffer.Length, SocketFlags.None, out SocketError error);
                    if (error == SocketError.TimedOut)
                    {
                        continue;
                    }
                    if (error == SocketError.Success)
                    {
                        inbuf.Write(buffer, rlen);
                        while (running)
                        {
                            var msg = Message.Receive(inbuf);
                            if (msg == null)
                            {
                                break;
                            }
                            var omsg = msg as OrchestrationMessage;
                            if (omsg != null)
                            {
                                MessageReceived?.Invoke(omsg.Body, omsg.Options);
                            }
                        }
                        inbuf.Compress();
                    }
                }
            } finally {
                connected = false;
                running   = false;
                OnStateChanged("ERROR");
            }
        }