Esempio n. 1
0
        public virtual void TestPipeLineAckCompatibility()
        {
            DataTransferProtos.PipelineAckProto proto = ((DataTransferProtos.PipelineAckProto
                                                          )DataTransferProtos.PipelineAckProto.NewBuilder().SetSeqno(0).AddReply(DataTransferProtos.Status
                                                                                                                                 .ChecksumOk).Build());
            DataTransferProtos.PipelineAckProto newProto = ((DataTransferProtos.PipelineAckProto
                                                             )DataTransferProtos.PipelineAckProto.NewBuilder().MergeFrom(proto).AddFlag(PipelineAck
                                                                                                                                        .CombineHeader(PipelineAck.ECN.Supported, DataTransferProtos.Status.ChecksumOk))
                                                            .Build());
            ByteArrayOutputStream oldAckBytes = new ByteArrayOutputStream();

            proto.WriteDelimitedTo(oldAckBytes);
            PipelineAck oldAck = new PipelineAck();

            oldAck.ReadFields(new ByteArrayInputStream(oldAckBytes.ToByteArray()));
            NUnit.Framework.Assert.AreEqual(PipelineAck.CombineHeader(PipelineAck.ECN.Disabled
                                                                      , DataTransferProtos.Status.ChecksumOk), oldAck.GetHeaderFlag(0));
            PipelineAck           newAck      = new PipelineAck();
            ByteArrayOutputStream newAckBytes = new ByteArrayOutputStream();

            newProto.WriteDelimitedTo(newAckBytes);
            newAck.ReadFields(new ByteArrayInputStream(newAckBytes.ToByteArray()));
            NUnit.Framework.Assert.AreEqual(PipelineAck.CombineHeader(PipelineAck.ECN.Supported
                                                                      , DataTransferProtos.Status.ChecksumOk), newAck.GetHeaderFlag(0));
        }
Esempio n. 2
0
        /// <summary>Constructor</summary>
        /// <param name="seqno">sequence number</param>
        /// <param name="replies">an array of replies</param>
        /// <param name="downstreamAckTimeNanos">ack RTT in nanoseconds, 0 if no next DN in pipeline
        ///     </param>
        public PipelineAck(long seqno, int[] replies, long downstreamAckTimeNanos)
        {
            AList <DataTransferProtos.Status> statusList = Lists.NewArrayList();
            AList <int> flagList = Lists.NewArrayList();

            foreach (int r in replies)
            {
                statusList.AddItem(PipelineAck.StatusFormat.GetStatus(r));
                flagList.AddItem(r);
            }
            proto = ((DataTransferProtos.PipelineAckProto)DataTransferProtos.PipelineAckProto
                     .NewBuilder().SetSeqno(seqno).AddAllReply(statusList).AddAllFlag(flagList).SetDownstreamAckTimeNanos
                         (downstreamAckTimeNanos).Build());
        }
Esempio n. 3
0
 /// <summary>Writable interface</summary>
 /// <exception cref="System.IO.IOException"/>
 public virtual void ReadFields(InputStream @in)
 {
     proto = DataTransferProtos.PipelineAckProto.ParseFrom(PBHelper.VintPrefixed(@in));
 }