// create product or sum depending on enum provided
        // modulo the input until all digits retrieved and used as a sum or product onto the resultant itself (don't need linked list if just going to use resultant itself)
        // return the sum or product
        public int CreateSumOrProduct(int n, TypeOfNumber m)
        {
            int result;

            switch (m)
            {
            case TypeOfNumber.Sum:
                result = 0;     // for some reason, variable can be initialized here and still in scope for the next case; but would be best practice to declare outside switch
                while (n != 0)
                {
                    result += n % 10;
                    n      /= 10;
                }
                return(result);

            case TypeOfNumber.Product:
                result = 1;
                while (n != 0)
                {
                    result *= n % 10;
                    n      /= 10;
                }
                return(result);

            default:
                return(0);
            }
        }
Esempio n. 2
0
        public static List <Result> GetResults(int[] arr)
        {
            int          count = 1, sum = 0;
            TypeOfNumber typeOfNumber = GetTypeOfNumber(arr[0]);

            sum = sum + arr[0];
            List <Result> result = new List <Result>();
            int           i      = 1;

            while (i < arr.Length)
            {
                if (typeOfNumber == GetTypeOfNumber(arr[i]))
                {
                    count++;
                    sum          = sum + arr[i];
                    typeOfNumber = GetTypeOfNumber(arr[i]);
                }
                else
                {
                    result.Add(new Result(count, sum, typeOfNumber));
                    count        = 1;
                    sum          = 0;
                    sum          = sum + arr[i];
                    typeOfNumber = GetTypeOfNumber(arr[i]);
                }
                i++;
            }
            result.Add(new Result(count, sum, typeOfNumber));
            return(result);
        }
Esempio n. 3
0
 /// <summary>
 /// Address constructor
 /// </summary>
 /// <param name="ton">Type Of Number</param>
 /// <param name="npi">Numeric plan</param>
 /// <param name="addr">Address</param>
 public address_range(TypeOfNumber ton, NumericPlanIndicator npi, string addr)
 {
     ton_.Value  = ton;
     npi_.Value  = npi;
     addr_.Value = addr;
     ValidateData();
 }
Esempio n. 4
0
        protected override void Parse(ByteBuffer buffer)
        {
            if (buffer == null)
            {
                throw new ArgumentNullException("buffer");
            }
            const int minBytes = 7;

            if (buffer.Length < minBytes)
            {
                throw new NotEnoughBytesException("BindRequest requires at least 7 bytes for body parameters");
            }
            try
            {
                vSystemID         = DecodeCString(buffer);
                vPassword         = DecodeCString(buffer);
                vSystemType       = DecodeCString(buffer);
                vInterfaceVersion = GetByte(buffer);
                vAddressTon       = (TypeOfNumber)GetByte(buffer);
                vAddressNpi       = (NumberingPlanIndicator)GetByte(buffer);
                vAddressRange     = DecodeCString(buffer);
            }
            catch (InvalidOperationException ex)
            {
                //ByteBuffer.Remove() throws InvalidOperationException exception if called on a empty ByteBuffer instance
                //Wrap this exception as a NotEnoughBytesException exception
                throw new NotEnoughBytesException(ex.Message, ex);
            }
            if (buffer.Length > 0) //If there are some bytes left
            {
                throw new TooManyBytesException();
            }
        }
Esempio n. 5
0
 public Submit(
     uint sequenceNumber,
     string serviceType,
     TypeOfNumber sourceTon,
     NumericPlanIndicator sourceNpi,
     string sourceAddress,
     TypeOfNumber destTon,
     NumericPlanIndicator destNpi,
     string destAddress,
     int esmClass,
     int protocolId,
     int priorityFlag,
     string shortMessage)
     : base(sequenceNumber)
 {
     ServiceType = serviceType;
     SourceTon = sourceTon;
     SourceNpi = sourceNpi;
     SourceAddress = sourceAddress;
     DestTon = destTon;
     DestNpi = destNpi;
     DestAddress = destAddress;
     EsmClass = esmClass;
     ProtocolId = protocolId;
     PriorityFlag = priorityFlag;
     ShortMessage = shortMessage;
 }
Esempio n. 6
0
 public Address(
     TypeOfNumber ton,
     NumericPlanIndicator npi,
     string value)
 {
     Ton = ton;
     Npi = npi;
     Value = value;
 }
