Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }