/// <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; }
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); }
/// <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); }
/// <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); }
/// <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; }
/// <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); }
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; }
/// <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; }
/// <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; }
/// <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 { } }
private Guid?PduDetailsHandler(string logKey, PduDirectionTypes pduDirectionType, Header pdu, List <PduPropertyDetail> details) { throw new NotImplementedException(); }
/// <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); }