Changeset 26 in libcf
- Timestamp:
- 02/04/13 17:00:53 (11 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/cf_base.h
r11 r26 1 1 /** 2 * cf_base.h 2 * @file cf_base.h 3 * @author myusgun <myusgun@gmail.com> 4 * @version 0.1 3 5 */ 4 6 #ifndef __CF_BASE_H__ 5 7 #define __CF_BASE_H__ 6 8 9 /** boolean 타입 */ 7 10 typedef enum { 8 CF_FALSE = 0, 9 CF_TRUE = 1 10 } E_CF_BOOL, CF_BOOL; 11 CF_FALSE = 0, /**< 거짓 */ 12 CF_TRUE = 1 /**< 참 */ 13 } E_CF_BOOL, 14 /** 15 * boolean 타입 16 * @see E_CF_BOOL 17 */ 18 CF_BOOL; 11 19 20 /** 성공 시, 반환 값 */ 12 21 #define CF_OK 0 22 /** 오류 코드 */ 13 23 #define CF_ERROR -1 14 24 25 /** 파일 이름 및 경로 길이 */ 15 26 #define NAME_LENGTH 128 16 27 28 /** 오류 코드 베이스 넘버 */ 17 29 #define CF_ERROR_BASE CF_ERROR * 1000 18 30 /** @see cf_file.h */ 19 31 #define CF_ERROR_FILE CF_ERROR_BASE * 2 32 /** @see cf_socket.h */ 20 33 #define CF_ERROR_SOCKET CF_ERROR_BASE * 3 34 /** @see cf_thread.h */ 21 35 #define CF_ERROR_THREAD CF_ERROR_BASE * 4 36 /** @see cf_thread.h */ 22 37 #define CF_ERROR_MUTEX CF_ERROR_BASE * 5 38 /** @see cf_debug.h */ 23 39 #define CF_ERROR_DEBUG CF_ERROR_BASE * 6 40 /** @see cf_log.h */ 24 41 #define CF_ERROR_LOG CF_ERROR_BASE * 7 25 42 43 /** Windows 에서의 함수 EXPORT 구문 정의 */ 26 44 #ifdef _WIN32 27 45 # define CF_EXPORT __declspec(dllexport) -
trunk/include/cf_debug.h
r25 r26 1 1 /** 2 * cf_debug.h 2 * @file cf_debug.h 3 * @author myusgun <myusgun@gmail.com> 4 * @version 0.1 5 * 6 * @remark 7 * 디버그 함수를 직접 호출하지 않고 정의된 매크로를 사용하면, 8 * Preprocessor에 _DEBUG가 정의되어 있는 경우에 만 9 * 디버그 코드가 동작하도록 할 수 있음 <br /> 10 * 디버그 메시지는 stdout 및 stderr를 이용한 파일 포인터 출력을 지원하고, 11 * 환경에 적합하도록 사용자가 구성한 컨텍스트를 이용하여 사용할 수도 있음 <br /> 12 * (단, 콜스택의 푸시/팝은 컨텍스트를 이용해야만 사용 가능) 3 13 */ 4 14 #ifndef __CF_DEBUG_H__ … … 9 19 #include <stdio.h> 10 20 21 /** 잘못된 컨텍스트 오류 */ 11 22 #define CF_ERROR_DEBUG_INVALID_CTX CF_ERROR_DEBUG - 1 23 24 /** 디버그 메시지 출력을 위한 파일 포인터 설정 오류 */ 12 25 #define CF_ERROR_DEBUG_SET_OUTPUT_FD CF_ERROR_DEBUG - 2 26 27 /** 콜스택 푸시 오류 */ 13 28 #define CF_ERROR_DEBUG_PUSH_CALLSTACK CF_ERROR_DEBUG - 3 29 30 /** 콜스택 팝 오류 */ 14 31 #define CF_ERROR_DEBUG_POP_CALLSTACK CF_ERROR_DEBUG - 4 15 32 33 /** Windows 함수 이름 매크로 재정의 */ 16 34 #ifdef _WIN32 17 35 # define __func__ __FUNCTION__ … … 19 37 20 38 #ifdef _DEBUG 39 /** 40 * 디버그 컨텍스트 생성 41 * 42 * @see CF_Debug_CreateCtx 43 */ 21 44 # define CF_DEBUG_CREATE_CTX() \ 22 45 CF_Debug_CreateCtx () 23 46 47 /** 48 * 디버그 컨텍스트 해제 49 * 50 * @param __ctx 디버그 컨텍스트 51 * 52 * @see CF_Debug_DestroyCtx 53 */ 24 54 # define CF_DEBUG_DESTROY_CTX(__ctx) \ 25 55 CF_Debug_DestroyCtx (__ctx) 26 56 27 # define CF_UPDATE_CTX(__ctx) \ 28 CF_Debug_UpdateCtx (__ctx,__FILE__,__func__,__LINE__) 29 57 /** 58 * 디버그 메시지를 지정된 파일 포인터로 출력 59 * 60 * @param __fp 파일 포인터. 표준출력(stdout) 및 표준오류(stderr) 사용 가능 61 * @param __fmt 포맷 스트링 62 * @param ... 가변 인자 63 * 64 * @see CF_Debug_Print 65 */ 30 66 # define CF_DEBUG_PRINT(__fp,__fmt,...) \ 31 67 CF_Debug_Print (__fp,__FILE__,__func__,__LINE__,__fmt,##__VA_ARGS__) 32 68 69 /** 70 * 바이너리 데이터를 디버그 메시지와 함께 지정된 파일 포인터로 출력 71 * 72 * @param __fp 파일 포인터. 표준출력(stdout) 및 표준오류(stderr) 사용 가능 73 * @param __bin 바이너리 데이터 74 * @param __len 바이너리 길이 75 * @param __fmt 포맷 스트링 76 * @param ... 가변 인자 77 * 78 * @see CF_Debug_PrintBin 79 */ 33 80 # define CF_DEBUG_PRINT_BIN(__fp,__bin,__len,__fmt,...) \ 34 81 CF_Debug_PrintBin (__fp,__FILE__,__func__,__LINE__,__bin,__len,__fmt,##__VA_ARGS__) 35 82 83 /** 84 * 컨텍스트를 업데이트하고 디버그 메시지를 출력 85 * 86 * @param __ctx 디버그 컨텍스트 87 * @param __fmt 포맷 스트링 88 * @param ... 가변 인자 89 * 90 * @see CF_DEBUG_UPDATE_CTX, CF_Debug_Trace 91 */ 36 92 # define CF_DEBUG_TRACE(__ctx,__fmt,...) \ 37 do { \ 38 CF_UPDATE_CTX (__ctx); \ 39 CF_Debug_Trace (__ctx,__fmt,##__VA_ARGS__); \ 40 } while (0) 41 93 CF_Debug_Trace (__ctx,__FILE__,__func__,__LINE__,__fmt,##__VA_ARGS__) 94 95 /** 96 * 컨텍스트를 업데이트하고 바이너리 데이터를 디버그 메시지와 함께 출력 97 * 98 * @param __ctx 디버그 컨텍스트 99 * @param __bin 바이너리 데이터 100 * @param __len 바이너리 길이 101 * @param __fmt 포맷 스트링 102 * @param ... 가변 인자 103 * 104 * @see CF_DEBUG_UPDATE_CTX, CF_Debug_TraceBin 105 */ 42 106 # define CF_DEBUG_TRACE_BIN(__ctx,__bin,__len,__fmt,...) \ 43 do { \ 44 CF_UPDATE_CTX (__ctx); \ 45 CF_Debug_TraceBin (__ctx,__bin,__len,__fmt,##__VA_ARGS__); \ 46 } while (0) 47 107 CF_Debug_TraceBin (__ctx,__FILE__,__func__,__LINE__,__bin,__len,__fmt,##__VA_ARGS__) 108 109 /** 110 * 컨텍스트에 콜스택 푸시 111 * 112 * @param __ctx 디버그 컨텍스트 113 * 114 * @see CF_Debug_CallStackPush 115 */ 48 116 # define CF_DEBUG_CALLSTACK_PUSH(__ctx) \ 49 117 CF_Debug_CallStackPush (__ctx,__FILE__,__func__,__LINE__) 50 118 51 # define CF_DEBUG_CALLSTACK_POP \ 52 CF_Debug_CallStackPop 119 /** 120 * 컨텍스트에서 콜스택 팝 121 * 122 * @param __ctx 디버그 컨텍스트 123 * @param __callstack 콜스택 정보를 가져올 콜스택 데이터 구조체 포인터 124 * 125 * @see CF_Debug_CallStackPop, CF_Debug_CallStack 126 */ 127 # define CF_DEBUG_CALLSTACK_POP(__ctx,__callstack) \ 128 CF_Debug_CallStackPop (__ctx,__callstack) 53 129 #else // #ifdef _DEBUG 54 130 # define CF_DEBUG_CREATE_CTX() NULL 55 131 # define CF_DEBUG_DESTROY_CTX(__ctx) 56 # define CF_ UPDATE_CTX(__ctx)132 # define CF_DEBUG_UPDATE_CTX(__ctx) 57 133 # define CF_DEBUG_PRINT(__fp,__fmt,...) 58 134 # define CF_DEBUG_PRINT_BIN(__fp,__bin,__len,__fmt,...) … … 63 139 #endif // #ifdef _DEBUG 64 140 141 /** 디버그 컨텍스트 */ 65 142 typedef void * CF_Debug_Ctx; 143 144 /** 콜스택 데이터 */ 66 145 typedef struct cf_debug_callStack { 67 char file[NAME_LENGTH + 1]; 68 char function[NAME_LENGTH + 1]; 69 int line; 146 char file[NAME_LENGTH + 1]; /**< 파일 이름 */ 147 char function[NAME_LENGTH + 1]; /**< 함수 이름 */ 148 int line; /**< 라인 넘버 */ 70 149 } CF_Debug_CallStack; 71 150 … … 74 153 #endif 75 154 155 /** 156 * 디버그 컨텍스트를 생성 157 * 158 * @return 성공 시, CF_Debug_Ctx 형태의 컨텍스트; 실패 시, NULL 159 * @see CF_DEBUG_CREATE_CTX 160 */ 76 161 CF_EXPORT CF_Debug_Ctx 77 162 CF_Debug_CreateCtx (void); 78 163 164 /** 165 * 디버그 컨텍스트를 해제 166 * 167 * @return 성공 시, CF_OK; 실패 시, 오류 코드 168 * 169 * @param ctx 디버그 컨텍스트 170 * 171 * @see CF_DEBUG_DESTROY_CTX 172 */ 79 173 CF_EXPORT int 80 174 CF_Debug_DestroyCtx (CF_Debug_Ctx ctx); 81 175 176 /** 177 * 디버그 컨텍스트에 출력할 파일 디스크립터를 설정 178 * 179 * @return 성공 시, CF_OK; 실패 시, 오류 코드 180 * 181 * @param ctx 디버그 컨텍스트 182 * @param fd 파일 디스크립터 183 * 184 * @see CF_File_Open, CF_File_Create 185 */ 82 186 CF_EXPORT int 83 187 CF_Debug_SetOutputFD (CF_Debug_Ctx ctx, 84 188 int fd); 85 189 190 /** 191 * 디버그 메시지를 지정된 파일 포인터로 출력 192 * 193 * @return 성공 시, CF_OK; 실패 시, 오류 코드 194 * 195 * @param fp 파일 포인터. 표준출력(stdout) 및 표준오류(stderr) 사용 가능 196 * @param file 파일 경로 197 * @param func 함수 이름 198 * @param line 라인 넘버 199 * @param fmt 포맷 스트링 200 * @param ... 가변 인자 201 * 202 * @see CF_DEBUG_PRINT 203 */ 86 204 CF_EXPORT int 87 205 CF_Debug_Print (FILE * fp, … … 91 209 const char * fmt, ...); 92 210 93 int 211 /** 212 * 바이너리 데이터를 디버그 메시지와 함께 지정된 파일 포인터로 출력 213 * 214 * @return CF_OK 반환 215 * 216 * @param fp 파일 포인터. 표준출력(stdout) 및 표준오류(stderr) 사용 가능 217 * @param file 파일 경로 218 * @param func 함수 이름 219 * @param line 라인 넘버 220 * @param bin 라인 넘버 221 * @param len 바이너리 길이 222 * @param fmt 포맷 스트링 223 * @param ... 가변 인자 224 * 225 * @see CF_DEBUG_PRINT_BIN 226 */ 227 CF_EXPORT int 94 228 CF_Debug_PrintBin (FILE * fp, 95 229 const char * file, … … 100 234 const char * fmt, ...); 101 235 102 CF_EXPORT int 103 CF_Debug_UpdateCtx (CF_Debug_Ctx ctx, 104 const char * file, 105 const char * func, 106 const int line); 107 236 /** 237 * 컨텍스트를 업데이트하고 디버그 메시지를 출력 238 * 239 * @return CF_OK 반환 240 * 241 * @param ctx 디버그 컨텍스트 242 * @param fmt 포맷 스트링 243 * @param ... 가변 인자 244 * 245 * @see CF_DEBUG_UPDATE_CTX, CF_Debug_Trace 246 */ 108 247 CF_EXPORT int 109 248 CF_Debug_Trace (CF_Debug_Ctx ctx, 110 249 const char * fmt, ...); 111 250 251 /** 252 * 컨텍스트를 업데이트하고 바이너리 데이터를 디버그 메시지와 함께 출력 253 * 254 * @return 성공 시, CF_OK; 실패 시, 오류 코드 255 * 256 * @param ctx 디버그 컨텍스트 257 * @param bin 바이너리 데이터 258 * @param len 바이너리 길이 259 * @param fmt 포맷 스트링 260 * @param ... 가변 인자 261 * 262 * @see CF_DEBUG_UPDATE_CTX, CF_DEBUG_TRACE_BIN 263 */ 112 264 CF_EXPORT int 113 265 CF_Debug_TraceBin (CF_Debug_Ctx ctx, … … 116 268 const char * fmt, ...); 117 269 270 /** 271 * 컨텍스트에 콜스택 푸시 272 * 273 * @return 성공 시, CF_OK; 실패 시, 오류 코드 274 * 275 * @param ctx 디버그 컨텍스트 276 * @param file 파일 경로 277 * @param func 함수 이름 278 * @param line 라인 넘버 279 * 280 * @see CF_DEBUG_CALLSTACK_PUSH 281 */ 118 282 CF_EXPORT int 119 283 CF_Debug_CallStackPush (CF_Debug_Ctx ctx, … … 122 286 const int line); 123 287 288 /** 289 * 컨텍스트에서 콜스택 팝 290 * 291 * @return 성공 시, CF_OK; 실패 시, 오류 코드 292 * 293 * @param ctx 디버그 컨텍스트 294 * @param callstack 콜스택 정보를 가져올 콜스택 데이터 구조체 포인터 295 * 296 * @see CF_Debug_CallStackPop, CF_Debug_CallStack 297 */ 124 298 CF_EXPORT int 125 299 CF_Debug_CallStackPop (CF_Debug_Ctx ctx, -
trunk/include/cf_file.h
r17 r26 1 1 /** 2 * cf_file.h 2 * @file cf_file.h 3 * @author myusgun <myusgun@gmail.com> 4 * @version 0.1 3 5 */ 4 6 #ifndef __CF_FILE_H__ … … 16 18 #define CF_ERROR_FILE_GET_SIZE CF_ERROR_FILE - 7 17 19 18 typedef enum{ 19 CF_FILE_RO = O_RDONLY, 20 CF_FILE_WO = O_WRONLY, 21 CF_FILE_WR = O_RDWR, 22 CF_FILE_CR = O_CREAT, 23 CF_FILE_TR = O_TRUNC, 24 CF_FILE_AP = O_APPEND 20 /** 파일 열기 옵션 플래그 */ 21 typedef enum { 22 CF_FILE_RO = O_RDONLY, /**< 읽기 전용 */ 23 CF_FILE_WO = O_WRONLY, /**< 쓰기 전용 */ 24 CF_FILE_WR = O_RDWR, /**< 읽기/쓰기 */ 25 CF_FILE_CR = O_CREAT, /**< 파일이 존재하지 않으면 생성 */ 26 CF_FILE_TR = O_TRUNC, /**< 파일이 존재하면 비우기 */ 27 CF_FILE_AP = O_APPEND /**< 파일이 존재하면 이어서 쓰기 */ 25 28 } E_CF_FILE_FLAG, CF_FILE_FLAG; 26 29 … … 29 32 #endif 30 33 34 /** 35 * 파일 열기 36 * 37 * @return 성공 시, 파일 디스크립터; 실패 시, 오류 코드 38 * 39 * @param path 파일 경로 40 * @param flag 파일 열기 플래그 41 * 42 * @see CF_FILE_FLAG 43 */ 31 44 CF_EXPORT int 32 45 CF_File_Open (const char * path, 33 46 const CF_FILE_FLAG flag); 34 47 48 /** 49 * 파일 닫기 50 * 51 * @return 성공 시, CF_OK; 실패 시, 오류 코드 52 * 53 * @param fd 파일 디스크립터 54 */ 35 55 CF_EXPORT int 36 CF_File_Close (const int 56 CF_File_Close (const int fd); 37 57 58 /** 59 * 파일 생성 60 * 61 * @return 성공 시, 파일 디스크립터; 실패 시, 오류 코드 62 * 63 * @param path 파일 경로 64 */ 38 65 CF_EXPORT int 39 66 CF_File_Create (const char * path); 40 67 68 /** 69 * 파일 읽기 70 * 71 * @return 성공 시, 읽은 바이트 수; 실패 시, 오류 코드 72 * 73 * @param fd 파일 디스크립터 74 * @param buf 데이터를 저장할 메모리 75 * @param len 데이터를 저장할 메모리의 크기 76 */ 41 77 CF_EXPORT int 42 78 CF_File_Read (const int fd, … … 44 80 const size_t len); 45 81 82 /** 83 * 파일 쓰기 84 * 85 * @return 성공 시, CF_OK; 실패 시, 오류 코드 86 * 87 * @param fd 파일 디스크립터 88 * @param buf 데이터가 저장된 메모리 89 * @param len 쓸 데이터의 길이 90 */ 46 91 CF_EXPORT int 47 92 CF_File_Write (const int fd, … … 49 94 const size_t len); 50 95 96 /** 97 * 파일 크기 얻기 98 * 99 * @return 성공 시, 파일 크기; 실패 시, 오류 코드 100 * 101 * @param fd 파일 디스크립터 102 */ 51 103 CF_EXPORT int 52 104 CF_File_GetSize (const int fd); -
trunk/include/cf_log.h
r23 r26 1 1 /** 2 * cf_log.h 2 * @file cf_log.h 3 * @author myusgun <myusgun@gmail.com> 4 * @version 0.1 3 5 */ 4 6 #ifndef __CF_LOG_H__ … … 19 21 #define CF_ERROR_LOG_NOT_INITIALIZE CF_ERROR_LOG - 11 20 22 23 /** 24 * 로그의 버퍼 크기를 기본 값으로 설정 25 * 26 * @see CF_Log_CreateCtx, CF_LOG_OPEN 27 */ 21 28 #define CF_LOG_BUFFER_DEFAULT -1 29 30 /** 로그 기록 시 버퍼를 사용하지 않고 즉시 기록 31 * 32 * @see CF_Log_CreateCtx, CF_LOG_OPEN, CF_Log_Initialize 33 */ 22 34 #define CF_LOG_BUFFER_NO 0 23 35 36 /** 37 * 로그에 아이디 넘버를 부여하여 생성 <br /> 38 * 로그 기록 시, 아이디 넘버를 사용하면 해당 로그로 기록할 수 있음 39 * 40 * @param __id 부여할 아이디 넘버 41 * @param __file 로그 파일 경로 42 * @param __memsize 로그 버퍼 크기 43 * 44 * @see CF_Log_MapCtxID 45 */ 24 46 #define CF_LOG_OPEN(__id,__file,__memsize) \ 25 47 CF_Log_MapCtxID (__id, CF_Log_CreateCtx (__file, __memsize)) 26 48 49 /** 50 * 아이디 넘버에 해당하는 로그에 쓰기 51 * 52 * @param __id 로그의 아이디 넘버 53 * @param __pf 로그의 프리픽스 문자열 54 * @param __fmt 포맷 스트링 55 * @param ... 가변 인자 56 * 57 * @see CF_Log_GetMappedCtx 58 */ 27 59 #define CF_LOG_WRITE(__id,__pf,__fmt,...) \ 28 60 CF_Log_Write (CF_Log_GetMappedCtx (__id),__pf,__fmt,##__VA_ARGS__) 29 61 30 #define CF_LOG_CLOSE CF_Log_UnmapCtxID 31 62 /** 63 * 아이디 넘버에 해당하는 로그를 닫고 해제 64 * 65 * @param __id 로그의 아이디 넘버 66 * 67 * @see CF_Log_UnmapCtxID 68 */ 69 #define CF_LOG_CLOSE(__id) CF_Log_UnmapCtxID (__id) 70 71 /** 로그 컨텍스트 */ 32 72 typedef void * CF_Log_Ctx; 33 73 … … 36 76 #endif 37 77 78 /** 79 * 로그를 사용하기 위해 초기화 80 * 81 * @return 성공 시, CF_OK; 실패 시, 오류 코드 82 * 83 * @param logPool 아이디 넘버 최대 값 84 */ 38 85 CF_EXPORT int 39 86 CF_Log_Initialize (const int logPool); 40 87 88 /** 89 * 로그가 모두 사용된 후 자원 해제 90 * 91 * @return CF_OK 반환 92 */ 41 93 CF_EXPORT int 42 94 CF_Log_Finalize (void); 43 95 96 /** 97 * 로그 컨텍스트 생성 98 * 99 * @return 성공 시, 로그 컨텍스트; 실패 시, NULL 100 * 101 * @param path 로그 파일 경로 102 * @param memsize 로그 버퍼 크기 103 * 104 * @see CF_LOG_BUFFER_DEFAULT, CF_LOG_BUFFER_NO 105 */ 44 106 CF_EXPORT CF_Log_Ctx 45 107 CF_Log_CreateCtx (const char * path, 46 108 const int memsize); 47 109 110 /** 111 * 로그 컨텍스트 해제 112 * 113 * @return 성공 시, CF_OK; 실패 시, 오류 코드 114 * 115 * @param ctx 로그 컨텍스트 116 */ 48 117 CF_EXPORT int 49 118 CF_Log_DestroyCtx (CF_Log_Ctx ctx); 50 119 120 /** 121 * 로그 컨텍스트에 멀티쓰레드 모드 설정 122 * 123 * @return 성공 시, CF_OK; 실패 시, 오류 코드 124 * 125 * @param ctx 로그 컨텍스트 126 */ 51 127 CF_EXPORT int 52 128 CF_Log_SetMultiThread (CF_Log_Ctx ctx); 53 129 130 /** 131 * 로그 컨텍스트에 멀티쓰레드 모드 설정 해제 132 * 133 * @return 성공 시, CF_OK; 실패 시, 오류 코드 134 * 135 * @param ctx 로그 컨텍스트 136 */ 54 137 CF_EXPORT int 55 138 CF_Log_UnsetMultiThread (CF_Log_Ctx ctx); 56 139 140 /** 141 * 로그 컨텍스트에 따라 로그 쓰기 142 * 143 * @return 성공 시, CF_OK; 실패 시, 오류 코드 144 * 145 * @param ctx 로그 컨텍스트 146 * @param prefix 로그의 프리픽스 문자열 147 * @param fmt 포맷 스트링 148 * @param ... 가변 인자 149 */ 57 150 CF_EXPORT int 58 151 CF_Log_Write (CF_Log_Ctx ctx, … … 60 153 const char * fmt, ...); 61 154 155 /** 156 * 로그 버퍼의 데이터를 즉시 로그 파일에 쓰기 157 * 158 * @return 성공 시, CF_OK; 실패 시, 오류 코드 159 * 160 * @param ctx 로그 컨텍스트 161 */ 62 162 CF_EXPORT int 63 163 CF_Log_Flush (CF_Log_Ctx ctx); 64 164 165 /** 166 * 로그 컨텍스트에 아이디 넘버 할당<br /> 167 * 로그 기록 시, 아이디 넘버를 사용하면 해당 로그로 기록할 수 있음 168 * 169 * @return 성공 시, CF_OK; 실패 시, 오류 코드 170 * 171 * @param mapid 부여할 아이디 넘버 172 * @param ctx 로그 컨텍스트 173 * 174 * @remark 반드시 먼저 초기화 해야하며, 초기화 시에 주어진 번호보다 작은 아이디 넘버를 사용해야 함 175 * 176 * @see CF_LOG_OPEN, CF_Log_CreateCtx 177 */ 65 178 CF_EXPORT int 66 179 CF_Log_MapCtxID (const int mapid, 67 180 const CF_Log_Ctx ctx); 68 181 182 /** 183 * 아이디 넘버에 해당하는 로그를 닫고 해당하는 컨텍스트를 해제 184 * 185 * @return 성공 시, CF_OK; 실패 시, 오류 코드 186 * 187 * @param mapid 로그의 아이디 넘버 188 * 189 * @remark 아이디 넘버에 해당하는 컨텍스트가 해제되므로 주의 190 * 191 * @see CF_LOG_CLOSE, CF_Log_DestroyCtx 192 */ 69 193 CF_EXPORT int 70 194 CF_Log_UnmapCtxID (const int mapid); 71 195 196 /** 197 * 아이디 넘버에 해당하는 로그 컨텍스트를 얻기 198 * 199 * @return 성공 시, 로그 컨텍스트; 실패 시, NULL 200 * 201 * @param mapid 로그의 아이디 넘버 202 */ 72 203 CF_EXPORT CF_Log_Ctx 73 204 CF_Log_GetMappedCtx (const int mapid); -
trunk/include/cf_socket.h
r21 r26 1 1 /** 2 * cf_socket.h 2 * @file cf_socket.h 3 * @author myusgun <myusgun@gmail.com> 4 * @version 0.1 5 6 * @remark TCP 소켓만 지원됨 3 7 */ 4 8 #ifndef __CF_SOCKET_H__ … … 44 48 #endif 45 49 50 /** 51 * 소켓이 초기화 상태 확인 52 * 53 * @return 초기화 된 경우, CF_TRUE; 그렇지 않은 경우, CF_FALSE 54 */ 46 55 CF_EXPORT CF_BOOL 47 56 CF_Socket_IsInitialized (void); 48 57 58 /** 59 * 소켓 초기화 60 * 61 * @return 성공 시, CF_OK; 실패 시, 오류 코드 62 */ 49 63 CF_EXPORT int 50 64 CF_Socket_Initialize (void); 51 65 66 /** 67 * 소켓 해제 68 * 69 * @return 성공 시, CF_OK; 실패 시, 오류 코드 70 */ 52 71 CF_EXPORT int 53 72 CF_Socket_Finalize (void); 54 73 74 /** 75 * 소켓 닫기 76 * 77 * @return 성공 시, CF_OK; 실패 시, 오류 코드 78 * 79 * @param sock 소켓 80 */ 55 81 CF_EXPORT int 56 82 CF_Socket_Close (const int sock); 57 83 84 /** 85 * 소켓 옵션 설정 86 * 87 * @return 성공 시 CF_OK; 실패 시, 오류 코드 88 * 89 * @param sock 소켓 90 * @param optname 옵션 이름 91 * @param optval 설정할 옵션 값의 메모리 92 * @param optlen 설정할 옵션의 길이 93 */ 58 94 CF_EXPORT int 59 95 CF_Socket_SetOption (const int sock, … … 62 98 const size_t optlen); 63 99 100 /** 101 * 소켓 옵션 얻기 102 * 103 * @return 성공 시 CF_OK; 실패 시, 오류 코드 104 * 105 * @param sock 소켓 106 * @param optname 옵션 이름 107 * @param optval 옵션 값을 가져올 메모리 108 * @param optlen 옵션 길이를 가져올 메모리 109 */ 64 110 CF_EXPORT int 65 111 CF_Socket_GetOption (const int sock, … … 68 114 size_t * optlen); 69 115 116 /** 117 * 소켓에 타임아웃 설정 118 * 119 * @return 성공 시 CF_OK; 실패 시, 오류 코드 120 * 121 * @param sock 소켓 122 * @param timeout 타임아웃(sec) 123 */ 70 124 CF_EXPORT int 71 125 CF_Socket_SetTimeout (const int sock, 72 126 const int timeout); 73 127 128 /** 129 * 소켓 연결 130 * 131 * @return 성공 시, 연결된 소켓; 실패 시, 오류 코드 132 * 133 * @param ip 연결할 호스트의 주소 (도메인 이름 가능) 134 * @param port 연결할 호스트의 포트번호 135 */ 74 136 CF_EXPORT int 75 137 CF_Socket_Connect (const char * ip, 76 138 const unsigned short port); 77 139 140 /** 141 * 서버 열기 142 * 143 * @return 성공 시, 서버 소켓; 실패 시, 오류 코드 144 * 145 * @param port 서버 포트 146 * @param backlog listen 시의 backlog 수 147 */ 78 148 CF_EXPORT int 79 149 CF_Socket_Server (const unsigned short port, 80 150 const int backlog); 81 151 152 /** 153 * 소켓 연결 154 * 155 * @return 성공 시, 연결된 소켓; 실패 시, 오류 코드 156 * 157 * @param sock 서버 소켓 158 * @param address [옵션] 클라이언트 정보를 담을 sockaddr_in 구조체 포인터 159 */ 82 160 CF_EXPORT int 83 161 CF_Socket_Accept (const int sock, 84 162 struct sockaddr_in * address); 85 163 164 /** 165 * 데이터 송신 166 * 167 * @return 성공 시, CF_OK; 실패 시, 오류 코드 168 * 169 * @param sock 소켓 170 * @param buf 송신할 데이터 171 * @param len 송신할 데이터의 길이 172 */ 86 173 CF_EXPORT int 87 174 CF_Socket_Send (const int sock, … … 89 176 const int len); 90 177 178 /** 179 * 데이터 수신 180 * 181 * @return 성공 시, 수신한 데이터의 길이; 실패 시, 오류 코드 182 * 183 * @param sock 소켓 184 * @param buf 데이터를 수신할 버퍼 185 * @param len 데이터를 수신할 버퍼의 최대 크기 186 */ 91 187 CF_EXPORT int 92 188 CF_Socket_Recv (const int sock, -
trunk/include/cf_thread.h
r6 r26 1 1 /** 2 * cf_thread.h 2 * @file cf_thread.h 3 * @author myusgun <myusgun@gmail.com> 4 * @version 0.1 5 * 6 * @remark 멀티스레드 및 뮤텍스 지원 3 7 */ 4 8 #ifndef __CF_THREAD_H__ … … 14 18 15 19 #ifdef _WIN32 16 //# include <stddef.h> 17 # define CF_THREAD_RETURN unsigned int 18 # define CF_THREAD_CALL __stdcall 20 # define CF_THREAD_RETURN unsigned int /**< 스레드 워커 함수 반환 형 */ 21 # define CF_THREAD_CALL __stdcall /**< 스레드 워커 함수 호출 규약 */ 19 22 #else // #ifdef _WIN32 20 # define CF_THREAD_RETURN void * 21 # define CF_THREAD_CALL 23 # define CF_THREAD_RETURN void * /**< 스레드 워커 함수 반환 형 */ 24 # define CF_THREAD_CALL /**< 스레드 워커 함수 호출 규약 */ 22 25 #endif // #ifdef _WIN32 23 26 27 /** 스레드 워커 함수 형태이며, CF_Thread_Function 형식 */ 24 28 typedef CF_THREAD_RETURN (CF_THREAD_CALL * CF_Thread_Function) (void *); 25 29 30 /** 스레드 아이디 */ 26 31 typedef void * CF_Thread; 32 33 /** 뮤텍스 아이디 */ 27 34 typedef void * CF_Mutex; 28 35 … … 31 38 #endif 32 39 40 /** 41 * 스레드를 생성 42 * 43 * @return 성공 시, CF_OK; 실패 시, 오류 코드 44 * 45 * @param threadID 스레드 아이디 주소 46 * @param callback 스레드 워커 함수 이름 47 * @param arg 스레드 함수로 전달할 인자 48 * 49 * @code 50 51 #include "cf_thread.h" 52 53 CF_Mutex globalMutex; 54 55 CF_THREAD_RETURN CF_THREAD_CALL worker (void * arg) { 56 if (CF_Mutex_Create (&globalMutex) < 0) { 57 // error 58 } 59 60 if (CF_Mutex_Lock (&globalMutex) < 0) { // for critical section 61 // error 62 } 63 64 // critical section 65 66 if (CF_Mutex_Unlock (&globalMutex) < 0) { // for critical section 67 // error 68 } 69 70 if (CF_Mutex_Destory (&globalMutex) < 0) { 71 // error 72 } 73 } 74 75 int main (void) { 76 CF_Thread tid; 77 if (CF_Thread_Craete (&tid, worker, NULL) < 0) { 78 // error 79 } 80 81 if (CF_Thread_Join (&tid) < 0) { // block 82 // error 83 } 84 85 if (CF_Thread_Release (&tid) < 0) { 86 // error 87 } 88 } 89 90 * @endcode 91 */ 33 92 CF_EXPORT int 34 93 CF_Thread_Create (CF_Thread * threadID, … … 36 95 void * arg); 37 96 97 /** 98 * 스레드 아이디를 해제 99 * 100 * @return 성공 시, CF_OK; 실패 시, 오류 코드 101 * 102 * @param threadID 스레드 아이디 주소 103 * 104 * @remark 스레드 아이디를 해제하는 것이며 워커 스레드가 종료되지 않음 105 */ 38 106 CF_EXPORT int 39 107 CF_Thread_Release (CF_Thread * threadID); 40 108 109 /** 110 * 스레드가 종료될 때 까지 대기 111 * 112 * @return CF_OK 반환 113 * 114 * @param threadID 스레드 아이디 주소 115 */ 41 116 CF_EXPORT int 42 117 CF_Thread_Join (CF_Thread * threadID); 43 118 119 /** 120 * 뮤텍스 생성 121 * 122 * @return 성공 시, CF_OK; 실패 시, 오류 코드 123 * 124 * @param mutex 뮤텍스 아이디 주소 125 * 126 * @see CF_Thread_Craete 127 */ 44 128 CF_EXPORT int 45 129 CF_Mutex_Create (CF_Mutex * mutex); 46 130 131 /** 132 * 뮤텍스 해제 133 * 134 * @return 성공 시, CF_OK; 실패 시, 오류 코드 135 * 136 * @param mutex 뮤텍스 아이디 주소 137 */ 47 138 CF_EXPORT int 48 139 CF_Mutex_Destory (CF_Mutex * mutex); 49 140 141 /** 142 * 뮤텍스 잠금 143 * 144 * @return 성공 시, CF_OK; 실패 시, 오류 코드 145 * 146 * @param mutex 뮤텍스 아이디 주소 147 */ 50 148 CF_EXPORT int 51 149 CF_Mutex_Lock (CF_Mutex * mutex); 52 150 151 /** 152 * 뮤텍스 잠금 해제 153 * 154 * @return 성공 시, CF_OK; 실패 시, 오류 코드 155 * 156 * @param mutex 뮤텍스 아이디 주소 157 */ 53 158 CF_EXPORT int 54 159 CF_Mutex_Unlock (CF_Mutex * mutex); -
trunk/src/cf_debug.c
r23 r26 46 46 CF_DEBUG_CALLSTACK callstack; 47 47 } S_CF_DEBUG_CTX, CF_DEBUG_CTX; 48 49 static int 50 CF_Debug_Local_UpdateCtx (CF_Debug_Ctx ctx, 51 const char * file, 52 const char * func, 53 const int line) 54 { 55 CF_DEBUG_CTX * context = (CF_DEBUG_CTX *) ctx; 56 57 CHECK_INVALID_CTX (ctx); 58 59 strncpy (context->file, file, strlen (file)); 60 strncpy (context->func, func, strlen (func)); 61 context->line = line; 62 63 return CF_OK; 64 } 48 65 49 66 static int … … 205 222 206 223 int 207 CF_Debug_UpdateCtx (CF_Debug_Ctx ctx,208 const char * file,209 const char * func,210 const int line)211 {212 CF_DEBUG_CTX * context = (CF_DEBUG_CTX *) ctx;213 214 CHECK_INVALID_CTX (ctx);215 216 strncpy (context->file, file, strlen (file));217 strncpy (context->func, func, strlen (func));218 context->line = line;219 220 return CF_OK;221 }222 223 int224 224 CF_Debug_Trace (CF_Debug_Ctx ctx, 225 const char * file, 226 const char * func, 227 const int line, 225 228 const char * fmt, ...) 226 229 { … … 229 232 230 233 CHECK_INVALID_CTX (ctx); 234 235 CF_Debug_Local_UpdateCtx (ctx, file, func, line); 231 236 232 237 va_start (valist, fmt); … … 243 248 int 244 249 CF_Debug_TraceBin (CF_Debug_Ctx ctx, 250 const char * file, 251 const char * func, 252 const int line, 245 253 const unsigned char * bin, 246 254 const int len, … … 251 259 252 260 CHECK_INVALID_CTX (ctx); 261 262 CF_Debug_Local_UpdateCtx (ctx, file, func, line); 253 263 254 264 va_start (valist, fmt); … … 291 301 context->callstack.caller = push; 292 302 293 CF_Debug_ UpdateCtx (ctx, file, func, line);303 CF_Debug_Local_UpdateCtx (ctx, file, func, line); 294 304 295 305 return CF_OK; … … 323 333 if (pop->caller != NULL) 324 334 { 325 CF_Debug_ UpdateCtx (ctx,326 pop->caller->file,327 pop->caller->func,328 pop->caller->line);335 CF_Debug_Local_UpdateCtx (ctx, 336 pop->caller->file, 337 pop->caller->func, 338 pop->caller->line); 329 339 } 330 340 -
trunk/src/cf_file.c
r16 r26 20 20 #else // #ifdef _WIN32 21 21 # include <unistd.h> 22 # define O_BINARY 0x00000000 22 23 #endif // #ifdef _WIN32 23 24 … … 28 29 const CF_FILE_FLAG flag) 29 30 { 30 int result = open (path, flag );31 int result = open (path, flag|O_BINARY); 31 32 32 33 if (result < 0) … … 73 74 return CF_ERROR_FILE_READ; 74 75 75 return CF_OK;76 return result; 76 77 } 77 78 -
trunk/src/cf_log.c
r25 r26 191 191 gLogEnvironment.ctxPool = 192 192 (CF_Log_Ctx *) calloc ((size_t) logPool, sizeof (CF_Log_Ctx)); 193 if (gLogEnvironment.ctxPool == NULL) 194 return CF_ERROR_LOG_INITIALIZE; 193 195 gLogEnvironment.ctxSize = logPool; 194 196 }
Note:
See TracChangeset
for help on using the changeset viewer.