Esempio n. 7
0
        /// <summary>
        /// Parameterized constructor
        /// </summary>
        public callback_num(DigitMode digitMode, TypeOfNumber typeOfNumber, NumericPlanIndicator numberPlan, string digits) : base(TlvTag)
        {
            SmppWriter writer = new SmppWriter(Data, true);

            writer.Add((byte)digitMode);
            writer.Add((byte)typeOfNumber);
            writer.Add((byte)numberPlan);
            writer.Add(digits, false);
        }
Esempio n. 8
0
 internal BindRequest(PduHeader header)
     : base(header)
 {
     _vSystemId         = "";
     _vPassword         = "";
     _vSystemType       = "";
     _vAddressTon       = TypeOfNumber.International;  //International
     _vAddressNpi       = NumberingPlanIndicator.Isdn; //ISDN
     _vInterfaceVersion = 34;                          //SMPP 3.4 version
     _vAddressRange     = "";
 }
Esempio n. 9
0
 internal BindRequest(PDUHeader header)
     : base(header)
 {
     vSystemID = "";
     vPassword = "";
     vSystemType = "";
     vAddressTon = TypeOfNumber.International; //International
     vAddressNpi = NumberingPlanIndicator.ISDN; //ISDN
     vInterfaceVersion = 34; //SMPP 3.4 version
     vAddressRange = "";
 }
Esempio n. 10
0
 internal BindRequest(PDUHeader header)
     : base(header)
 {
     vSystemID         = "";
     vPassword         = "";
     vSystemType       = "";
     vAddressTon       = TypeOfNumber.International;  //International
     vAddressNpi       = NumberingPlanIndicator.ISDN; //ISDN
     vInterfaceVersion = 34;                          //SMPP 3.4 version
     vAddressRange     = "";
 }
Esempio n. 11
0
 public SessionBindInfo()
 {
     _vHost             = "";
     _vSystemId         = "";
     _vPassword         = "";
     _vSystemType       = "";
     _vInterfaceVersion = InterfaceVersion.V34;
     _vAllowReceive     = true;
     _vAllowTransmit    = true;
     _vAddressTon       = TypeOfNumber.International;
     _vAddressNpi       = NumberingPlanIndicator.Isdn;
 }
Esempio n. 12
0
        /// <summary>
        /// International phone number
        /// </summary>
        /// <param name="number"></param>
        public Address(long number)
        {
            string stringNumber = number.ToString();

            //this.m_AddressLength = stringNumber.Length;

            this.m_TypeOfNumber = TypeOfNumber.InternationalNumber;

            this.m_NumberingPlanIdentification = NumberingPlanIdentification.ISDN_telephoneNumberingPlan;

            this.m_AddressValue = stringNumber;
        }
Esempio n. 13
0
 public SessionBindInfo()
 {
     vHost = "";
     vSystemID = "";
     vPassword = "";
     vSystemType = "";
     vInterfaceVersion = InterfaceVersion.v34;
     vAllowReceive = true;
     vAllowTransmit = true;
     vAddressTon = TypeOfNumber.International;
     vAddressNpi = NumberingPlanIndicator.ISDN;
 }
Esempio n. 14
0
 public SessionBindInfo()
 {
     vHost             = "";
     vSystemID         = "";
     vPassword         = "";
     vSystemType       = "";
     vInterfaceVersion = InterfaceVersion.v34;
     vAllowReceive     = true;
     vAllowTransmit    = true;
     vAddressTon       = TypeOfNumber.International;
     vAddressNpi       = NumberingPlanIndicator.ISDN;
 }
Esempio n. 15
0
 /// <summary>
 /// Initializes a new instance of <see cref="SmppConnectionProperties"/>
 /// </summary>
 public SmppConnectionProperties()
 {
     vSystemID = "";
     vPassword = "";
     vHost = "";
     vAddressTon = TypeOfNumber.International;
     vAddressNpi = NumberingPlanIndicator.ISDN;
     vInterfaceVersion = InterfaceVersion.v34;
     vSystemType = "";
     vDefaultServiceType = "";
     SmscID = "";
     vSyncRoot = new object();
 }
