public void Send(IMessagePart message, bool correctLength) { List <IOVector> vecs = new List <IOVector> (); int length = 0; //vecs.AddRange (message); foreach (IOVector v in message) { vecs.Add(v); length += v.Length; } IOVector[] iovec = vecs.ToArray(); Trace.WriteLine("Vectors: " + iovec.Length + " Length: " + length); if (length % 4 != 0) { Trace.WriteLine("Error: % 4"); } ushort nBlocks = (ushort)(length / 4); Trace.WriteLine("nBlocks: " + nBlocks); if (correctLength) { unsafe { Request *rq = (Request *)iovec[0].Base; rq->Length = nBlocks; } } Trace.WriteLine("WritePoll: " + sock.Poll(-1, SelectMode.SelectWrite)); VectorIO.Write(fd, iovec); //FallbackWrite (iovec); //queue.Enqueue (message); }
public void Receive(IMessagePart message) { Trace.WriteLine("ERROR"); List <IOVector> vecs = new List <IOVector> (); int length = 0; //vecs.Append (message); foreach (IOVector v in message) { vecs.Add(v); length += v.Length; } IOVector[] iovec = vecs.ToArray(); Trace.WriteLine("Vectors: " + iovec.Length + " Length: " + length); if (length % 4 != 0) { Trace.WriteLine("Error: % 4"); } ushort nBlocks = (ushort)(length / 4); Trace.WriteLine("nBlocks: " + nBlocks); /* * unsafe { * Request* rq = (Request*)iovec[0].Start; * rq->Length = nBlocks; * } */ Trace.WriteLine("ReadPoll: " + sock.Poll(-1, SelectMode.SelectRead)); VectorIO.Read(fd, iovec); }