The PccrrBLKResponsePacket is sent by the server.
Inheritance: PccrrPacket
Example #1
0
        /// <summary>
        /// Create a MsgBlk response.
        /// </summary>
        /// <param name="segmentId">The segmentId.</param>
        /// <param name="block">The block.</param>
        /// <param name="cryptoAlgoIdValues">The cryptoAlgoId.</param>
        /// <param name="msgTypeValues">The msgType.</param>
        /// <param name="isLastBLKAvail">If it is true, the block is the last available block.</param>
        /// <returns>The MsgBlk response.</returns>
        public PccrrBLKResponsePacket CreateMsgBlkResponse(
            byte[] segmentId,
            byte[] block,
            CryptoAlgoId_Values cryptoAlgoIdValues,
            MsgType_Values msgTypeValues,
            bool isLastBLKAvail)
        {
            if (segmentId == null)
            {
                segmentId = new byte[0];
            }

            if (block == null)
            {
                block = new byte[0];
            }

            PccrrBLKResponsePacket packet = new PccrrBLKResponsePacket();

            MSG_BLK msgBlkResp = new MSG_BLK();

            byte[] zeroPad   = new byte[0] {
            };
            byte[] zeroPad_2 = new byte[0] {
            };
            byte[] zeroPad_3 = new byte[0] {
            };
            byte[] iVBlock   = new byte[0] {
            };
            msgBlkResp.ZeroPad3        = zeroPad_3;
            msgBlkResp.ZeroPad2        = zeroPad_2;
            msgBlkResp.ZeroPad         = zeroPad;
            msgBlkResp.VrfBlock        = null;
            msgBlkResp.SizeOfVrfBlock  = 0;
            msgBlkResp.SizeOfSegmentId = (uint)segmentId.Length;
            msgBlkResp.SizeOfIVBlock   = (uint)iVBlock.Length;
            msgBlkResp.SizeOfBlock     = (uint)block.Length;
            msgBlkResp.SegmentId       = segmentId;
            msgBlkResp.IVBlock         = iVBlock;
            msgBlkResp.Block           = block;
            msgBlkResp.BlockIndex      = 0;

            if (!isLastBLKAvail)
            {
                msgBlkResp.NextBlockIndex = 1;
            }
            else
            {
                msgBlkResp.NextBlockIndex = 0;
            }

            MESSAGE_HEADER messageHeader = PccrrUtitlity.CreateMessageHeader(cryptoAlgoIdValues, msgTypeValues, new ProtoVersion {
                MajorVersion = 1, MinorVersion = 0
            });

            packet.MsgBLK        = msgBlkResp;
            packet.MessageHeader = messageHeader;

            return(packet);
        }
        /// <summary>
        /// Decode pack.
        /// </summary>
        /// <param name="rawdata">The rawdata.</param>
        /// <returns>The PccrrPacket.</returns>
        public override PccrrPacket Decode(byte[] rawdata)
        {
            if (rawdata == null)
            {
                throw new ArgumentNullException("rawdata");
            }

            if (rawdata.Length == 0)
            {
                throw new ArgumentException("The rawdata should not be empty.");
            }

            PccrrBLKResponsePacket packet = new PccrrBLKResponsePacket();

            return(packet);
        }
Example #3
0
        /// <summary>
        /// Decode response message.
        /// </summary>
        /// <param name="rawdata">The raw data.</param>
        /// <returns>The PccrrPacket.</returns>
        public PccrrPacket DecodeResponseMessage(byte[] rawdata)
        {
            if (rawdata == null)
            {
                throw new ArgumentNullException("rawdata");
            }

            if (rawdata.Length == 0)
            {
                throw new ArgumentException("The raw data should not be empty.");
            }

            int messageLength = 0;

            messageLength = rawdata.Length;

            PccrrPacket packet = null;

            if (messageLength > 0)
            {
                int index = 0;

                RESPONSE_MESSAGE ret = new RESPONSE_MESSAGE();
                ret.TRANSPORTRESPONSEHEADER.Size = MarshalHelper.GetUInt32(rawdata, ref index, false);
                ret.MESSAGEHEADER = this.DecodeMessageHeader(rawdata, ref index);

                switch (ret.MESSAGEHEADER.MsgType)
                {
                case MsgType_Values.MSG_BLKLIST:
                    PccrrBLKLISTResponsePacket pccrrBLKLISTResponsePacket = new PccrrBLKLISTResponsePacket();

                    MSG_BLKLIST msgBLKLIST = this.DecodeMSG_BLKLIST(rawdata, ref index);
                    pccrrBLKLISTResponsePacket.TransportResponseHeader = ret.TRANSPORTRESPONSEHEADER;
                    pccrrBLKLISTResponsePacket.MsgBLKLIST    = msgBLKLIST;
                    pccrrBLKLISTResponsePacket.MessageHeader = ret.MESSAGEHEADER;
                    packet = pccrrBLKLISTResponsePacket;
                    break;

                case MsgType_Values.MSG_BLK:
                    PccrrBLKResponsePacket pccrrBLKResponsePacket = new PccrrBLKResponsePacket();

                    MSG_BLK msgBLK = this.DecodeMSG_BLK(rawdata, ref index);
                    pccrrBLKResponsePacket.TransportResponseHeader = ret.TRANSPORTRESPONSEHEADER;
                    pccrrBLKResponsePacket.MsgBLK        = msgBLK;
                    pccrrBLKResponsePacket.MessageHeader = ret.MESSAGEHEADER;
                    packet = pccrrBLKResponsePacket;
                    break;

                case MsgType_Values.MSG_NEGO_RESP:
                    PccrrNegoResponsePacket pccrrNegoResponsePacket = new PccrrNegoResponsePacket();

                    MSG_NEGO_RESP msgNEGORESP = this.DecodeMSG_NEGO_RESP(rawdata, ref index);
                    pccrrNegoResponsePacket.TransportResponseHeader = ret.TRANSPORTRESPONSEHEADER;
                    pccrrNegoResponsePacket.MsgNegoResp             = msgNEGORESP;
                    pccrrNegoResponsePacket.MessageHeader           = ret.MESSAGEHEADER;
                    packet = pccrrNegoResponsePacket;
                    break;

                case MsgType_Values.MSG_SEGLIST:
                    PccrrSegListResponsePacket pccrrSegListResponsePacket = new PccrrSegListResponsePacket();
                    pccrrSegListResponsePacket.MsgSegList = TypeMarshal.ToStruct <MSG_SEGLIST>(rawdata, ref index);
                    pccrrSegListResponsePacket.TransportResponseHeader = ret.TRANSPORTRESPONSEHEADER;
                    pccrrSegListResponsePacket.MessageHeader           = ret.MESSAGEHEADER;
                    packet = pccrrSegListResponsePacket;
                    break;
                }
            }

            return(packet);
        }
        /// <summary>
        /// Decode response message.
        /// </summary>
        /// <param name="rawdata">The raw data.</param>
        /// <returns>The PccrrPacket.</returns>
        public PccrrPacket DecodeResponseMessage(byte[] rawdata)
        {
            if (rawdata == null)
            {
                throw new ArgumentNullException("rawdata");
            }

            if (rawdata.Length == 0)
            {
                throw new ArgumentException("The raw data should not be empty.");
            }

            int messageLength = 0;

            messageLength = rawdata.Length;

            PccrrPacket packet = null;

            if (messageLength > 0)
            {
                int index = 0;

                RESPONSE_MESSAGE ret = new RESPONSE_MESSAGE();
                ret.TRANSPORTRESPONSEHEADER.Size = MarshalHelper.GetUInt32(rawdata, ref index, false);
                ret.MESSAGEHEADER = this.DecodeMessageHeader(rawdata, ref index);

                switch (ret.MESSAGEHEADER.MsgType)
                {
                    case MsgType_Values.MSG_BLKLIST:
                        PccrrBLKLISTResponsePacket pccrrBLKLISTResponsePacket = new PccrrBLKLISTResponsePacket();

                        MSG_BLKLIST msgBLKLIST = this.DecodeMSG_BLKLIST(rawdata, ref index);
                        pccrrBLKLISTResponsePacket.TransportResponseHeader = ret.TRANSPORTRESPONSEHEADER;
                        pccrrBLKLISTResponsePacket.MsgBLKLIST = msgBLKLIST;
                        pccrrBLKLISTResponsePacket.MessageHeader = ret.MESSAGEHEADER;
                        packet = pccrrBLKLISTResponsePacket;
                        break;
                    case MsgType_Values.MSG_BLK:
                        PccrrBLKResponsePacket pccrrBLKResponsePacket = new PccrrBLKResponsePacket();

                        MSG_BLK msgBLK = this.DecodeMSG_BLK(rawdata, ref index);
                        pccrrBLKResponsePacket.TransportResponseHeader = ret.TRANSPORTRESPONSEHEADER;
                        pccrrBLKResponsePacket.MsgBLK = msgBLK;
                        pccrrBLKResponsePacket.MessageHeader = ret.MESSAGEHEADER;
                        packet = pccrrBLKResponsePacket;
                        break;
                    case MsgType_Values.MSG_NEGO_RESP:
                        PccrrNegoResponsePacket pccrrNegoResponsePacket = new PccrrNegoResponsePacket();

                        MSG_NEGO_RESP msgNEGORESP = this.DecodeMSG_NEGO_RESP(rawdata, ref index);
                        pccrrNegoResponsePacket.TransportResponseHeader = ret.TRANSPORTRESPONSEHEADER;
                        pccrrNegoResponsePacket.MsgNegoResp = msgNEGORESP;
                        pccrrNegoResponsePacket.MessageHeader = ret.MESSAGEHEADER;
                        packet = pccrrNegoResponsePacket;
                        break;

                    case MsgType_Values.MSG_SEGLIST:
                        PccrrSegListResponsePacket pccrrSegListResponsePacket = new PccrrSegListResponsePacket();
                        pccrrSegListResponsePacket.MsgSegList = TypeMarshal.ToStruct<MSG_SEGLIST>(rawdata, ref index);
                        pccrrSegListResponsePacket.TransportResponseHeader = ret.TRANSPORTRESPONSEHEADER;
                        pccrrSegListResponsePacket.MessageHeader = ret.MESSAGEHEADER;
                        packet = pccrrSegListResponsePacket;
                        break;
                }
            }

            return packet;
        }
        /// <summary>
        /// Create a MsgBlk response.
        /// </summary>
        /// <param name="segmentId">The segmentId.</param>
        /// <param name="block">The block.</param>
        /// <param name="cryptoAlgoIdValues">The cryptoAlgoId.</param>
        /// <param name="msgTypeValues">The msgType.</param>
        /// <param name="isLastBLKAvail">If it is true, the block is the last available block.</param>
        /// <returns>The MsgBlk response.</returns>
        public PccrrBLKResponsePacket CreateMsgBlkResponse(
            byte[] segmentId,
            byte[] block,
            CryptoAlgoId_Values cryptoAlgoIdValues,
            MsgType_Values msgTypeValues,
            bool isLastBLKAvail)
        {
            if (segmentId == null)
            {
                segmentId = new byte[0];
            }

            if (block == null)
            {
                block = new byte[0];
            }

            PccrrBLKResponsePacket packet = new PccrrBLKResponsePacket();

            MSG_BLK msgBlkResp = new MSG_BLK();
            byte[] zeroPad = new byte[0] { };
            byte[] zeroPad_2 = new byte[0] { };
            byte[] zeroPad_3 = new byte[0] { };
            byte[] iVBlock = new byte[0] { };
            msgBlkResp.ZeroPad3 = zeroPad_3;
            msgBlkResp.ZeroPad2 = zeroPad_2;
            msgBlkResp.ZeroPad = zeroPad;
            msgBlkResp.VrfBlock = null;
            msgBlkResp.SizeOfVrfBlock = 0;
            msgBlkResp.SizeOfSegmentId = (uint)segmentId.Length;
            msgBlkResp.SizeOfIVBlock = (uint)iVBlock.Length;
            msgBlkResp.SizeOfBlock = (uint)block.Length;
            msgBlkResp.SegmentId = segmentId;
            msgBlkResp.IVBlock = iVBlock;
            msgBlkResp.Block = block;
            msgBlkResp.BlockIndex = 0;

            if (!isLastBLKAvail)
            {
                msgBlkResp.NextBlockIndex = 1;
            }
            else
            {
                msgBlkResp.NextBlockIndex = 0;
            }

            MESSAGE_HEADER messageHeader = PccrrUtitlity.CreateMessageHeader(cryptoAlgoIdValues, msgTypeValues, new ProtoVersion { MajorVersion = 1, MinorVersion = 0 });
            packet.MsgBLK = msgBlkResp;
            packet.MessageHeader = messageHeader;

            return packet;
        }
        /// <summary>
        /// Decode pack.
        /// </summary>
        /// <param name="rawdata">The rawdata.</param>
        /// <returns>The PccrrPacket.</returns>
        public override PccrrPacket Decode(byte[] rawdata)
        {
            if (rawdata == null)
            {
                throw new ArgumentNullException("rawdata");
            }

            if (rawdata.Length == 0)
            {
                throw new ArgumentException("The rawdata should not be empty.");
            }

            PccrrBLKResponsePacket packet = new PccrrBLKResponsePacket();

            return packet;
        }