Esempio n. 16
0
        internal static SmppAddress Parse(ByteBuffer buffer)
        {
            //We require at least 3 bytes for SMPPAddress instance to be craeted
            if (buffer.Length < 3)
            {
                throw new NotEnoughBytesException("SMPPAddress requires at least 3 bytes");
            }
            TypeOfNumber           ton = (TypeOfNumber)PDU.GetByte(buffer);
            NumberingPlanIndicator npi = (NumberingPlanIndicator)PDU.GetByte(buffer);
            string address             = PDU.DecodeCString(buffer);

            return(new SmppAddress(ton, npi, address));
        }
 /// <summary>
 /// Initializes a new instance of <see cref="SmppConnectionProperties"/>
 /// </summary>
 public SmppConnectionProperties()
 {
     _vSystemId           = "";
     _vPassword           = "";
     _vHost               = "";
     _vAddressTon         = TypeOfNumber.International;
     _vAddressNpi         = NumberingPlanIndicator.Isdn;
     _vInterfaceVersion   = InterfaceVersion.V34;
     _vSystemType         = "";
     _vDefaultServiceType = "";
     SmscId               = "";
     _vSyncRoot           = new object();
 }
 /// <summary>
 /// Initializes a new instance of <see cref="SmppConnectionProperties"/>
 /// </summary>
 public SmppConnectionProperties()
 {
     vSystemID           = "";
     vPassword           = "";
     vHost               = "";
     vAddressTon         = TypeOfNumber.International;
     vAddressNpi         = NumberingPlanIndicator.ISDN;
     vInterfaceVersion   = InterfaceVersion.v34;
     vSystemType         = "";
     vDefaultServiceType = "";
     SmscID              = "";
     vSyncRoot           = new object();
 }
 public static IEnumerable<int> FindNumberType(IEnumerable<int> numbers, TypeOfNumber TypeofNumber)
 {
     switch (TypeofNumber)
     {
         case TypeOfNumber.odd:
             return numbers.Find(IsOdd);
         case TypeOfNumber.even:
             return numbers.Find(IsEven);
         case TypeOfNumber.prime:
             return numbers.Find(IsPrime);
             case TypeOfNumber.perfect:
             return numbers.Find(IsPerfect);
         default:
             throw new ArgumentOutOfRangeException("TypeofNumber");
     }
 }
Esempio n. 20
0
        public Address(string codedAddressField)
        {
            int length = int.Parse(codedAddressField.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);

            this.m_AddressValue = BaseConversionHelper.DecimalSemiOctetToDecimal(codedAddressField.Substring(4, codedAddressField.Length - 4)).ToString();

            if (this.m_AddressValue.Length != length)
            {
                throw new NotImplementedException();
            }

            int[] typeOfAddress = BaseConversionHelper.HexToBinary(codedAddressField.Substring(2, 2));

            this.m_TypeOfNumber = (TypeOfNumber)BaseConversionHelper.BinaryToDecimal(new int[] { typeOfAddress[4], typeOfAddress[5], typeOfAddress[6] });

            this.m_NumberingPlanIdentification = (NumberingPlanIdentification)BaseConversionHelper.BinaryToDecimal(new int[] { typeOfAddress[0], typeOfAddress[1], typeOfAddress[2], typeOfAddress[3] });
        }
Esempio n. 21
0
 public BindTransceiver(
     uint sequenceNumber,
     string systemId,
     string password,
     string systemType,
     byte interfaceVersion,
     TypeOfNumber addressTon,
     NumericPlanIndicator addressNpi,
     string addressRange)
     : base(sequenceNumber)
 {
     SystemId = systemId;
     Password = password;
     SystemType = systemType;
     InterfaceVersion = interfaceVersion;
     AddressTon = addressTon;
     AddressNpi = addressNpi;
     AddressRange = AddressRange;
 }
        public static IEnumerable <int> FindNumberType(IEnumerable <int> numbers, TypeOfNumber TypeofNumber)
        {
            switch (TypeofNumber)
            {
            case TypeOfNumber.odd:
                return(numbers.Find(IsOdd));

            case TypeOfNumber.even:
                return(numbers.Find(IsEven));

            case TypeOfNumber.prime:
                return(numbers.Find(IsPrime));

            case TypeOfNumber.perfect:
                return(numbers.Find(IsPerfect));

            default:
                throw new ArgumentOutOfRangeException("TypeofNumber");
            }
        }
