Ejemplo n.º 1
0
        /// <summary>
        /// Encodes a Binary Sequence from a List of Variables
        /// </summary>
        /// <param name="Bindings">The Variable to create a Binary Sequence from</param>
        /// <returns>A Binary Sequence</returns>
        public static List <byte> EncodeSequence(List <Variable> Bindings)
        {
            List <byte> _Sequence = new List <byte>();

            Bindings.ForEach(vb => _Sequence.AddRange(vb.ToSequence()));
            List <byte> Sequence = new List <byte>();

            Sequence.AddRange(BasicEncodingRules.EncodeSequence(SnmpType.Sequence, ref _Sequence, true));
            _Sequence = null;
            return(Sequence);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Creates a Byte Sequence From this Variable
        /// </summary>
        /// <param name="SequenceType">The Type of the Sequence</param>
        /// <returns>The bytes which represent this variable as a Sequence</returns>
        public List <byte> ToSequence(SnmpType?SequenceType)
        {
            SequenceType = SequenceType ?? SnmpType.Sequence;
            List <byte> _Sequence = new List <byte>();

            _Sequence.AddRange(BasicEncodingRules.EncodeObjectId(Identifier));
            _Sequence.AddRange(this.ToBytes());
            List <byte> Sequence = BasicEncodingRules.EncodeSequence(SequenceType.Value, ref _Sequence, true);

            _Sequence = null;
            return(Sequence);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Constructs the byte representation of the ProtocolDataUnit
        /// </summary>
        /// <returns>A Byte List which represents the ProtocolDataUnit</returns>
        public List <byte> ToPdu()
        {
            List <byte> Pdu          = new List <byte>();
            List <byte> _RequestId   = BasicEncodingRules.EncodeInteger32(this.RequestId);
            List <byte> _ErrorStatus = BasicEncodingRules.EncodeInteger32((int)this.ErrorStatus);
            List <byte> _ErrorIndex  = BasicEncodingRules.EncodeInteger32(this.ErrorIndex);
            List <byte> _Bindings    = BasicEncodingRules.EncodeSequence(this.Bindings);

            Pdu.AddRange(_RequestId);
            Pdu.AddRange(_ErrorStatus);
            Pdu.AddRange(_ErrorIndex);
            Pdu.AddRange(_Bindings);
            Pdu.InsertRange(0, BasicEncodingRules.EncodeSequenceHeader(PduType, Pdu.Count, true));
            Pdu.TrimExcess();
            return(Pdu);
        }