Esempio n. 1
0
        /// <summary> Called to save a pdu into the database </summary>
        /// <param name="dataTransaction"></param>
        /// <param name="logKey"></param>
        /// <param name="smscServiceId"></param>
        /// <param name="pduDirectionType"></param>
        /// <param name="commandLength"></param>
        /// <param name="commandSet"></param>
        /// <param name="commandStatus"></param>
        /// <param name="sequenceNumber"></param>
        /// <param name="details"></param>
        /// <param name="pduDataBlocks"></param>
        /// <returns> long </returns>
        public static Guid? Insert(DataTransaction dataTransaction, string logKey, int smscServiceId, PduDirectionTypes pduDirectionType, long commandLength,
                                   CommandSet commandSet, CommandStatus commandStatus, long sequenceNumber, List<PduPropertyDetail> details, List<byte[]> pduDataBlocks)
        {
            Guid? pduHeaderId = null;

            // Prepare the database call
            using (DbCommand dbCommand = dataTransaction.GetStoredProcCommand("spSMPP_Pdu_Insert"))
            {
                // Prepare the call
                dataTransaction.AddInParameterString(dbCommand, "LogKey", logKey);
                dataTransaction.AddInParameterInteger(dbCommand, "SMSCServiceID", smscServiceId);
                dataTransaction.AddInParameterShort(dbCommand, "Direction", (short) pduDirectionType);
                dataTransaction.AddInParameterLong(dbCommand, "CommandLength", commandLength);
                dataTransaction.AddInParameterString(dbCommand, "CommandId", commandSet.ToString());
                dataTransaction.AddInParameterString(dbCommand, "CommandStatusId", commandStatus.ToString());
                dataTransaction.AddInParameterLong(dbCommand, "SequenceNumber", sequenceNumber);
                dataTransaction.AddInParameterTable(dbCommand, "PduPropertyDetails", new PduPropertyDetails(details));
                dataTransaction.AddInParameterTable(dbCommand, "PduDataBlocks", new SMSCPduDataBlocks(pduDataBlocks));

                dataTransaction.AddOutParameterGuid(dbCommand, "PduHeaderId");

                dataTransaction.ExecuteNonQuery(dbCommand);

                pduHeaderId = dataTransaction.GetParameterValueGuid(dbCommand, "PduHeaderId");
            }

            return pduHeaderId;
        }
Esempio n. 2
0
        private static Guid?PduDetailsHandler(string logKey, PduDirectionTypes pduDirectionType, Header pdu, List <PduPropertyDetail> details)
        {
            Guid?pduHeaderId = null;

            try
            {
                // Do not store these
                if ((pdu.Command == CommandSet.EnquireLink) || (pdu.Command == CommandSet.EnquireLinkResp))
                {
                    return(null);
                }

                string connectionString = null; // If null InsertPdu will just log to stdout
                int    serviceId        = 0;    // Internal Id used to track multiple SMSC systems

                PduApp.InsertPdu(logKey, connectionString, serviceId, pduDirectionType, details, pdu.PduData.BreakIntoDataBlocks(4096), out pduHeaderId);
            }

            catch (Exception exception)
            {
                Console.WriteLine("{0}", exception.Message);
            }

            return(pduHeaderId);
        }
Esempio n. 3
0
        /// <summary> Called when a pdu details are available </summary>
        /// <param name="logKey"></param>
        /// <param name="pduDirectionType"></param>
        /// <param name="pdu"></param>
        /// <param name="details"></param>
        /// <returns> External Id </returns>
        private Guid?PduDetailsConnectionHandler(string logKey, PduDirectionTypes pduDirectionType, Header pdu, List <PduPropertyDetail> details)
        {
            Guid?externalId = null;

            if (PduDetailsEventHandler != null)
            {
                externalId = PduDetailsEventHandler(logKey, pduDirectionType, pdu, details);
            }

            return(externalId);
        }
Esempio n. 4
0
        /// <summary> Called when a pdu details are available </summary>
        /// <param name="send"></param>
        /// <param name="pduDirectionType"></param>
        /// <param name="pdu"></param>
        /// <param name="details"></param>
        /// <returns> External Id </returns>
        private Guid?ClientEventPduDetails(object send, PduDirectionTypes pduDirectionType, Header pdu, List <PduPropertyDetail> details)
        {
            Guid?externalId = null;

            if (PduDetailsEventHandler != null)
            {
                externalId = PduDetailsEventHandler(LogKey, pduDirectionType, pdu, details);
            }

            return(externalId);
        }