Esempio n. 23
0
        private void BindSession(SessionBindInfo bindInfo, int timeOut)
        {
            _vTcpIpSession.SessionClosed += TcpIpSessionClosedEventHandler;

            BindRequest bindReq = bindInfo.CreatePdu();

            _vTrans.Send(bindReq);
            BindResponse bindResp = null;

            try { bindResp = (BindResponse)_vRespHandler.WaitResponse(bindReq, timeOut); }
            catch (SmppResponseTimedOutException ex)
            { throw new SmppBindException(ex); }
            if (bindResp.Header.ErrorCode != 0)
            {
                throw new SmppBindException(bindResp.Header.ErrorCode);
            }
            //Copy settings
            _vSmscId     = bindResp.SystemId;
            _vSystemId   = bindInfo.SystemId;
            _vPassword   = bindInfo.Password;
            _vAddressTon = bindInfo.AddressTon;
            _vAddressNpi = bindInfo.AddressNpi;
            //Start timer
            _vTimer.Start();
            _vIsAlive = true;
            switch (bindReq.Header.CommandType)
            {
            case CommandType.BindTransceiver:
                ChangeState(SmppSessionState.Transceiver);
                break;

            case CommandType.BindReceiver:
                ChangeState(SmppSessionState.Receiver);
                break;

            case CommandType.BindTransmitter:
                ChangeState(SmppSessionState.Transmitter);
                break;
            }
        }
Esempio n. 24
0
 /// <summary>
 /// Address constructor
 /// </summary>
 /// <param name="ton">Type Of Number</param>
 /// <param name="npi">Numeric plan</param>
 /// <param name="addr">Address</param>
 public multi_address(TypeOfNumber ton, NumericPlanIndicator npi, string addr)
 {
     flag_.Value = DestinationType.SME_ADDRESS;
     elem_       = new address(ton, npi, addr);
 }
Esempio n. 25
0
 protected override void Parse(ByteBuffer buffer)
 {
     if (buffer == null) { throw new ArgumentNullException("buffer"); }
     const int minBytes = 7;
     if (buffer.Length < minBytes) { throw new NotEnoughBytesException("BindRequest requires at least 7 bytes for body parameters"); }
     try
     {
         vSystemID = DecodeCString(buffer);
         vPassword = DecodeCString(buffer);
         vSystemType = DecodeCString(buffer);
         vInterfaceVersion = GetByte(buffer);
         vAddressTon = (TypeOfNumber)GetByte(buffer);
         vAddressNpi = (NumberingPlanIndicator)GetByte(buffer);
         vAddressRange = DecodeCString(buffer);
     }
     catch (InvalidOperationException ex)
     {
         //ByteBuffer.Remove() throws InvalidOperationException exception if called on a empty ByteBuffer instance
         //Wrap this exception as a NotEnoughBytesException exception
         throw new NotEnoughBytesException(ex.Message,ex);
     }
     if (buffer.Length > 0) //If there are some bytes left
     { throw new TooManyBytesException(); }
 }
Esempio n. 26
0
 public SmppAddress()
 {
     _vTon     = TypeOfNumber.International;
     _vNpi     = NumberingPlanIndicator.Isdn;
     _vAddress = "";
 }
Esempio n. 27
0
 public SmppAddress()
 {
     vTon = TypeOfNumber.International;
     vNpi = NumberingPlanIndicator.ISDN;
     vAddress = "";
 }
Esempio n. 28
0
 public Result(int count, int sum, TypeOfNumber type)
 {
     _count        = count;
     _sum          = sum;
     _typeOfNumber = type;
 }
Esempio n. 29
0
 public SmppAddress()
 {
     vTon     = TypeOfNumber.International;
     vNpi     = NumberingPlanIndicator.ISDN;
     vAddress = "";
 }
Esempio n. 30
0
 public SmppAddress(TypeOfNumber ton, NumberingPlanIndicator npi, string address)
 {
     vTon     = ton;
     vNpi     = npi;
     vAddress = address;
 }
