/****************************************************************************
                Main.h for rc_sscd
                -----------------------------------------

    begin      : 2015/08/24
    copyright  : (C) 2005 Solbox Inc.
    author     : Dev Storage Team
    email      : huibong@solbox.com
    version    : 3.5

    CopyRight(C) 2005 Solbox Inc. All Rights reserved.
    Redistribution and use in source and binary forms, with or with out
    modification, are not permitted in outside of Solbox Inc.
*****************************************************************************/

#ifndef __RC_SSCD_MAIN_H__
#define __RC_SSCD_MAIN_H__

#include <unistd.h>
#include <stdlib.h>

#include <string>



#ifdef __cplusplus
extern "C" {
#endif
		
	/// @brief 사용 방법을 화면에 표시하기 위한 함수.
	void PrintUsage( void );

	/// @brief Version 정보를 화면에 표시하기 위한 함수
	void PrintVersion( void );
	
	/// @brief std 상에 trim 함수가 없어서 직접 구현 아니면 boost/algorithm/string.hpp 상의 boost::trim 함수 사용
	/// @param str [in/out] Trim 할 문자열을 저장한 String 참조변수.
	/// @return void
	void Trim( std::string & str );
		
	/// @brief 현재 Process가 기동중인지 여부를 판단하기 위한 함수( 프로세스 중복 실행 체크)
	/// @return 이미 해당 프로세스가 기동 중인 경우 true 반환, 그렇지 않으면 false 반환.
	bool IsCurrentProcessRun( void );	
	
	/// @brief 프로세스 종료에 따른 반복적인 종료 관련 작업을 수행하기 위한 함수.
	void ReadyToExit( void );
	
	/// @brief Main 프로세스 signal 처리 설정을 위한 함수	
	/// @return void	
	void SetSignalMain( void );
	

	/// @brief sqlite local db 생성 처리 관련 함수..
	/// @return 오류 발생시 false 반환, 그외에는 true 반환.
	bool CheckLocalDB( const char * dbPath );

	// FHS fimngd 가 전송하는 FHS 서비스별 Network 통계 정보 수신을 위한 TCP listen socket 생성	
	bool MakeServiceStatListenSocket( void );
	
	/// @brief FHS fimngd 가 전송하는 서비스 network 통계 정보 수신을 담당할 Worker 프로세스 생성.
	/// @return 생성 성공시 true, 실패시 false
	bool MakeWorkerRecvServiceStat();
		
	/// @brief Storage 통계 수집, GTS 로 통계 전송 등의 작업을 수행할 Worker 프로세스 생성.
	/// @return 생성 성공시 true, 실패시 false
	bool MakeWorkerControl();
	

#ifdef __cplusplus
}
#endif


#endif /* __RC_SSCD_MAIN_H__ */

