Example #1
0
        /**
         * FTP Server에 데이터를 전송한다.
         * 원하는 디렉토리를 생성해서 데이터를 전송한다.
         */
        public int sendDataToFtpServer()
        {
            // 데이터 날짜 체크
            SndDataInfo.sFileInfo info = mData.lstInfo[0];
            string ftp_url             = ftpUri + ftpHost + ":" + ftpPort + "/" + m_stCode + "/" + mData.m_year + "/" + mData.m_mon + "/" + mData.m_day; // + "/" + info.s_hour;

            if (FtpDirectoryExists(ftp_url) == false)
            {
                log.Log("FTP Server[sendDataToFtpServer] : Directory create error......[" + ftp_url + "]");
                return(0);
            }

            string ftpPath = "";

            if (info.iniFile != "")
            {
                // Ini 파일 전송
                ftpPath = ftp_url + "/" + info.iniFile;   //  mData.iniFileName;
                if (sendData(ftpPath, info.iniFullName))  //  mData.iniFullFileName))
                {
                    mData.sendCount++;
                }
            }

            // rtd 파일 전송
            //foreach (SndDataInfo.sFileInfo sInfo in mData.lstInfo)
            //{
            if (info.rtdFile != "")
            {
                ftpPath = ftp_url + "/" + info.rtdFile;  //  sInfo.fileName;
                if (sendData(ftpPath, info.rtdFullName)) // sInfo.fullFileName))
                {
                    mData.sendCount++;
                }
            }
            //}
            // raw 파일 전송
            if (info.rawFile != "")
            {
                ftpPath = ftp_url + "/" + info.rawFile;   //  mData.iniFileName;
                if (sendData(ftpPath, info.rawFullName))  //  mData.iniFullFileName))
                {
                    mData.sendCount++;
                }
            }

            //log.Log("[ FtpSend ] FTP URI[sendDataToFtpServer] : " + ftpPath);

            return(mData.sendCount);
        }
Example #2
0
        /**
         * Alarm 디렉토리에서 알람 데이터를 읽어서 리스트에 담아 놓는다.
         */
        public bool almDataRead(string path)
        {
            bool   sts     = false;
            string year    = DateTime.Today.ToString("yyyy");
            string mon     = DateTime.Today.ToString("MM");
            string almPath = Path.Combine(path, year, mon);

            almPath = Path.Combine(almPath, "EOLID", "ALARM");

            // 디렉토리 내에 파일이 존재하는지 체크한다.
            if (Directory.Exists(almPath) == false)
            {
                Console.WriteLine("Directory not exist.... : {0}", almPath);
                log.Log("Directory not exist : " + almPath);
                log.Log("return false");
                //log("Directory not exist.... : " + path);
                return(false);
            }

            // 파일이 존재하면 접근가능한지 체크한다.
            DirectoryInfo dir = new DirectoryInfo(almPath);

            foreach (FileInfo fi in dir.GetFiles().OrderBy(fi => fi.CreationTime))
            {
                AlmInfo info = new AlmInfo();

                info.f_name      = fi.Name;
                info.f_full_name = fi.FullName;
                info.snd_chk     = false;
                lstAlaram.Add(info);

                sts = true;
            }

            if (lstAlaram.Count == 0)
            {
                // log("Upload data does not exists");
                return(false);
            }

            return(sts);
        }
Example #3
0
        /**
         * STA 파일에 대해서만 체크하고 파일을 전송한다.
         * STA 파일저장 데이터베이스를 따로 관리한다.
         */
        public void StaCheckProcess()
        {
            Console.WriteLine("Thread start => StaCheckProcess called....");
            // 파일이 접근, 쓸 수 있는 권한을 체크한다.
            while (!isShutdown)
            {
                if (isShutdown == false)   // debug : true
                {
                    staHandle.Reset();
                    bool old_data = false;

                    try
                    {
                        // 파일이 존재하고 접근, 쓸 수 있는 권한이 있는지 체크한다.
                        // 작성 중일 때는 대기..
                        DataProcess dataProcess = new DataProcess(this);
                        dataProcess.clear();
                        dataProcess.setMode(0);   // STA mode
                        dataProcess.setPath(m_sourcePath, m_backupPath, m_data1, m_data2);
                        dataProcess.setNetworkInfo(m_stCode, m_stHost, m_stPort, m_cstLocalPort, m_st_rcv_port, m_ft_rcv_port, m_at_rcv_port);

                        // 전송할 파일이 있는지 체크한다.
                        bool sts = dataProcess.StaHasWritePermissionOnDir(m_sourcePath);

                        if (sts == true)
                        {
                            Console.WriteLine("[ StaCheckProcess ] Write enabled....");
                            int fntCnt = 0;
                            fntCnt = dataProcess.getSendFileCount();
                            Console.WriteLine("fileCnt : " + fntCnt);

                            startProgress(0);
                            endProgress(fntCnt);

                            // 보낼 파일 개수 상태 전송
                            if (fntCnt > 0)
                            {
                                // 상태 정보 업데이트 및 상태 정보 전송 (STA 파일에 대해서 상태를 전송한다 : START)
                                bool ok = dataProcess.startStaStatusSendData();

                                if (ok)
                                {
                                    // FTP 데이터 전송
                                    ok = dataProcess.StaftpSend(FTP_URI, m_host, m_port, m_id, m_pass);
                                    log("[STA] ftp send data ok.");
                                    // 데이터 백업 처리
                                    if (ok == true)
                                    {
                                        //log("[FileMoveProcess] called....");
                                        if (dataProcess.FileStaMoveProcess(m_sourcePath) == true)
                                        {
                                            log("[STA] file move ok.");
                                            // 전송 완료 메시지 전송 및 자료 처리 완료 수신
                                            ok = dataProcess.endStatusSendData();
                                            //
                                            if (ok == true)
                                            {
                                                dataProcess.tmpSave(m_sourcePath);
                                                DateTime sd = dataProcess.getCheckDate().AddMinutes(10);  // + 10 minute
                                                if (sd < DateTime.Now)
                                                {
                                                    old_data = true;
                                                }

                                                //double span = ((DateTime.Now).Subtract(dataProcess.getCheckDate())).TotalSeconds;
                                                //if (span > (60 * 20))        // 읽은 데이터가 현재보다 20분 이전 데이터이면 오래된 데이터이므로
                                                //{
                                                //    old_data = true;
                                            }
                                            else
                                            {
                                                log("[STA] End msg send error.");
                                                old_data = true;
                                            }
                                        }
                                        else
                                        {
                                            log("[ StaCheckProcess ] File Move fail....");
                                            fsLog.Log("[ StaCheckProcess ] File Move fail....");
                                        }
                                    }
                                    else
                                    {
                                        log("FTP 데이터 전송 에러 : 로그 파일 확인 요망");
                                        fsLog.Log("FTP 데이터 전송 에러 : 로그 파일 확인 요망");
                                    }
                                }
                            }
                        }
                        else
                        {
                            Console.WriteLine("[ StaCheckProcess ] not found data...");
                            log("[ StaCheckProcess ] No job : not found data.......");
                        }
                    }
                    catch (Exception ex)
                    {
                        log("[ StaCheckProcess error ] : " + ex.ToString());
                    }
                    if (old_data == false)
                    {
                        staHandle.WaitOne(1000 * m_sta_sleep_time);  // 1 hour  => 10 minute
                    }
                    else
                    {
                        staHandle.WaitOne(1000 * 3);  // 10 second
                    }
                }
            }
        }