Esempio n. 31
0
        /// <summary>
        /// Компиляця строки к отправке SMS
        /// </summary>
        /// <param name="smsc_num"></param>
        /// <param name="tsmsc_num"></param>
        /// <param name="da_num"></param>
        /// <param name="tda_num"></param>
        /// <param name="ep"></param>
        /// <param name="TimeLife"></param>
        /// <param name="text"></param>
        /// <param name="pdu_len">Длина PDU, исключая блок SCA</param>
        /// <returns></returns>
        string GetPDUSendStr(string smsc_num, TypeOfNumber tsmsc_num, string da_num, TypeOfNumber tda_num, DEncProtocol ep, string text, out int pdu_len)
        {
            int     len_sca = 1;
            SPDUSMS spdusms = new SPDUSMS();
            string  res     = string.Empty;

            if (smsc_num.Length == 0)
            {
                spdusms.SMSC_num_len     = 0x00;
                spdusms.SMSC_type_of_num = 0x00;
                spdusms.SMSC_num         = string.Empty;
                res += "00";
            }
            else
            {
                spdusms.SMSC_type_of_num = (byte)tsmsc_num;
                spdusms.SMSC_num         = BCDFixNum(smsc_num);
                len_sca += 1 + (spdusms.SMSC_num.Length / 2);
                spdusms.SMSC_num_len = (byte)(len_sca - 1);
                res += string.Format("{0:X2}", spdusms.SMSC_num_len) + string.Format("{0:X2}", spdusms.SMSC_type_of_num) + spdusms.SMSC_num;
            }

            spdusms.TPDU = 0x31;//Отчет о доставке, вр.жизни далее 1 байт
            res         += string.Format("{0:X2}", spdusms.TPDU);

            spdusms.MR = 0x00;
            res       += string.Format("{0:X2}", spdusms.MR);

            spdusms.DA_ref_len = (byte)da_num.Length;
            res += string.Format("{0:X2}", spdusms.DA_ref_len);

            spdusms.DA_type_of_num = (byte)tda_num;
            res += string.Format("{0:X2}", spdusms.DA_type_of_num);

            spdusms.DA_num = BCDFixNum(da_num);
            res           += spdusms.DA_num;

            spdusms.PID = 0x00;
            res        += string.Format("{0:X2}", spdusms.PID);

            spdusms.DCS = (byte)ep;
            res        += string.Format("{0:X2}", spdusms.DCS);

            spdusms.VP = 0xAA;
            res       += string.Format("{0:X2}", spdusms.VP);

            string[] rt = new string[2];
            switch (ep)
            {
            case DEncProtocol.SbitDefault:
            {
                rt          = StringToPDU7b(text);
                spdusms.UDL = Convert.ToByte(rt[0], 16);
                spdusms.UD  = rt[1];
            }
            break;

            case DEncProtocol.UTF7:
            {
                rt          = StringToUCS2(text);
                spdusms.UDL = Convert.ToByte(rt[0], 16);
                spdusms.UD  = rt[1];
            }
            break;

            default:
                break;
            }

            res += rt[0] + rt[1];

            pdu_len = (res.Length / 2) - len_sca;
            return(res);
        }
Esempio n. 32
0
 /// <summary>
 /// Address constructor
 /// </summary>
 /// <param name="status">Status code</param>
 /// <param name="ton">Type Of Number</param>
 /// <param name="npi">Numeric plan</param>
 /// <param name="addr">Address</param>
 public unsuccess_sme(int status, TypeOfNumber ton, NumericPlanIndicator npi, string addr) :
     this(status, new address(ton, npi, addr))
 {
 }
Esempio n. 33
0
 public SmppAddress(TypeOfNumber ton, NumberingPlanIndicator npi, string address)
 {
     vTon = ton;
     vNpi = npi;
     vAddress = address;
 }
Esempio n. 34
0
 /// <summary>
 /// Address constructor
 /// </summary>
 /// <param name="ton">Type Of Number</param>
 /// <param name="npi">Numeric plan</param>
 /// <param name="addr">Address</param>
 public address(TypeOfNumber ton, NumericPlanIndicator npi, string addr)
 {
     ton_.Value  = ton;
     npi_.Value  = npi;
     addr_.Value = addr;
 }
Esempio n. 35
0
 /// <summary>
 /// Specific constructor
 /// </summary>
 /// <param name="ton">Type</param>
 public ton(TypeOfNumber ton) : base((byte)ton)
 {
 }