/// <summary>
        ///
        /// </summary>
        /// <param name="isoField"></param>
        /// <param name="packedBytes"></param>
        /// <param name="index"></param>
        public override void UnPack(ISOComponent isoField, byte[] packedBytes, ref int index)
        {
            // reserve enough bytes to store the length !! ASUMES FOR NOW THAT IS ALWAYS BINARY !!
            switch (m_isoFieldDefinition.lengthCoding)
            {
            case ISOFieldCoding.BIN:
                index += m_isoFieldDefinition.lengthLength / 2;     // 2 HEXADECIMAL DIGITS represent 1 byte
                break;

            case ISOFieldCoding.ASCII:
            case ISOFieldCoding.EBCDIC:
                index += m_isoFieldDefinition.lengthLength;     // 1 ASCII Character is 1 byte
                break;

            case ISOFieldCoding.BCD:

                break;

            default:
                break;
            }


            ISOComponent[] isoFields = ((ISOFieldBitmapSubFields)(isoField)).GetFields();

            isoFields[0] = new ISOFieldBitmap(Logger, m_fieldPackagerList[0], m_fieldPackagerList[0].GetFieldNumber());

            m_fieldPackagerList[0].UnPack(isoFields[0], packedBytes, ref index);
            var bitmap = isoFields[0] as ISOFieldBitmap;

            int[] setFields = bitmap.GetSetFields();

            for (int k = 0; k < setFields.Length; k++)
            {
                int fieldNumber = setFields[k];
                if (fieldNumber != 0)
                {
                    isoFields[fieldNumber] = new ISOField(Logger, m_fieldPackagerList[fieldNumber], m_fieldPackagerList[fieldNumber].GetFieldNumber());
                    m_fieldPackagerList[fieldNumber].UnPack(isoFields[fieldNumber], packedBytes, ref index);
                }
            }
            //int totFields = bitmap.GetLengthInBits();

            //for (int fieldNumber = 1; fieldNumber <= totFields; fieldNumber++)
            //{
            //    if (bitmap.BitIsSet(fieldNumber))
            //    {
            //        isoFields[fieldNumber] = new ISOField(Logger, m_fieldPackagerList[fieldNumber], m_fieldPackagerList[fieldNumber].GetFieldNumber());

            //        m_fieldPackagerList[fieldNumber].UnPack(isoFields[fieldNumber], packedBytes, ref index);
            //    }
            //}
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="totalFields"></param>
        public ISOMsgTypePackager(ILogger logger, int totalFields)
        {
            _logger = logger;

            m_totalFields = totalFields;

            m_manBitmap = new ISOFieldBitmap(Logger);

            m_conBitmap = new ISOFieldBitmap(Logger);

            m_optBitmap = new ISOFieldBitmap(Logger);
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="bitMapField"></param>
 /// <param name="msgType"></param>
 /// <returns></returns>
 public bool ValidateBitmap(ISOFieldBitmap bitMapField, string msgType)
 {
     if (m_msgTypes.ContainsKey(msgType))
     {
         return(m_msgTypes[msgType].ValidateBitmap(bitMapField));
     }
     else
     {
         if (Logger.IsEnabled(LogLevel.Critical))
         {
             Logger.LogCritical("Message Type [" + msgType + "] not supported by packager!");
         }
         return(false);
     }
 }
Beispiel #4
0
        public void BitmapIsSameAsField_1()
        {
            ISOFieldBitmap bitmapOnly = new ISOFieldBitmap(new Microsoft.Extensions.Logging.Abstractions.NullLogger <BitmapTests>());

            bitmapOnly.SetBit(0);
            bitmapOnly.SetBit(2);
            bitmapOnly.SetBit(3);
            bitmapOnly.SetBit(4);
            bitmapOnly.SetBit(7);
            bitmapOnly.SetBit(11);
            bitmapOnly.SetBit(12);
            bitmapOnly.SetBit(14);
            bitmapOnly.SetBit(18);
            bitmapOnly.SetBit(19);
            bitmapOnly.SetBit(22);
            bitmapOnly.SetBit(25);
            bitmapOnly.SetBit(37);

            var mPackager = new ISOMessagePackager(logger); // initialize from default visa packager that is embeded as a resource in the library
            var m         = new ISOMessage(logger, mPackager);

            m.Set(0, "0100");
            m.Set(2, "40004000400040001");
            m.Set(3, "000000");
            m.Set(4, "000000002900");
            m.Set(7, "1231231233");
            m.Set(11, "123123");
            m.Set(12, "193012");
            m.Set(14, "1219");
            m.Set(18, "5999");
            m.Set(19, "196");
            m.Set(22, "9010");
            m.Set(25, "23");
            m.Set(37, "123123123123");

            var bitmap = m.GetField(1) as ISO8583Net.Field.ISOFieldBitmap;


            var bmOnlybytes = bitmapOnly.GetByteArray();
            var bmBytes     = bitmap.GetByteArray();

            for (int i = 0; i < bmOnlybytes.Length; i++)
            {
                Assert.Equal(bmBytes[i], bmOnlybytes[i]);
            }
        }
Beispiel #5
0
        public void GetSetFieldsWorks()
        {
            ISOFieldBitmap bitmap = new ISOFieldBitmap(new Microsoft.Extensions.Logging.Abstractions.NullLogger <BitmapTests>());

            bitmap.SetBit(0);
            bitmap.SetBit(2);
            bitmap.SetBit(3);
            bitmap.SetBit(4);
            bitmap.SetBit(7);
            bitmap.SetBit(11);
            bitmap.SetBit(12);
            bitmap.SetBit(14);
            bitmap.SetBit(18);
            bitmap.SetBit(19);
            bitmap.SetBit(22);
            bitmap.SetBit(25);
            bitmap.SetBit(37);

            //Collect status of all fields using BitIsSet
            bool[] fieldsOld = new bool[196];
            int    length    = bitmap.GetByteArray().Length * 8;

            for (int i = 0; i < length; i++)
            {
                if (i != 1 && i != 65)
                {
                    fieldsOld[i] = bitmap.BitIsSet(i);
                }
            }

            //Collect status of all fields using GetSetFields
            bool[] fields    = new bool[196];
            var    setFields = bitmap.GetSetFields();

            for (int i = 0; i < setFields.Length; i++)
            {
                fields[setFields[i]] = true;
            }

            //Check if same
            for (int i = 1; i < 196; i++)
            {
                Assert.Equal(fieldsOld[i], fields[i]);
            }
        }
Beispiel #6
0
        public void BitmapEnumeratorWorks()
        {
            ISOFieldBitmap bitmap = new ISOFieldBitmap(new Microsoft.Extensions.Logging.Abstractions.NullLogger <BitmapTests>());

            bitmap.SetBit(0);
            bitmap.SetBit(1);
            bitmap.SetBit(2);
            bitmap.SetBit(8);
            bitmap.SetBit(12);
            bitmap.SetBit(34);
            bitmap.SetBit(62);

            int i = 0;

            foreach (var item in bitmap.GetByteArray().GetBitEnumerator())
            {
                if (i != 1 && i != 65)
                {
                    Assert.Equal(bitmap.BitIsSet(i), item);
                }
                i++;
            }
        }
Beispiel #7
0
        public void BitIsSetWorks()
        {
            ISOFieldBitmap bitmap = new ISOFieldBitmap(new Microsoft.Extensions.Logging.Abstractions.NullLogger <BitmapTests>());

            bitmap.SetBit(0);
            bitmap.SetBit(1);
            bitmap.SetBit(2);
            bitmap.SetBit(8);
            bitmap.SetBit(12);
            bitmap.SetBit(34);
            bitmap.SetBit(62);

            for (int i = 0; i < 128; i++)
            {
                if (i == 0 || i == 1 || i == 2 || i == 8 || i == 12 || i == 34 || i == 62)
                {
                    Assert.True(bitmap.BitIsSet(i));
                }
                else
                {
                    Assert.False(bitmap.BitIsSet(i));
                }
            }
        }
Beispiel #8
0
        public void BitmapFieldEnumeratorWorks()
        {
            ISOFieldBitmap bitmap = new ISOFieldBitmap(new Microsoft.Extensions.Logging.Abstractions.NullLogger <BitmapTests>());

            bitmap.SetBit(0);
            bitmap.SetBit(1);
            bitmap.SetBit(2);
            bitmap.SetBit(8);
            bitmap.SetBit(12);
            bitmap.SetBit(34);
            bitmap.SetBit(62);

            var setFields = bitmap.GetByteArray().GetFieldIdEnumerator().ToList();
            int length    = bitmap.GetByteArray().Length;

            for (int i = 0; i < length; i++)
            {
                if (i != 1 && i != 65)
                {
                    bool fieldExists = setFields.Exists(field => field == i);
                    Assert.Equal(bitmap.BitIsSet(i), fieldExists);
                }
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="isoField"></param>
        /// <param name="packedBytes"></param>
        /// <param name="index"></param>
        public override void UnPack(ISOComponent isoField, byte[] packedBytes, ref int index)
        {
            bool allMandatoryExist = true;

            ISOComponent[] isoFields = ((ISOMessageFields)(isoField)).GetFields();

            // Unpack the message type from the byteArray for transmission

            isoFields[0] = new ISOField(Logger, m_fieldPackagerList[0], m_fieldPackagerList[0].GetFieldNumber());

            m_fieldPackagerList[0].UnPack(isoFields[0], packedBytes, ref index);

            string msgType = isoFields[0].value;

            // Unpack the Bitmap from the byteArray for transmission

            isoFields[1] = new ISOFieldBitmap(Logger, m_fieldPackagerList[1], m_fieldPackagerList[1].GetFieldNumber());

            m_fieldPackagerList[1].UnPack(isoFields[1], packedBytes, ref index);

            var bitmap = isoFields[1] as ISOFieldBitmap;

            int[] setFields = bitmap.GetSetFields();

            for (int k = 0; k < setFields.Length; k++)
            {
                // special bit fields indicating existance of third and fourth bitmap should not try to pack them
                int fieldNumber = setFields[k];
                if (fieldNumber >= 2 && fieldNumber != 65 && fieldNumber != 129)
                {
                    if (m_fieldPackagerList[fieldNumber].IsComposite())
                    {
                        isoFields[fieldNumber] = new ISOFieldBitmapSubFields(Logger, (ISOFieldBitmapSubFieldsPackager)m_fieldPackagerList[fieldNumber], m_fieldPackagerList[fieldNumber].GetFieldNumber());
                    }
                    else
                    {
                        isoFields[fieldNumber] = new ISOField(Logger, m_fieldPackagerList[fieldNumber], m_fieldPackagerList[fieldNumber].GetFieldNumber());
                    }

                    m_fieldPackagerList[fieldNumber].UnPack(isoFields[fieldNumber], packedBytes, ref index);
                }
            }
            //int totFields = bitmap.GetLengthInBits();

            //for (int fieldNumber = 2; fieldNumber <= totFields; fieldNumber++)
            //{
            //    // special bit fields indicating existance of third and fourth bitmap should not try to pack them

            //    if (fieldNumber != 65 && fieldNumber != 129)
            //    {
            //        // check if current field number is present on message bitmap

            //        if (bitmap.BitIsSet(fieldNumber))
            //        {
            //            if (m_fieldPackagerList[fieldNumber].IsComposite())
            //            {
            //                //if (m_fieldPackagerList[fieldNumber].GetStorageClass() == "ISO8583Net.ISOMessageSubFields")
            //                //{
            //                isoFields[fieldNumber] = new ISOFieldBitmapSubFields(Logger, (ISOFieldBitmapSubFieldsPackager)m_fieldPackagerList[fieldNumber], m_fieldPackagerList[fieldNumber].GetFieldNumber());
            //                //}
            //            }
            //            else
            //            {
            //                    isoFields[fieldNumber] = new ISOField(Logger, m_fieldPackagerList[fieldNumber], m_fieldPackagerList[fieldNumber].GetFieldNumber());
            //            }

            //            m_fieldPackagerList[fieldNumber].UnPack(isoFields[fieldNumber], packedBytes, ref index);
            //        }
            //    }
            //}
        }
Beispiel #10
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="isoMsgBitmap"></param>
 /// <returns></returns>
 public bool ValidateBitmap(ISOFieldBitmap isoMsgBitmap)
 {
     // copmare iso message bitmap with packagerSupportedFields bitmap and log the findings
     return(false);
 }