/***************************************************************************
                Process Dummy Class
                -----------------------------------------
    begin      : 2015/05/28
	copyright  : (C) 2005 Solbox Inc.
    author     : Dev 1 Team
    email      : storage.sd@solbox.com
    version    : 3.5.0

    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 __TRANSFER_STAT_DATA__LIST_H__
#define __TRANSFER_STAT_DATA__LIST_H__  

#include <map>
#include <string.h>
#include <pthread.h>
#include "Logger.h"
#include "FimngdData.h"
#include "TransferStatData.h"

class  CTransferStatDataList
{
public:
	CTransferStatDataList();
	virtual ~CTransferStatDataList();

	///@brief TransferStatData 큐에 데이터를 삽입하는 함수.
	///@param logData [in] TransferLogData 레퍼런스.
	///@return 큐에 삽입 성공하면 true, 그렇지 않으면 false 반환.
	///        큐의 최대 크기는 100,000개이다. 
	///        그러므로 현재 큐의 크기가 100,000개이면 false를 반환한다. 
	void Push( CTransferStatData& statData );

	///@brief TransferStatData 큐에서 데이터를 얻는 함수.
	///       반환된 데이터는 큐에서 삭제된다. 
	///@param none.
	///@return TransferStatData 객체
	void Pop(CTransferStatData & data);

	///@brief TransferStatData 큐의 크기를 얻는 함수.
	///@param none.
	///@return TransferStatData 큐의 크기를 반환.
	unsigned int GetSize();

	///@brief 큐의 모든 데이터를 삭제하는 함수.
	///@param none.
	///@param none.
	void Clear();
private:

	std::map< std::string, CTransferStatData> m_TransferStatMap;

	pthread_mutex_t m_mutex;
};
 
#endif //__TRANSFER_STAT_DATA__LIST_H__ 
