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); }
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"); } }