# C 파일 상세 분석 ## 파일별 상세 분석 ### api_handler.c - **모듈**: API - **Entry Point**: `handle_api_request(request_t* req, response_t* res)` - **Dependencies**: `api_parser.c`, `api_validator.c`, `api_router.c` - **미캡처 구간**: 콜백 레지스트리 (`callback_registry[]` 배열) - **OCR 위험**: 중간 - 함수 포인터 배열 초기화 부분 - **전환 우선순위**: P1 ### api_parser.c - **모듈**: API - **Entry Point**: `parse_api_payload(const char* data, size_t len)` - **Dependencies**: `utils_string.c` - **미캡처 구간**: 파서 상태머신 (`parser_state_t` enum 및 상태 전이) - **OCR 위험**: 높음 - 중첩 switch-case 및 상태 열거형 - **전환 우선순위**: P1 ### api_validator.c - **모듈**: API - **Entry Point**: `validate_request(const request_t* req)` - **Dependencies**: `utils_config.c` - **미캡처 구간**: 스키마 검증 로직 (정규식 패턴 매칭) - **OCR 위험**: 낮음 - 비교적 단순한 검증 로직 - **전환 우선순위**: P2 ### api_router.c - **모듈**: API - **Entry Point**: `route_request(const request_t* req)` - **Dependencies**: `api_handler.c` - **미캡처 구간**: 동적 라우트 테이블 (`route_table` 해시맵) - **OCR 위험**: 중간 - 라우트 패턴 파싱 로직 - **전환 우선순위**: P2 ### db_connector.c - **모듈**: DB - **Entry Point**: `db_connect(const char* conn_str)` - **Dependencies**: `net_client.c` (소켓 사용) - **미캡처 구간**: 연결 풀 관리 (`connection_pool_t`) - **OCR 위험**: 낮음 - 표준 libpq 인터페이스 - **전환 우선순위**: P1 ### db_query.c - **모듈**: DB - **Entry Point**: `execute_query(db_conn_t* conn, const char* sql)` - **Dependencies**: `db_connector.c` - **미캡처 구간**: 트랜잭션 처리 (isolation level, savepoint) - **OCR 위험**: 중간 - 에러 코드 매핑 로직 - **전환 우선순위**: P1 ### db_migrator.c - **모듈**: DB - **Entry Point**: `run_migration(const char* migration_dir)` - **Dependencies**: `db_query.c`, `utils_logger.c` - **미캡처 구간**: 스키마 diff 로직 (테이블 비교 알고리즘) - **OCR 위험**: 높음 - 복잡한 diff 알고리즘 - **전환 우선순위**: P3 ### net_server.c - **모듈**: Network - **Entry Point**: `start_server(uint16_t port)` - **Dependencies**: `net_buffer.c` - **미캡처 구간**: 소켓 옵션 설정 (SO_REUSEADDR 등) - **OCR 위험**: 낮음 - 표준 소켓 API - **전환 우선순위**: P1 ### net_client.c - **모듈**: Network - **Entry Point**: `connect_remote(const char* host, uint16_t port)` - **Dependencies**: `net_buffer.c`, `crypto_cipher.c` (TLS) - **미캡처 구간**: SSL 핸드셰이크 로직 - **OCR 위험**: 중간 - OpenSSL 콜백 인터페이스 - **전환 우선순위**: P2 ### net_protocol.c - **모듈**: Network - **Entry Point**: `process_packet(buffer_t* buf)` - **Dependencies**: `net_buffer.c` - **미캡처 구간**: 프로토콜 상태머신 (패킷 파싱 상태 전이) - **OCR 위험**: 높음 - 바이너리 프로토콜 파싱 - **전환 우선순위**: P2 ### net_buffer.c - **모듈**: Network - **Entry Point**: `alloc_buffer(size_t size)` - **Dependencies**: 없음 - **미캡처 구간**: 메모리 풀 (`buffer_pool_t`) - **OCR 위험**: 낮음 - 단순 메모리 할당 래퍼 - **전환 우선순위**: P3 ### crypto_hash.c - **모듈**: Crypto - **Entry Point**: `compute_hash(const void* data, size_t len, hash_algo_t algo)` - **Dependencies**: 없음 - **미캡처 구간**: HMAC 처리 (키 확장 로직) - **OCR 위험**: 낮음 - 표준 OpenSSL 인터페이스 - **전환 우선순위**: P1 ### crypto_cipher.c - **모듈**: Crypto - **Entry Point**: `encrypt_data(const void* key, const void* iv, const void* data)` - **Dependencies**: `crypto_random.c` - **미캡처 구간**: 키 관리 (키 롤링, 스토어) - **OCR 위험**: 중간 - 키 파생 함수 - **전환 우선순위**: P2 ### crypto_random.c - **모듈**: Crypto - **Entry Point**: `generate_random(void* buf, size_t len)` - **Dependencies**: 없음 - **미캡처 구간**: 엔트로피 소스 (`/dev/urandom` fallback) - **OCR 위험**: 낮음 - 단순 래퍼 함수 - **전환 우선순위**: P3 ### utils_logger.c - **모듈**: Utils - **Entry Point**: `log_message(log_level_t level, const char* fmt, ...)` - **Dependencies**: `utils_string.c` - **미캡처 구간**: 로그 로테이션 (파일 크기 기반) - **OCR 위험**: 낮음 - 표준 파일 I/O - **전환 우선순위**: P2 ### utils_config.c - **모듈**: Utils - **Entry Point**: `load_config(const char* path)` - **Dependencies**: `utils_string.c` - **미캡처 구간**: 설정 파싱 (INI/JSON 섹션 처리) - **OCR 위험**: 중간 - 토큰 파싱 로직 - **전환 우선순위**: P2 ### utils_timer.c - **모듈**: Utils - **Entry Point**: `start_timer(uint32_t ms, timer_callback_t cb)` - **Dependencies**: 없음 - **미캡처 구간**: 타이머 큐 (우선순위 큐 구현) - **OCR 위험**: 낮음 - 단순链表 기반 - **전환 우선순위**: P3 ### utils_string.c - **모듈**: Utils - **Entry Point**: `string_utils(const char* op, char* dest, const char* src)` - **Dependencies**: 없음 - **미캡처 구간**: 인코딩 변환 (UTF-8, EUC-KR, ISO-2022-KR) - **OCR 위험**: 높음 - 멀티바이트 문자 처리 - **전환 우선순위**: P3