#include "Util.h"

#include <sys/time.h>

#define SEC_TO_MICROSEC    (1000000LL)


/// @brief  현재 시간 정보를 micro-second 단위로 계산하여 반환
/// @return 1970년 1월 1일 이후부터의 현재시간을 micro-second(1/1,000,000) 단위로 반환처리, 오류발생시에는 -1 값을 반환.
long long longtime_now()
{
	struct timeval tv;
	
	if( gettimeofday(&tv, NULL) == 0 )
	{
		// 성공시 micro-second 단위의 값을 반환
		return tv.tv_sec * SEC_TO_MICROSEC + tv.tv_usec;
	}
	else
	{
		// 실패시 -1 값을 반환.
		return -1;
	}
}

/// @brief  source string에 주어진 search string을 replacement로 변환 화여 반환
std::string stringreplace(const std::string& source, const std::string search, const std::string replacement) 
{
	std::string r = source;

	std::string::size_type pos = 0;

	while ( (pos = r.find(search, pos)) != std::string::npos ) 
	{
		r.replace( pos, search.size(), replacement );
		pos = pos + replacement.size();		
	}

	return r;
}
