Changeset 123 in libcf
- Timestamp:
- 06/12/13 13:28:21 (11 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/cf_error.h
r122 r123 69 69 #define CF_ERROR_MUTEX_CREATE CF_ERROR_MUTEX - 2 70 70 #define CF_ERROR_MUTEX_INVALID_CTX CF_ERROR_MUTEX - 3 71 #define CF_ERROR_MUTEX_INVALID_ARGS CF_ERROR_MUTEX - 4 71 72 /* }}} mutex */ 72 73 -
trunk/src/cf_log.c
r122 r123 4 4 * \author vfire 5 5 * 6 * \brief 로그 구현6 * \brief ·Î±× ±¸Çö 7 7 */ 8 8 #if defined(_WIN32) || defined(_WIN64) … … 59 59 #define LOG_DATETIME_LENGTH sizeof ("0000-00-00 00:00:00.000") - 1 60 60 61 /** 로그 컨텍스트(Opaque) */61 /** ·Î±× ÄÁÅؽºÆ® (Opaque) */ 62 62 typedef void * CF_Log_Ctx; 63 63 … … 75 75 } CF_LOG_DATETIME; 76 76 77 /** 로그 컨텍스트 (CF_Log_Ctx의 구현) */77 /** ·Î±× ÄÁÅؽºÆ® (CF_Log_CtxÀÇ ±¸Çö) */ 78 78 typedef struct __cf_log_ctx__ 79 79 { … … 195 195 196 196 /** 197 * 로그 데이터 처리198 * 199 * \return 성공 시, CF_OK; 실패 시, 오류 코드200 * 201 * \param ctx 로그 컨텍스트202 * \param buffer 로그 데이터203 * \param demandSize 로그 데이터 길이197 * ·Î±× µ¥ÀÌÅÍ Ã³¸® 198 * 199 * \return ¼º°ø ½Ã, CF_OK; ½ÇÆÐ ½Ã, ¿À·ù ÄÚµå 200 * 201 * \param ctx ·Î±× ÄÁÅؽºÆ® 202 * \param buffer ·Î±× µ¥ÀÌÅÍ 203 * \param demandSize ·Î±× µ¥ÀÌÅÍ ±æÀÌ 204 204 * 205 205 * \author vfire … … 212 212 int result = CF_OK; 213 213 214 if (ctx->size > 0) /* 버퍼단위 버퍼링.... */214 if (ctx->size > 0) /* ¹öÆÛ´ÜÀ§ ¹öÆÛ¸µ.... */ 215 215 { 216 216 size_t writeSize; … … 231 231 } 232 232 } 233 else /* flush 되어야 함. */233 else /* flushµÇ¾î¾ß ÇÔ. */ 234 234 { 235 235 ctx->buffer = (char *)buffer; … … 243 243 244 244 /** 245 * 로그 컨텍스트에 멀티쓰레드 모드 설정246 * 247 * \return 성공 시, CF_OK; 실패 시, 오류 코드248 * 249 * \param ctx 로그 컨텍스트245 * ·Î±× ÄÁÅؽºÆ®¿¡ ¸ÖƼ¾²·¹µå ¸ðµå ¼³Á¤ 246 * 247 * \return ¼º°ø ½Ã, CF_OK; ½ÇÆÐ ½Ã, ¿À·ù ÄÚµå 248 * 249 * \param ctx ·Î±× ÄÁÅؽºÆ® 250 250 * 251 251 * \see CF_Log_UnsetMultiThread … … 265 265 266 266 /** 267 * 로그 컨텍스트에 멀티쓰레드 모드 설정 해제268 * 269 * \return 성공 시, CF_OK; 실패 시, 오류 코드270 * 271 * \param ctx 로그 컨텍스트267 * ·Î±× ÄÁÅؽºÆ®¿¡ ¸ÖƼ¾²·¹µå ¸ðµå ¼³Á¤ ÇØÁ¦ 268 * 269 * \return ¼º°ø ½Ã, CF_OK; ½ÇÆÐ ½Ã, ¿À·ù ÄÚµå 270 * 271 * \param ctx ·Î±× ÄÁÅؽºÆ® 272 272 * 273 273 * \see CF_Log_SetMultiThread … … 289 289 290 290 /** 291 * 로그 컨텍스트에 따라 로그 쓰기292 * 293 * \return 성공 시, CF_OK; 실패 시, 오류 코드294 * 295 * \param ctx 로그 컨텍스트296 * \param prefix 로그의 프리픽스 문자열297 * \param fmt 포맷 스트링298 * \param ... 가변 인자291 * ·Î±× ÄÁÅؽºÆ®¿¡ µû¶ó ·Î±× ¾²±â 292 * 293 * \return ¼º°ø ½Ã, CF_OK; ½ÇÆÐ ½Ã, ¿À·ù ÄÚµå 294 * 295 * \param ctx ·Î±× ÄÁÅؽºÆ® 296 * \param prefix ·Î±×ÀÇ ÇÁ¸®ÇȽº ¹®ÀÚ¿ 297 * \param fmt Æ÷¸Ë ½ºÆ®¸µ 298 * \param ... °¡º¯ ÀÎÀÚ 299 299 */ 300 300 static int … … 330 330 331 331 /** 332 * 로그 버퍼의 데이터를 즉시 로그 파일에 쓰기333 * 334 * \return 성공 시, CF_OK; 실패 시, 오류 코드335 * 336 * \param ctx 로그 컨텍스트332 * ·Î±× ¹öÆÛÀÇ µ¥ÀÌÅ͸¦ Áï½Ã ·Î±× ÆÄÀÏ¿¡ ¾²±â 333 * 334 * \return ¼º°ø ½Ã, CF_OK; ½ÇÆÐ ½Ã, ¿À·ù ÄÚµå 335 * 336 * \param ctx ·Î±× ÄÁÅؽºÆ® 337 337 */ 338 338 static int … … 351 351 352 352 /** 353 * 로그 컨텍스트 해제354 * 355 * \return 성공 시, CF_OK; 실패 시, 오류 코드356 * 357 * \param ctx 로그 컨텍스트353 * ·Î±× ÄÁÅؽºÆ® ÇØÁ¦ 354 * 355 * \return ¼º°ø ½Ã, CF_OK; ½ÇÆÐ ½Ã, ¿À·ù ÄÚµå 356 * 357 * \param ctx ·Î±× ÄÁÅؽºÆ® 358 358 */ 359 359 static int … … 381 381 382 382 /** 383 * 로그 컨텍스트 생성384 * 385 * \return 성공 시, 로그 컨텍스트; 실패 시, NULL386 * 387 * \param ctx 로그 컨텍스트 주소388 * \param path 로그 파일 경로389 * \param memsize 로그 버퍼 크기383 * ·Î±× ÄÁÅؽºÆ® »ý¼º 384 * 385 * \return ¼º°ø ½Ã, ·Î±× ÄÁÅؽºÆ®; ½ÇÆÐ ½Ã, NULL 386 * 387 * \param ctx ·Î±× ÄÁÅؽºÆ® ÁÖ¼Ò 388 * \param path ·Î±× ÆÄÀÏ °æ·Î 389 * \param memsize ·Î±× ¹öÆÛ Å©±â 390 390 * 391 391 * \see CF_LOG_DEFAULT_BUFFER, CF_LOG_NO_BUFFER … … 446 446 447 447 /** 448 * 로그 컨텍스트에 아이디 넘버 할당<br />449 * 로그 기록 시, 아이디 넘버를 사용하면 해당 로그로 기록할 수 있음450 * 451 * \return 성공 시, CF_OK; 실패 시, 오류 코드452 * 453 * \param mapid 부여할 아이디 넘버454 * \param ctx 로그 컨텍스트455 * 456 * \remarks 반드시 먼저 초기화 해야하며, 초기화 시에 주어진 번호보다 작은 아이디 넘버를 사용448 * ·Î±× ÄÁÅؽºÆ®¿¡ ¾ÆÀ̵ð ³Ñ¹ö ÇÒ´ç<br /> 449 * ·Î±× ±â·Ï ½Ã, ¾ÆÀ̵ð ³Ñ¹ö¸¦ »ç¿ëÇϸé ÇØ´ç ·Î±×·Î ±â·ÏÇÒ ¼ö ÀÖÀ½ 450 * 451 * \return ¼º°ø ½Ã, CF_OK; ½ÇÆÐ ½Ã, ¿À·ù ÄÚµå 452 * 453 * \param mapid ºÎ¿©ÇÒ ¾ÆÀ̵ð ³Ñ¹ö 454 * \param ctx ·Î±× ÄÁÅؽºÆ® 455 * 456 * \remarks ¹Ýµå½Ã ¸ÕÀú ÃʱâÈ ÇؾßÇϸç, ÃʱâÈ ½Ã¿¡ ÁÖ¾îÁø ¹øÈ£º¸´Ù ÀÛÀº ¾ÆÀ̵ð ³Ñ¹ö¸¦ »ç¿ë 457 457 * 458 458 * \see CF_LOG_OPEN, CF_Log_CreateCtx … … 472 472 473 473 /** 474 * 아이디 넘버에 해당하는 로그를 닫고 해당하는 컨텍스트를 해제475 * 476 * \return 성공 시, CF_OK; 실패 시, 오류 코드477 * 478 * \param mapid 로그의 아이디 넘버479 * 480 * \remarks 아이디 넘버에 해당하는 컨텍스트가 해제되므로 주의474 * ¾ÆÀ̵ð ³Ñ¹ö¿¡ ÇØ´çÇÏ´Â ·Î±×¸¦ ´Ý°í ÇØ´çÇÏ´Â ÄÁÅؽºÆ®¸¦ ÇØÁ¦ 475 * 476 * \return ¼º°ø ½Ã, CF_OK; ½ÇÆÐ ½Ã, ¿À·ù ÄÚµå 477 * 478 * \param mapid ·Î±×ÀÇ ¾ÆÀ̵ð ³Ñ¹ö 479 * 480 * \remarks ¾ÆÀ̵ð ³Ñ¹ö¿¡ ÇØ´çÇÏ´Â ÄÁÅؽºÆ®°¡ ÇØÁ¦µÇ¹Ç·Î ÁÖÀÇ 481 481 * 482 482 * \see CF_LOG_CLOSE, CF_Log_DestroyCtx … … 498 498 499 499 /** 500 * 아이디 넘버에 해당하는 로그 컨텍스트를 얻기501 * 502 * \return 성공 시, CF_OK; 실패 시, 오류 코드503 * 504 * \param mapid 로그의 아이디 넘버505 * \param ctx 로그 컨텍스트 받을 주소500 * ¾ÆÀ̵ð ³Ñ¹ö¿¡ ÇØ´çÇÏ´Â ·Î±× ÄÁÅؽºÆ®¸¦ ¾ò±â 501 * 502 * \return ¼º°ø ½Ã, CF_OK; ½ÇÆÐ ½Ã, ¿À·ù ÄÚµå 503 * 504 * \param mapid ·Î±×ÀÇ ¾ÆÀ̵ð ³Ñ¹ö 505 * \param ctx ·Î±× ÄÁÅؽºÆ® ¹ÞÀ» ÁÖ¼Ò 506 506 */ 507 507 static int … … 519 519 520 520 /** 521 * 로그를 사용하기 위해 초기화522 * 523 * \return 성공 시, CF_OK; 실패 시, 오류 코드524 * 525 * \param poolSize 로그 풀 크기로, 로그 아이디 넘버의 최대 값521 * ·Î±×¸¦ »ç¿ëÇϱâ À§ÇØ ÃʱâÈ 522 * 523 * \return ¼º°ø ½Ã, CF_OK; ½ÇÆÐ ½Ã, ¿À·ù ÄÚµå 524 * 525 * \param poolSize ·Î±× Ç® Å©±â·Î, ·Î±× ¾ÆÀ̵ð ³Ñ¹öÀÇ ÃÖ´ë °ª 526 526 */ 527 527 int … … 543 543 544 544 /** 545 * 로그가 모두 사용된 후 자원 해제546 * 547 * \return CF_OK 반환545 * ·Î±×°¡ ¸ðµÎ »ç¿ëµÈ ÈÄ ÀÚ¿ø ÇØÁ¦ 546 * 547 * \return CF_OK ¹Ýȯ 548 548 */ 549 549 int … … 566 566 567 567 /** 568 * 로그 열기569 * 570 * \return 성공 시, CF_OK; 실패 시, 오류 코드571 * 572 * \param mapid 로그의 아이디 넘버573 * \param path 로그 파일 경로574 * \param memsize 로그 버퍼 크기568 * ·Î±× ¿±â 569 * 570 * \return ¼º°ø ½Ã, CF_OK; ½ÇÆÐ ½Ã, ¿À·ù ÄÚµå 571 * 572 * \param mapid ·Î±×ÀÇ ¾ÆÀ̵ð ³Ñ¹ö 573 * \param path ·Î±× ÆÄÀÏ °æ·Î 574 * \param memsize ·Î±× ¹öÆÛ Å©±â 575 575 * 576 576 * \see CF_LOG_DEFAULT_BUFFER, CF_LOG_NO_BUFFER … … 596 596 597 597 /** 598 * 로그 닫기599 * 600 * \return 성공 시, CF_OK; 실패 시, 오류 코드601 * 602 * \param mapid 로그의 아이디 넘버598 * ·Î±× ´Ý±â 599 * 600 * \return ¼º°ø ½Ã, CF_OK; ½ÇÆÐ ½Ã, ¿À·ù ÄÚµå 601 * 602 * \param mapid ·Î±×ÀÇ ¾ÆÀ̵ð ³Ñ¹ö 603 603 */ 604 604 int … … 609 609 610 610 /** 611 * 로그 버퍼의 데이터를 즉시 로그 파일에 쓰기612 * 613 * \return 성공 시, CF_OK; 실패 시, 오류 코드614 * 615 * \param mapid 로그의 아이디 넘버611 * ·Î±× ¹öÆÛÀÇ µ¥ÀÌÅ͸¦ Áï½Ã ·Î±× ÆÄÀÏ¿¡ ¾²±â 612 * 613 * \return ¼º°ø ½Ã, CF_OK; ½ÇÆÐ ½Ã, ¿À·ù ÄÚµå 614 * 615 * \param mapid ·Î±×ÀÇ ¾ÆÀ̵ð ³Ñ¹ö 616 616 */ 617 617 int … … 631 631 632 632 /** 633 * 로그 컨텍스트에 멀티쓰레드 모드 설정634 * 635 * \return 성공 시, CF_OK; 실패 시, 오류 코드636 * 637 * \param mapid 로그의 아이디 넘버638 * \param flag 설정/해제 bool 플래그633 * ·Î±× ÄÁÅؽºÆ®¿¡ ¸ÖƼ¾²·¹µå ¸ðµå ¼³Á¤ 634 * 635 * \return ¼º°ø ½Ã, CF_OK; ½ÇÆÐ ½Ã, ¿À·ù ÄÚµå 636 * 637 * \param mapid ·Î±×ÀÇ ¾ÆÀ̵ð ³Ñ¹ö 638 * \param flag ¼³Á¤/ÇØÁ¦ bool Ç÷¡±× 639 639 * 640 640 * \see CF_BOOL … … 658 658 659 659 /** 660 * 로그 쓰기661 * 662 * \return 성공 시, CF_OK; 실패 시, 오류 코드663 * 664 * \param mapid 로그의 아이디 넘버665 * \param prefix 로그의 프리픽스 문자열666 * \param fmt 포맷 스트링667 * \param ... 가변 인자660 * ·Î±× ¾²±â 661 * 662 * \return ¼º°ø ½Ã, CF_OK; ½ÇÆÐ ½Ã, ¿À·ù ÄÚµå 663 * 664 * \param mapid ·Î±×ÀÇ ¾ÆÀ̵ð ³Ñ¹ö 665 * \param prefix ·Î±×ÀÇ ÇÁ¸®ÇȽº ¹®ÀÚ¿ 666 * \param fmt Æ÷¸Ë ½ºÆ®¸µ 667 * \param ... °¡º¯ ÀÎÀÚ 668 668 */ 669 669 int -
trunk/src/cf_thread.c
r122 r123 52 52 { 53 53 #if defined(_WIN32) || defined(_WIN64) 54 if (tid == NULL) 55 return CF_ERROR_THREAD_INVALID_ARGS; 56 54 57 CloseHandle (tid); 55 58 #endif … … 62 65 { 63 66 #if defined(_WIN32) || defined(_WIN64) 67 if (mid == NULL) 68 return CF_ERROR_MUTEX_INVALID_ARGS; 69 64 70 CloseHandle (mid); 65 71 #else … … 230 236 #if defined(_WIN32) || defined(_WIN64) 231 237 context->mid = CreateMutexA (NULL, FALSE, NULL); 232 if ( *ctx== NULL)238 if (context->mid == NULL) 233 239 { 234 240 result = CF_ERROR_MUTEX_CREATE; … … 243 249 } 244 250 #endif 251 252 *ctx = context; 245 253 } 246 254 CATCH_IF (result < 0) 247 255 { 248 CF_Mutex_DestoryCtx ( ctx);256 CF_Mutex_DestoryCtx ((CF_Mutex_Ctx) context); 249 257 } 250 258 251 return CF_OK;259 return result; 252 260 } 253 261
Note:
See TracChangeset
for help on using the changeset viewer.