Esempio n. 5
0
        /// <summary> Called to save a pdu by its property details </summary>
        /// <param name="logKey"></param>
        /// <param name="connection"></param>
        /// <param name="smscServiceId"></param>
        /// <param name="pduDirectionType"></param>
        /// <param name="details"></param>
        /// <param name="pduDataBlocks"></param>
        /// <param name="pduHeaderId"></param>
        /// <returns> ResultCodeTypes </returns>
        public static int InsertPdu(string logKey, string connection, int smscServiceId, PduDirectionTypes pduDirectionType, List<PduPropertyDetail> details, List<byte[]> pduDataBlocks, out Guid? pduHeaderId)
        {
            Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : Started : LogKey[{0}] SMSCServiceId[{1}] PduDirectionType[{2}] DataBlocks[{3}]", logKey, smscServiceId, pduDirectionType, pduDataBlocks.Count);

            int resultType = 0;
            pduHeaderId = null;

            try
            {
                // Capture header fields
                long commandLength = (long) details[0].ValueUInt;

                CommandSet commandSet = CommandSet.Unknown;
                Enum.TryParse<CommandSet>(details[1].ValueUInt.ToString(), out commandSet);

                CommandStatus commandStatus = CommandStatus.Unknown;
                Enum.TryParse<CommandStatus>(details[2].ValueUInt.ToString(), out commandStatus);

                long sequenceNumber = (long) details[3].ValueUInt;

                if (connection != null)
                {
                    // Capture a database connection
                    using (DataTransaction dataTransaction = new DataTransaction(connection))
                    {
                        // Insert the header
                        pduHeaderId = PduData.Insert(dataTransaction, logKey, smscServiceId, pduDirectionType, commandLength, commandSet, commandStatus, sequenceNumber, details, pduDataBlocks);
                    }
                }

                // Write header
                Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : PDU : {0} : {1} : {2} : {3}", details[0].StartingBytePosition, details[0].Name, BitConverter.ToString(details[0].DataBlock).Replace("-", " "), commandLength);
                Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : PDU : {0} : {1} : {2} : {3}", details[1].StartingBytePosition, details[1].Name, BitConverter.ToString(details[1].DataBlock).Replace("-", " "), commandSet);
                Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : PDU : {0} : {1} : {2} : {3}", details[2].StartingBytePosition, details[2].Name, BitConverter.ToString(details[2].DataBlock).Replace("-", " "), commandStatus);
                Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : PDU : {0} : {1} : {2} : {3}", details[3].StartingBytePosition, details[3].Name, BitConverter.ToString(details[3].DataBlock).Replace("-", " "), sequenceNumber);

                // Write the details
                for (int detail = 4; detail < details.Count; ++detail)
                {
                    string dataBlock = null;
                    if (details[detail].DataBlock != null)
                    {
                        dataBlock = BitConverter.ToString(details[detail].DataBlock).Replace("-", " ");
                    }

                    string dataValue = null;
                    switch (details[detail].PduDataType)
                    {
                        case PduDataTypes.Byte:
                            dataValue = details[detail].ValueByte.ToString();
                            break;

                        case PduDataTypes.CString:
                        case PduDataTypes.EncodedString:
                            if (details[detail].ValueString != null)
                            {
                                dataValue = details[detail].ValueString;
                            }
                            break;

                        case PduDataTypes.UInt:
                            dataValue = details[detail].ValueUInt.ToString();
                            break;

                        case PduDataTypes.UShort:
                            dataValue = details[detail].ValueUShort.ToString();
                            break;

                        case PduDataTypes.ByteArray:
                            dataValue = BitConverter.ToString(details[detail].DataBlock).Replace("-", " ");
                            break;
                    }

                    Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : PDU : {0} : {1} : {2} : {3}", details[detail].StartingBytePosition, details[detail].Name, dataBlock, dataValue);
                }
            }

            catch (Exception exception)
            {
                resultType = 900000;

                Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : ERROR : {0}", exception.ToString());
            }

            Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : Completed : ResultType[{0}]", resultType);

            return resultType;
        }
