public void Test_processICOMMessages()
        {
            ServiceRunTimeManager srtMngr = new ServiceRunTimeManager();
            ServiceListenerMembers listMem = new ServiceListenerMembers();
            listMem.siteid = "siteid1";
            listMem.listenerAddress = "10.203.232.19";

            listMem.CustomerIdFlag = "true";

            listMem.listenerPort = "12000";

            String testData = "I000CUI,TI:000000000000000000,AN:010203040,SI:013,HE:C3,ND:B4567,BD:05,TL:Mrs ,LN:Customer       ,FN:Test      ,MI:E,A1:222 Avenue St.                  ,A2:Apt#123                         ,CT:Greensburg               ,ST:PA,ZP:12345    ,HP:213 123 1234,WP:215 123 1234,AS:A,E1:ENG000102030405.00039V000CUI,0000000,TI:000000000000000000.select LastName from Subscriber where SmsTag='013010203040'CUSTOMERselect FirstName from Subscriber where SmsTag='013010203040'TEST";
            String expData = "00047V000CUI,0000000,TI:000000000000000000.";

            Assert.AreEqual(expData, srtMngr.processICOMSMessages(testData, listMem), "ICOM Message is not processed correctly");
        }
Exemplo n.º 2
0
        static void ListenForRequests(object tempObj)
        {
            logger.Info("ICOMSProvisioningService::ListenForRequests() called");

            string strIPAddress = string.Empty;
            ServiceListenerMembers templistenerMembers;
            templistenerMembers = (ServiceListenerMembers)tempObj;
            ServiceRunTimeManager objServiceMgr;
            TcpListener tcpICOMServer = new TcpListener(IPAddress.Parse(templistenerMembers.listenerAddress), Convert.ToInt32(templistenerMembers.listenerPort));
            // Start listening for client requests.

            try
            {
            tcpICOMServer.Start();
            strIPAddress = templistenerMembers.listenerAddress + ":" + templistenerMembers.listenerPort;
            int bytesRead;
            logger.Info(string.Format("The server listening at...  {0}", strIPAddress));

            // Client connection loop
            while (true)
            {
                //TcpClient tcpICOMClient;
                Socket tcpICOMSocket;
                bool isClientClosed=false;
                try
                {
                    //tcpICOMClient = tcpICOMServer.AcceptTcpClient();
                    tcpICOMSocket = tcpICOMServer.AcceptSocket();

                    string clientIP = tcpICOMSocket.RemoteEndPoint.ToString();
                    logger.Info(string.Format("Connection established: {0}", clientIP));
                    //NetworkStream clientStream = tcpICOMClient.GetStream();

                    string strRec = string.Empty;
                    string strSend = string.Empty;
                    byte[] message = new byte[4096];

                    //persistent communication loop after client connected
                    while (true)
                    {
                        bytesRead = 0;

                        try
                        {
                            //blocks until a client sends a message
                            //bytesRead = clientStream.Read(message, 0, 4096);
                            bytesRead = tcpICOMSocket.Receive(message, 0, message.Length, 0);
                            if (bytesRead == 0)
                            {
                                logger.Debug("Message length received zero closing..");
                                //the client has disconnected from the server
                                break;
                            }
                            logger.Debug("++++++++++++++++ MESSAGE PROCESS START +++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
                            TimeSpan startTS = System.DateTime.Now.TimeOfDay;
                            logger.Info(string.Format("Conversion of byte data to string from {0} at {1} progress", strIPAddress, startTS));

                            ASCIIEncoding encoder = new ASCIIEncoding();
                            strRec = encoder.GetString(message, 0, bytesRead);

                            logger.Info("Converted string data...");
                            logger.Info(string.Format("{0}", strRec));

                            // Calling Service Run Time Manager of ICOMS Provisioning service
                            objServiceMgr = new ServiceRunTimeManager();
                            strSend = objServiceMgr.processICOMSMessages(strRec, templistenerMembers);

                            ASCIIEncoding asen = new ASCIIEncoding();
                            byte[] buffer = encoder.GetBytes(strSend);
                            //clientStream.Write(buffer, 0, buffer.Length);
                            //clientStream.Flush();
                            tcpICOMSocket.Send(buffer);

                            TimeSpan endTS = System.DateTime.Now.TimeOfDay;
                            logger.Info(string.Format("Response Data to ICOMS...{0}, client={1}  Process Time={2}", strSend, clientIP, endTS.Subtract(startTS)));
                            logger.Debug("++++++++++++++++ MESSAGE PROCESS END +++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
                        }
                        catch (Exception ex)
                        {
                            logger.Warn(string.Format("Client disconnected abruptly from {0}", clientIP));
                            //clientStream.Close();
                            //tcpICOMClient.Close();
                            tcpICOMSocket.Close();
                            isClientClosed = true;
                            logger.Error(string.Format("ListenForRequests(): Exception: {0}", ex.Message.ToString()));
                            logger.Error("ICOMSProvisioningService::ListenForRequests() failing while reading data from client");
                            break;
                        }
                    }
                    /* clean up */
                    if (!isClientClosed)
                    {
                        //clientStream.Close();
                        //tcpICOMClient.Close();
                        tcpICOMSocket.Close();
                    }
                    logger.Info(string.Format("Connection closed from {0}", clientIP));
                }
                catch (Exception ex)
                {
                    logger.Error(string.Format("ListenForRequests(): Exception: {0}", ex.Message.ToString()));
                    logger.Error("ICOMSProvisioningService::ListenForRequests() failing while reading data from client");
                }

            }

            }
            catch (Exception ex)
            {
            logger.Error(string.Format("ListenForRequests(): Exception: {0}", ex.Message.ToString()));
            logger.Error("ICOMSProvisioningService::ListenForRequests() failing while start listening the server");
            }
        }