예제 #1
0
        public override void CompleteRead(ref Output output, long ctx, Status status)
        {
            byte *d    = networkSender.GetResponseObjectHead();
            var   dend = networkSender.GetResponseObjectTail();

            if ((int)(dend - dcurr) < 7 + networkSender.GetMaxSizeSettings.MaxOutputSize)
            {
                SendAndReset(ref d, ref dend);
            }

            hrw.Write(MessageType.PendingResult, ref dcurr, (int)(dend - dcurr));
            hrw.Write((MessageType)(ctx >> 32), ref dcurr, (int)(dend - dcurr));
            Write((int)(ctx & 0xffffffff), ref dcurr, (int)(dend - dcurr));
            Write(ref status, ref dcurr, (int)(dend - dcurr));
            if (status.Found)
            {
                serializer.Write(ref output, ref dcurr, (int)(dend - dcurr));
            }
            msgnum++;
        }
예제 #2
0
        public override void CompleteRead(ref Output output, long ctx, core.Status status)
        {
            byte *d    = responseObject.obj.bufferPtr;
            var   dend = d + responseObject.obj.buffer.Length;

            if ((int)(dend - dcurr) < 7 + maxSizeSettings.MaxOutputSize)
            {
                SendAndReset(ref d, ref dend);
            }

            hrw.Write(MessageType.PendingResult, ref dcurr, (int)(dend - dcurr));
            hrw.Write((MessageType)(ctx >> 32), ref dcurr, (int)(dend - dcurr));
            Write((int)(ctx & 0xffffffff), ref dcurr, (int)(dend - dcurr));
            Write(ref status, ref dcurr, (int)(dend - dcurr));
            if (status != core.Status.NOTFOUND)
            {
                serializer.Write(ref output, ref dcurr, (int)(dend - dcurr));
            }
            msgnum++;
        }