Esempio n. 6
0
        /// <summary> Called to save a pdu by its property details </summary>
        /// <param name="logKey"></param>
        /// <param name="connection"></param>
        /// <param name="smscServiceId"></param>
        /// <param name="pduDirectionType"></param>
        /// <param name="details"></param>
        /// <param name="pduDataBlocks"></param>
        /// <param name="pduHeaderId"></param>
        /// <returns> ResultCodeTypes </returns>
        public static int InsertPdu(string logKey, string connection, int smscServiceId, PduDirectionTypes pduDirectionType, List <PduPropertyDetail> details, List <byte[]> pduDataBlocks, out Guid?pduHeaderId)
        {
            Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : Started : LogKey[{0}] SMSCServiceId[{1}] PduDirectionType[{2}] DataBlocks[{3}]", logKey, smscServiceId, pduDirectionType, pduDataBlocks.Count);

            int resultType = 0;

            pduHeaderId = null;

            try
            {
                // Capture header fields
                long commandLength = (long)details[0].ValueUInt;

                CommandSet commandSet = CommandSet.Unknown;
                Enum.TryParse <CommandSet>(details[1].ValueUInt.ToString(), out commandSet);

                CommandStatus commandStatus = CommandStatus.Unknown;
                Enum.TryParse <CommandStatus>(details[2].ValueUInt.ToString(), out commandStatus);

                long sequenceNumber = (long)details[3].ValueUInt;

                if (connection != null)
                {
                    // Capture a database connection
                    using (DataTransaction dataTransaction = new DataTransaction(connection))
                    {
                        // Insert the header
                        pduHeaderId = PduData.Insert(dataTransaction, logKey, smscServiceId, pduDirectionType, commandLength, commandSet, commandStatus, sequenceNumber, details, pduDataBlocks);
                    }
                }

                // Write header
                Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : PDU : {0} : {1} : {2} : {3}", details[0].StartingBytePosition, details[0].Name, BitConverter.ToString(details[0].DataBlock).Replace("-", " "), commandLength);
                Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : PDU : {0} : {1} : {2} : {3}", details[1].StartingBytePosition, details[1].Name, BitConverter.ToString(details[1].DataBlock).Replace("-", " "), commandSet);
                Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : PDU : {0} : {1} : {2} : {3}", details[2].StartingBytePosition, details[2].Name, BitConverter.ToString(details[2].DataBlock).Replace("-", " "), commandStatus);
                Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : PDU : {0} : {1} : {2} : {3}", details[3].StartingBytePosition, details[3].Name, BitConverter.ToString(details[3].DataBlock).Replace("-", " "), sequenceNumber);

                // Write the details
                for (int detail = 4; detail < details.Count; ++detail)
                {
                    string dataBlock = null;
                    if (details[detail].DataBlock != null)
                    {
                        dataBlock = BitConverter.ToString(details[detail].DataBlock).Replace("-", " ");
                    }

                    string dataValue = null;
                    switch (details[detail].PduDataType)
                    {
                    case PduDataTypes.Byte:
                        dataValue = details[detail].ValueByte.ToString();
                        break;

                    case PduDataTypes.CString:
                    case PduDataTypes.EncodedString:
                        if (details[detail].ValueString != null)
                        {
                            dataValue = details[detail].ValueString;
                        }
                        break;

                    case PduDataTypes.UInt:
                        dataValue = details[detail].ValueUInt.ToString();
                        break;

                    case PduDataTypes.UShort:
                        dataValue = details[detail].ValueUShort.ToString();
                        break;

                    case PduDataTypes.ByteArray:
                        dataValue = BitConverter.ToString(details[detail].DataBlock).Replace("-", " ");
                        break;
                    }

                    Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : PDU : {0} : {1} : {2} : {3}", details[detail].StartingBytePosition, details[detail].Name, dataBlock, dataValue);
                }
            }

            catch (Exception exception)
            {
                resultType = 900000;

                Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : ERROR : {0}", exception.ToString());
            }

            Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : Completed : ResultType[{0}]", resultType);

            return(resultType);
        }
Esempio n. 7
0
        private static Guid? PduDetailsHandler(string logKey, PduDirectionTypes pduDirectionType, Header pdu, List<PduPropertyDetail> details)
        {
            Guid? pduHeaderId = null;

            try
            {
                // Do not store these
                if ((pdu.Command == CommandSet.EnquireLink) || (pdu.Command == CommandSet.EnquireLinkResp))
                {
                    return null;
                }

                string connectionString = null; // If null InsertPdu will just log to stdout
                int serviceId = 0;              // Internal Id used to track multiple SMSC systems

                PduApp.InsertPdu(logKey, connectionString, serviceId, pduDirectionType, details, pdu.PduData.BreakIntoDataBlocks(4096), out pduHeaderId);
            }

            catch (Exception exception)
            {
                Console.WriteLine("{0}", exception.Message);
            }

            return pduHeaderId;
        }
