/** * 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); }
/** * 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); }
/** * 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 } } } }