base
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
/***************************************************************************
|
||||
ftsd ( File TranSfer Daemon ) Header ( FileSender.h )
|
||||
-----------------------------------------
|
||||
begin : 2010/03/13
|
||||
copyright : (C) 2005 SolutionBox Inc.
|
||||
author : Service 1 Team
|
||||
email : svc1@solbox.com
|
||||
version : 1.0
|
||||
|
||||
CopyRight(C) 2005 SolutionBox Inc. All Rights reserved.
|
||||
Redistribution and use in source and binary forms, with or with out
|
||||
modification, are not permitted in outside of SolutionBox Inc.
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef __FILE_SENDER_H__
|
||||
#define __FILE_SENDER_H__
|
||||
|
||||
#include "Logger.h"
|
||||
#include "IPCache.h"
|
||||
#include "ProcessStatus.h"
|
||||
#include "SocketControl.h"
|
||||
#include "TargetFhsInfo.h"
|
||||
#include "FileHash.h"
|
||||
|
||||
#include <list>
|
||||
#include <map>
|
||||
|
||||
|
||||
class CFileSender
|
||||
{
|
||||
public :
|
||||
|
||||
CFileSender(CIPCache * pIpCache, CProcessStatus * pProcess, CSocketControl * pSockCtl );
|
||||
|
||||
~CFileSender();
|
||||
|
||||
bool Init( const std::string& szFileName, unsigned long long nFileSize, const std::string& szTargetTranId,
|
||||
std::vector<string>& vecTarget, int nHashLevel, bool bUseInternalIp, char command, std::string& szErrorMessage );
|
||||
|
||||
bool Start( void );
|
||||
|
||||
/// @brief 파일 전송 관련 작업을 정지시킨다.
|
||||
void Stop(void);
|
||||
|
||||
// 현재 객체를 사용할 수 있는지 여부.
|
||||
// File 관련 작업중인 경우 false, Idle 상태인 경우 true 를 반환한다.
|
||||
bool IsIdle( void ) { return !m_bProcessing; }
|
||||
|
||||
void SetThreadStart(void) { m_bProcessing = true; }
|
||||
void SetThreadEnd(void) { m_bProcessing = false; }
|
||||
|
||||
|
||||
private:
|
||||
|
||||
/// @brief FileSender Class 의 Thread Function, 파일의 전송을 담당함.
|
||||
static void * SenderThread( void * arg );
|
||||
|
||||
/// @brief 실제 파일의 전송을 처리하기 위한 함수.
|
||||
void Execute(void);
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
/// @brief 대상 FHS 정보를 설정하고 접속을 설정함.
|
||||
bool InitFhsInfo(void);
|
||||
|
||||
/// @brief 전달받은 파일 및 크기가 실제 현재 경로에 존재, 크기가 정확한지 검사하기 위한 함수.
|
||||
bool CheckFileInfo( const std::string& szFileName, unsigned long long nFileSize, std::string& szErrorMessage );
|
||||
|
||||
/// @brief 대상 FHS 로 접속 처리를 수행.
|
||||
bool ConnectTargetFhs(void);
|
||||
|
||||
/// @brief 각 FHS 로 파일 전송을 시작한다.
|
||||
bool SendFileToFhs(void);
|
||||
|
||||
/// @brief 파일에 대한 Hash 값을 생성하여 각 FHS 로 전송된 File 의 Hash 검사를 요청한다.
|
||||
bool CheckHashValue(void);
|
||||
|
||||
/// @brief 파일 Transfer 처리 결과를 Control Daemon 으로 전송처리.
|
||||
bool SendTransferResultToControl(void);
|
||||
|
||||
|
||||
private:
|
||||
|
||||
bool m_bProcessing; // 현재 CFileSender 객체가 작업 중인지 여부를 저장하기 위한 변수.
|
||||
|
||||
bool m_bThreadStop; // Thread 의 동작 정지 여부를 판단하기 위한 변수
|
||||
|
||||
|
||||
// 전역 Object 에 대한 멤버 포인터.
|
||||
CIPCache * m_pIpCache;
|
||||
CProcessStatus * m_pProcessStatus;
|
||||
|
||||
// Control Daemon 과 연결된 Socket Control Object Pointer
|
||||
CSocketControl * m_pSocketControl;
|
||||
|
||||
std::string m_szSourceFileName; // Source File Full Name
|
||||
unsigned long long m_nSourceFileSize; // Source File Size
|
||||
std::string m_szTargetTranId; // RC 간 동기화시 사용할 Target Tran ID 정보
|
||||
std::vector< string > m_vecTargetFhs; // 복제 대상 FHS 정보
|
||||
int m_nHashLevel; // Hash 검사 Level
|
||||
char m_requestType; // 명령어 정보, Replication or Cache
|
||||
bool m_bUseInternalIp; // 내부망 사용 여부.
|
||||
|
||||
// 쓰레드 핸들
|
||||
pthread_t m_threadHandle;
|
||||
|
||||
// Target FHS Handle 정보를 저장하기 위한 멤버 변수
|
||||
std::list< CTargetFhsInfo > m_listTarget;
|
||||
|
||||
int m_fhsAvailableCount;
|
||||
|
||||
std::string m_szSourceHashValue;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif /* __FILE_SENDER_H__ */
|
||||
|
||||
Reference in New Issue
Block a user