Example #1
0
        /// <summary> Constructor For ESMS mode </summary>
        /// <param name="connectionId"></param>
        /// <param name="shortLongCode"></param>
        /// <param name="connectionMode"></param>
        /// <param name="host"></param>
        /// <param name="port"></param>
        /// <param name="userName"></param>
        /// <param name="password"></param>
        /// <param name="logKey"></param>
        /// <param name="defaultEncoding"></param>
        /// <param name="connectionEventHandler"></param>
        /// <param name="receivedMessageHandler"></param>
        /// <param name="receivedGenericNackHandler"></param>
        /// <param name="submitMessageHandler"></param>
        /// <param name="queryMessageHandler"></param>
        /// <param name="logEventHandler"></param>
        /// <param name="pduDetailsEventHandler"></param>
        public ESMEConnection(int connectionId, string shortLongCode, ConnectionModes connectionMode,
                              string host, int port, string userName, string password, string logKey,
                              DataCodings defaultEncoding,
                              CONNECTION_EVENT_HANDLER connectionEventHandler,
                              RECEIVED_MESSAGE_HANDLER receivedMessageHandler,
                              RECEIVED_GENERICNACK_HANDLER receivedGenericNackHandler,
                              SUBMIT_MESSAGE_HANDLER submitMessageHandler,
                              QUERY_MESSAGE_HANDLER queryMessageHandler,
                              LOG_EVENT_HANDLER logEventHandler,
                              PDU_DETAILS_EVENT_HANDLER pduDetailsEventHandler)
        {
            // Properties
            ConnectionId = connectionId;
            ShortLongCode = shortLongCode;
            ConnectionMode = connectionMode;
            Host = host;
            Port = port;
            UserName = userName;
            Password = password;
            LogKey = string.Format("{0}-{1}-{2}", logKey, ConnectionMode, ConnectionId);

            // Bind user events
            ConnectionEventHandler = connectionEventHandler;
            ReceivedMessageHandler = receivedMessageHandler;
            ReceivedGenericNackHandler = receivedGenericNackHandler;
            SubmitMessageHandler = submitMessageHandler;
            QueryMessageHandler = queryMessageHandler;
            LogEventHandler = logEventHandler;
            PduDetailsEventHandler = pduDetailsEventHandler;

            // Create the connection to the server
            Client = new SmppClient(defaultEncoding);

            // Bind Internal ESME required events
            Client.ConnectEvent += new SmppClient.ConnectedEventHandler(ClientEventConnect);
            Client.DeliverSmEvent += new SmppClient.DeliverSmEventHandler(ClientEventDeliverSm);
            Client.DisconnectEvent += new SmppClient.DisconnectEventHandler(ClientEventDisconnect);
            Client.EnquireLinkSmEvent += new SmppClient.EnquireLinkSmEventHandler(ClientEventEnquireLinkSm);
            Client.EnquireLinkSmRespEvent += new SmppClient.EnquireLinkSmRespEventHandler(ClientEventEnquireLinkSmResp);
            Client.ErrorEvent += new SmppClient.ErrorEventHandler(ClientEventError);
            Client.GenericNackSmEvent += new SmppClient.GenericNackSmEventHandler(ClientEventGenericNackSm);
            Client.QuerySmRespEvent += new SmppClient.QuerySmRespEventHandler(ClientEventQuerySmResp);
            Client.SubmitSmRespEvent += new SmppClient.SubmitSmRespEventHandler(ClientEventSubmitSmResp);
            Client.UnBindSmEvent += new SmppClient.UnBindSmEventHandler(ClientEventUnBindSm);
            Client.PduDetailsEvent += new SmppClient.PduDetailsEventHandler(ClientEventPduDetails);

            // Start a thread to get this connection
            ConnectionThread = new Thread(new ThreadStart(PerformConnectClient));
            ConnectionThread.Start();
        }
Example #2
0
        /// <summary> Dispose </summary>
        /// <param name="disposing"></param>
        protected void Dispose(bool disposing)
        {
            WriteLog("ESMEConnection : Dispose : Started");

            if (!Disposed)
            {
                // Note disposing has begun
                Disposed = true;

                try
                {
                    WriteLog("ESMEConnection : Dispose : Info : Wait For Connection Thread To Die");

                    // Kill the PerformConnectClient thread
                    ConnectEvent.Set();
                    ConnectionThread.Join(5000);

                    WriteLog("ESMEConnection : Dispose : Info : Disconnect from smpp Started");

                    Client.Dispose();
                    Client = null;

                    WriteLog("ESMEConnection : Dispose : Info : Disconnect from smpp Completed");
                }

                catch (Exception exception)
                {
                    WriteLog(LogEventNotificationTypes.Email, "ESMEConnection : Dispose : ERROR : {0}", exception.ToString());
                }

                // Kill the PerformConnectClient thread
                ConnectEvent.Set();
            }

            WriteLog("ESMEConnection : Dispose : Completed");
        }