Example #1
0
        public void runThread()
        {
            try
            {
                /*
                 * String readLine = "";
                 *
                 * while (true)
                 * {
                 *  readLine = reader.ReadLine();
                 *  logwrite.write("AEMSReceiver runThread", readLine);
                 * }
                 * */

                logwrite.write("AEMSReceiver runThread", "\t AEMS Receiver Thread Start!!");

                int    BUFFERSIZE = sock.ReceiveBufferSize;
                byte[] buffer     = new byte[BUFFERSIZE];
                int    bytelen    = 0;
                while ((bytelen = writeStream.Read(buffer, 0, buffer.Length)) > 0)
                {
                    string message = Encoding.UTF8.GetString(buffer, 0, bytelen);
                    logwrite.write("recv", message);
                }
            }
            catch (Exception e)
            {
                if (reader != null)
                {
                    reader.Close();
                    reader = null;
                }
                if (writeStream != null)
                {
                    writeStream.Close();
                    writeStream = null;
                }
                logwrite.write("AEMSReceiver runThread", e.ToString());
            }
            finally
            {
                aemsClient.sessionClose();

                if (!aemsClient.getDisconnectReq())
                {
                    logwrite.write("AEMSReceiver runThread", "########## AEMS Session Closed !! ##########");

                    Event evt = new Event();
                    evt.setEvtCode(EVENT_TYPE.ON_DISCONNECTION);
                    evt.setEvtMsg("AEMS Session Disconnected");
                    evt.setCurAemsIP(aemsClient.getCurrentServerIP());
                    finesseObj.raiseEvent(evt);

                    if (aemsClient.reConnect() != ERRORCODE.SUCCESS)
                    {
                        // 서버 세션이 끊어지고, 재접속이 안될시 서버 프로세스가 올라올때까지 감지하는 스레드 시작한다.

                        ISocketSender aemsSender = new AEMSSender(logwrite, aemsClient);
                        ThreadStart   ts         = new ThreadStart(aemsSender.runThread);
                        Thread        thread     = new Thread(ts);
                        thread.Start();
                    }
                }
            }
        }