/// <summary> /// This method sends a enquire_link packet synchronously over to the peer. /// </summary> /// <param name="pdu">enquire_link packet</param> /// <returns>enquire_link_resp response</returns> public enquire_link_resp EnquireLink(enquire_link pdu) { enquire_link_resp response = null; PduSyncronizer sync = AddWaitingPdu(pdu); if (sync != null) { if (IsBound && SendPdu(pdu)) { if (sync.WaitForResponse()) { response = sync.PduResponse as enquire_link_resp; if (response == null) { response = new enquire_link_resp(pdu.SequenceNumber, sync.PduResponse.Status); } } else { response = new enquire_link_resp(pdu.SequenceNumber, StatusCodes.ESME_RINVEXPIRY); } } else { response = new enquire_link_resp(pdu.SequenceNumber, StatusCodes.ESME_RSUBMITFAIL); } FindAndRemoveWaitingPdu(pdu.SequenceNumber); } else { response = new enquire_link_resp(pdu.SequenceNumber, StatusCodes.ESME_RMSGQFUL); } return(response); }
// Used to send Enquire Link messages to SMSC every enquireLinkSeconds_ seconds private void OnEnquireLinkElapsedTimer(object source, ElapsedEventArgs e) { // Send if our session is still connected/bound if ((smppSession_.IsConnected) && (smppSession_.IsBound)) { enquire_link enquirePdu = new enquire_link(); smppSession_.BeginEnquireLink(enquirePdu, new AsyncCallback(EnquireLinkCallback)); } }
/// <summary> /// This method invokes the EnquireLink method asynchronously /// </summary> /// <param name="pdu">enquire_link PDU to send</param> /// <param name="callback">Asynch callback</param> /// <returns>IAsyncResult interface for monitoring</returns> public IAsyncResult BeginEnquireLink(enquire_link pdu, AsyncCallback callback) { AsynchCall acr = new AsynchCall(callback, this); return(acr.BeginInvoke(new EnquireLinkDelegate(EnquireLink), new object[] { pdu })); }
/// <summary> /// This processes the enquire_link PDU /// </summary> /// <param name="pdu">Protocol Data Unit being processed</param> public virtual void Process(enquire_link pdu) { throw new InvalidSmppStateException("Session is not in the proper state for a enquire_link operation."); }
/// <summary> /// This processes the enquire_link PDU /// </summary> /// <param name="pdu"></param> public override void Process(enquire_link pdu) { session_.SendPdu(new enquire_link_resp(pdu.SequenceNumber)); }