/***************************************************************************
                Util functions
                -----------------------------------------
    begin      : 2014/09/02
    copyright  : (C) 2005 Solbox Inc.
    author     : storage dev team
    email      : storage.sd@solbox.com
    version    : 3.4

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

#include <time.h>
#include <string>
#include <vector>


#ifdef __cplusplus
extern "C" {
#endif


	/// @brief  현재 시간 정보를 micro-second 단위로 계산하여 반환.
	/// @return 1970년 1월 1일 이후부터의 현재시간을 micro-second(1/1,000,000) 단위로 반환처리, 오류발생시에는 -1 값을 반환.
	long long longtime_now(void);

	/// @brief  source string에 주어진 search string을 replacement로 변환 하여 결과 반환.
	std::string stringreplace(const std::string& source, const std::string search, const std::string replacement);

	// string now time
	std::string strtime_now();

	// time_t to stirng
	std::string time_t2string(time_t rawtime);

	// string to time_t
	time_t str2time_t(std::string strtime);

	// string to microsecond
	long long str2longtime(std::string strtime);

	// Split string function
	// bUseEmpty값이 true면 delimiter의 갯수에 따라 results.size()의 숫자도 맞추기 위한 옵션
	void StringSplit(std::string str, std::string delim, std::vector<std::string> &results, bool bUseEmpty = false);

	void solusleep(unsigned long usec);
#ifdef __cplusplus
}
#endif



#endif // __UTIL_H__
