#include "rc_cmove.h" #include "Logger.h" void StringSplit(string str, string delim, vector &results, bool bUseEmpty /*= false*/) { const string strEmpty(""); string::size_type cutAt; while( (cutAt = str.find_first_of(delim)) != str.npos ) { if(cutAt > 0) { results.push_back(str.substr(0,cutAt)); } else { if(bUseEmpty && cutAt == 0) results.push_back(strEmpty); } str = str.substr(cutAt+1); } //if(str.length() > 0) { results.push_back(str); } } int StringCount(string str, string delim) { int nCount = 0; string::size_type cutAt; while((cutAt = str.find_first_of(delim)) != str.npos) { if(cutAt > 0) { nCount++; } str = str.substr(cutAt+1); } if(str.length() > 0) nCount++; return nCount; } #define USEC_PER_SEC (1000000LL) long long longtime_now() { struct timeval tv; if( gettimeofday(&tv, NULL) == 0 ) { // ¼º°ø½Ã micro-second ´ÜÀ§ÀÇ °ªÀ» ¹Ýȯ return tv.tv_sec * USEC_PER_SEC + tv.tv_usec; } else { // ½ÇÆÐ½Ã -1 °ªÀ» ¹Ýȯ. return -1; } } string strtime_now() { time_t rawtime; struct tm * timeinfo; char buffer [16] = {0}; time ( &rawtime ); timeinfo = localtime ( &rawtime ); if ( strftime (buffer,sizeof buffer, "%Y%m%d%H%M%S",timeinfo) <= 0 ) return ""; return string(buffer); } time_t str2time_t(string strtime) { struct tm tm = {0}; if( strtime == "0" ) return 0; if ( strptime (strtime.c_str(), "%Y%m%d%H%M%S", &tm) == NULL ) return -1; return mktime(&tm); } long long str2longtime(string strtime) { return str2time_t(strtime) * USEC_PER_SEC; } long GetFileSize(const char* path) { long size = -1; int flag = -1; struct stat buf; flag = stat(path, &buf); if(flag == -1) { cerr << "file not found : " << path << endl; return -1; } size = buf.st_size; #ifdef _DEBUG if(size == 0) cout << "file size zero : " << path << endl; #endif // _DEBUG return size; } string getCommand(string cmd) { string data; FILE *stream; int MAX_BUFFER = 256; char buffer[MAX_BUFFER]; cmd.append(" 2>&1"); LOG(LDEV1, "[POPNE] OPEN %s ", cmd.c_str()); stream = popen(cmd.c_str(), "r"); if (!stream) { LOG(LERR, "[POPNE] popen error. [%s] ", cmd.c_str()); return ""; } LOG(LDEV1, "[POPNE] READ %s ", cmd.c_str()); memset(buffer,0,MAX_BUFFER); while(fgets(buffer, MAX_BUFFER, stream)) { LOG(LDEV1, "[POPNE] READING.. %s|%s ", cmd.c_str(), buffer); data.append(buffer); memset(buffer,0, MAX_BUFFER); } LOG(LDEV1, "[POPNE] READ END %s ", cmd.c_str()); if (ferror(stream)) { // Handle error. LOG(LERR, "[POPNE] Handle error. [%s] ", cmd.c_str()); return ""; } pclose(stream); return data; } string StringReplace(const string& source, const string search, const string replacement) { string r = source; string::size_type pos = 0; while ( (pos = r.find(search, pos)) != string::npos ) { r.replace( pos, search.size(), replacement ); pos = pos + replacement.size(); } return r; } void solusleep(unsigned long usec) { // usleep »ç¿ë½Ã multi thread ȯ°æ¿¡¼­ block ¹ß»ý °¡´É¼ºÀÌ Á¸Àç // ÀÌ¿¡ nanosleep ÇÔ¼ö¸¦ »ç¿ëÅä·Ï ¼öÁ¤ ó¸®ÇÔ. struct timespec sleep; if (usec >= 1000000) { sleep.tv_sec = (int)(usec / 1000000); sleep.tv_nsec = (usec - ((long)sleep.tv_sec * 1000000)) * 1000; } else { sleep.tv_sec = 0; sleep.tv_nsec = usec * 1000; } nanosleep(&sleep, NULL); }