Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
 // 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));
     }
 }
Esempio n. 3
0
        /// <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 }));
        }
Esempio n. 4
0
 /// <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.");
 }
Esempio n. 5
0
 /// <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));
 }