Esempio n. 8
0
        /// <summary> Called when a pdu details are available </summary>
        /// <param name="send"></param>
        /// <param name="pduDirectionType"></param>
        /// <param name="pdu"></param>
        /// <param name="details"></param>
        /// <returns> External Id </returns>
        private Guid? ClientEventPduDetails(object send, PduDirectionTypes pduDirectionType, Header pdu, List<PduPropertyDetail> details)
        {
            Guid? externalId = null;

            if (PduDetailsEventHandler != null)
            {
                externalId = PduDetailsEventHandler(LogKey, pduDirectionType, pdu, details);
            }

            return externalId;
        }
Esempio n. 9
0
        /// <summary> Called when a pdu details are available </summary>
        /// <param name="logKey"></param>
        /// <param name="pduDirectionType"></param>
        /// <param name="pdu"></param>
        /// <param name="details"></param>
        /// <returns> External Id </returns>
        private Guid? PduDetailsConnectionHandler(string logKey, PduDirectionTypes pduDirectionType, Header pdu, List<PduPropertyDetail> details)
        {
            Guid? externalId = null;

            if (PduDetailsEventHandler != null)
            {
                externalId = PduDetailsEventHandler(logKey, pduDirectionType, pdu, details);
            }

            return externalId;
        }
Esempio n. 10
0
        /// <summary> Called to fire the pdu detail event </summary>
        /// <param name="pduDirectionType"></param>
        /// <param name="pdu"></param>
        internal void OnPduDetails(PduDirectionTypes pduDirectionType, Header pdu)
        {
            try
            {
                if (PduDetailsEvent != null)
                {
                    if (pduDirectionType == PduDirectionTypes.Sent)
                    {
                        // Build the PDU
                        pdu.PduData = new SmppBuffer(DefaultEncoding, ((IPacket) pdu).GetPDU());
                    }

                    pdu.ExternalId = PduDetailsEvent(this, pduDirectionType, pdu, ((IPduDetails) pdu).Details());
                }
            }

            catch
            {
            }
        }
Esempio n. 11
0
 private Guid?PduDetailsHandler(string logKey, PduDirectionTypes pduDirectionType, Header pdu, List <PduPropertyDetail> details)
 {
     throw new NotImplementedException();
 }
Esempio n. 12
0
        /// <summary> Called to save a pdu into the database </summary>
        /// <param name="dataTransaction"></param>
        /// <param name="logKey"></param>
        /// <param name="smscServiceId"></param>
        /// <param name="pduDirectionType"></param>
        /// <param name="commandLength"></param>
        /// <param name="commandSet"></param>
        /// <param name="commandStatus"></param>
        /// <param name="sequenceNumber"></param>
        /// <param name="details"></param>
        /// <param name="pduDataBlocks"></param>
        /// <returns> long </returns>
        public static Guid?Insert(DataTransaction dataTransaction, string logKey, int smscServiceId, PduDirectionTypes pduDirectionType, long commandLength,
                                  CommandSet commandSet, CommandStatus commandStatus, long sequenceNumber, List <PduPropertyDetail> details, List <byte[]> pduDataBlocks)
        {
            Guid?pduHeaderId = null;

            // Prepare the database call
            using (DbCommand dbCommand = dataTransaction.GetStoredProcCommand("spSMPP_Pdu_Insert"))
            {
                // Prepare the call
                dataTransaction.AddInParameterString(dbCommand, "LogKey", logKey);
                dataTransaction.AddInParameterInteger(dbCommand, "SMSCServiceID", smscServiceId);
                dataTransaction.AddInParameterShort(dbCommand, "Direction", (short)pduDirectionType);
                dataTransaction.AddInParameterLong(dbCommand, "CommandLength", commandLength);
                dataTransaction.AddInParameterString(dbCommand, "CommandId", commandSet.ToString());
                dataTransaction.AddInParameterString(dbCommand, "CommandStatusId", commandStatus.ToString());
                dataTransaction.AddInParameterLong(dbCommand, "SequenceNumber", sequenceNumber);
                dataTransaction.AddInParameterTable(dbCommand, "PduPropertyDetails", new PduPropertyDetails(details));
                dataTransaction.AddInParameterTable(dbCommand, "PduDataBlocks", new SMSCPduDataBlocks(pduDataBlocks));

                dataTransaction.AddOutParameterGuid(dbCommand, "PduHeaderId");

                dataTransaction.ExecuteNonQuery(dbCommand);

                pduHeaderId = dataTransaction.GetParameterValueGuid(dbCommand, "PduHeaderId");
            }

            return(pduHeaderId);
        }