/****************************************************************************
                shared memory garbage client info clean thread class
                -----------------------------------------

    begin      : 2015/07/23
    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 __GARBAGE_CLEAN_THREAD_H__
#define __GARBAGE_CLEAN_THREAD_H__


#include "ShmDefine.h"
#include "ShmManager.h"

#include <pthread.h>
#include <unistd.h>


// Shared memory 상의 garbage client 정보를 확인하여 정리 작업을 수행하기 위한 Thread class
// - vmasd 종료, csagentd 의 이상 동작 등으로 인해
// - 공유메모리에 저장된 client 정보가 갱신되지 않고 오랫동안 유지되는 경우...
// - 잘못된 FHS 정보가 FHS, RCDB 상에 전달될 수 있으므로....
// - 이를 방지하기 위해 주기적으로 공유메모리의 client 정보를 확인하여... 유효하지 않은 정보는 정리 처리해 준다.
class CGarbageCleanThread
{
	public:

		// 생성 및 소멸자.
		CGarbageCleanThread( CShmManager * pShmManager );
		~CGarbageCleanThread();

		// Thread 를 생성하여 작업 수행
		bool Start( void );

		
	private:

		// 공유메모리 접근을 위한 inferface 객체 (생성자를 통해 전달받음)
		CShmManager * m_pShmManager;
		
		// 쓰레드 핸들
        pthread_t m_threadHandle;

		
		
	private:

		// Thread function....
		static void * threadFunc( void * arg );

		// 실제 작업 처리를 담당하는 함수.
		void Execute( void );

};


#endif /* __GARBAGE_CLEAN_THREAD_H__ */

