/// <summary>
 /// Este método le indica al contexto de análisis y contrucción de mensajes
 /// que se ha consumido el mensaje que se estaba desformateando.
 /// </summary>
 public void MessageHasBeenConsumed()
 {
     _currentMessage           = null;
     _currentField             = 0;
     _currentBitMap            = null;
     _signaled                 = false;
     _packetHeaderDataStripped = false;
     _payload = null;
 }
Example #2
0
        /// <summary>
        /// Construye un mapa de bits exactamente igual a otro dado.
        /// </summary>
        /// <param name="fieldNumber">
        /// Es el número del campo en el mensaje.
        /// </param>
        /// <param name="bitmap">
        /// Es el mapa de bits que se toma como referencia para crear uno nuevo.
        /// </param>
        public BitMapField(int fieldNumber, BitMapField bitmap) : base(fieldNumber)
        {
            _lowerFieldNumber = bitmap.LowerFieldNumber;
            _upperFieldNumber = bitmap.UpperFieldNumber;

            byte[] bitmapValue = bitmap.GetBytes();

            _value = new byte[bitmapValue.Length];

            for (int i = 0; i < _value.Length; i++)
            {
                _value[i] = bitmapValue[i];
            }
        }
        /// <summary>
        /// Construye un nuevo contexto de análisis y contrucción de mensajes.
        /// </summary>
        /// <param name="bufferSize">
        /// Es el tamaño inicial del buffer donde residirán los datos a desformatear.
        /// </param>
        /// <exception cref="ArgumentException">
        /// En caso de que <paramref name="bufferSize"/> sea menor a 1.
        /// </exception>
        public ParserContext(int bufferSize)
        {
            if (bufferSize < 1)
            {
                throw new ArgumentException(SR.MustBeGreaterThanZero, "bufferSize");
            }

            _buffer                   = new byte[bufferSize];
            _lowerDataBound           = _upperDataBound = 0;
            _currentMessage           = null;
            _currentField             = 0;
            _decodedLength            = int.MinValue;
            _currentBitMap            = null;
            _signaled                 = false;
            _packetHeaderDataStripped = false;
            _payload                  = null;
        }
        /// <summary>
        /// Retorna la representación XML en una cadena de caracteres de un
        /// mapa de bits.
        /// </summary>
        /// <param name="renderingMap">Es el mapa de todos los objetos que representan
        /// objetos. Vea log4net.</param>
        /// <param name="component">Es el BitMap a ser representado en XML.</param>
        /// <param name="indent">Es la indentación a emplear en la representación
        /// XML.</param>
        /// <returns>Retorna una cadena de caracteres con la representación en XML
        /// del mapa de bits.</returns>
        public override string DoRender(RendererMap renderingMap,
                                        MessagingComponent component, string indent)
        {
            if (!(component is BitMapField))
            {
                throw new ArgumentException(SR.ComponentIsNotABitmapField, "component");
            }

            BitMapField   bitmap = ( BitMapField)component;
            StringBuilder render = new StringBuilder();
            bool          comma  = false;

            string bitmapIndent = indent;

            if (bitmap.FieldNumber >= 0)
            {
                render.Append(indent);
                render.Append("<");
                render.Append(MessagingComponentXmlRendering.XmlFieldTag);
                render.Append(" ");
                render.Append(MessagingComponentXmlRendering.XmlNumberAttr);
                render.Append("=\"");
                render.Append(bitmap.FieldNumber.ToString(CultureInfo.CurrentCulture));
                render.Append("\" ");
                render.Append(MessagingComponentXmlRendering.XmlTypeAttr);
                render.Append("=\"");
                render.Append(MessagingComponentXmlRendering.XmlComponentVal);
                render.Append("\">");
                render.Append(Environment.NewLine);

                bitmapIndent += "   ";
            }

            render.Append(bitmapIndent);
            render.Append("<");
            render.Append(MessagingComponentXmlRendering.XmlBitMapTag);
            render.Append(" ");
            render.Append(MessagingComponentXmlRendering.XmlValueAttr);
            render.Append("=\"");

            for (int i = bitmap.LowerFieldNumber; i <= bitmap.UpperFieldNumber; i++)
            {
                if (bitmap.IsSet(i))
                {
                    if (comma)
                    {
                        render.Append(string.Format(",{0}", i));
                    }
                    else
                    {
                        comma = true;
                        render.Append(i);
                    }
                }
            }
            render.Append("\" />");
            render.Append(Environment.NewLine);

            if (bitmap.FieldNumber >= 0)
            {
                render.Append(indent);
                render.Append("</");
                render.Append(MessagingComponentXmlRendering.XmlFieldTag);
                render.Append(">");
            }

            return(render.ToString());
        }