TCP 서버 구현 파일 더 자세히 ...
#include "tcp_server.hpp"
#include "request_handlers.hpp"
#include "utils.hpp"
#include "config_manager.hpp"
#include <unordered_map>
#include <memory>
#include <random>
#include "metadata_parser.hpp"
#include <thread>
함수 | |
SSL * | setup_ssl_connection (int client_socket) |
클라이언트 소켓에 대해 SSL 연결을 설정합니다. | |
void | initialize_database_tables (SQLite::Database &db) |
데이터베이스의 모든 테이블을 초기화(생성)합니다. | |
bool | receive_json_message (SSL *ssl, json &received_json) |
SSL을 통해 JSON 메시지를 수신합니다. | |
void | route_request (SSL *ssl, const json &received_json, SQLite::Database &db, std::mutex &db_mutex, std::atomic< bool > &bbox_push_enabled, std::thread &push_thread, std::thread &metadata_thread) |
request_id에 따라 적절한 요청 처리 함수를 호출합니다. | |
void | cleanup_client_connection (SSL *ssl, int client_socket, std::atomic< bool > &bbox_push_enabled, std::thread &push_thread, std::thread &metadata_thread) |
클라이언트 연결 종료 시 스레드 및 리소스를 정리합니다. | |
void | handle_client (int client_socket, SQLite::Database &db, std::mutex &db_mutex) |
클라이언트 연결을 처리하는 메인 함수 (스레드 진입점) | |
int | tcp_run () |
TCP 서버 메인 함수. 서버를 초기화하고 클라이언트 연결을 처리합니다. | |
TCP 서버 구현 파일
이 파일은 TCP 서버의 주요 기능을 구현하며, 클라이언트 연결 처리, SSL 설정, 데이터베이스 초기화 및 요청 라우팅을 포함합니다.
void cleanup_client_connection | ( | SSL * | ssl, |
int | client_socket, | ||
std::atomic< bool > & | bbox_push_enabled, | ||
std::thread & | push_thread, | ||
std::thread & | metadata_thread | ||
) |
클라이언트 연결 종료 시 스레드 및 리소스를 정리합니다.
클라이언트 연결을 정리하고 관련 리소스를 해제합니다.
ssl | OpenSSL SSL 포인터 |
client_socket | 클라이언트 소켓 디스크립터 |
bbox_push_enabled | BBox push 활성화 플래그 |
push_thread | BBox push 스레드 참조 |
metadata_thread | 메타데이터 파싱 스레드 참조 |
void handle_client | ( | int | client_socket, |
SQLite::Database & | db, | ||
std::mutex & | db_mutex | ||
) |
클라이언트 연결을 처리하는 메인 함수 (스레드 진입점)
개별 클라이언트와의 연결을 처리하는 메인 함수입니다.
client_socket | 클라이언트 소켓 디스크립터 |
db | SQLite 데이터베이스 참조 |
db_mutex | DB 접근 뮤텍스 |
void initialize_database_tables | ( | SQLite::Database & | db | ) |
데이터베이스의 모든 테이블을 초기화(생성)합니다.
데이터베이스 테이블들을 초기화합니다.
db | SQLite 데이터베이스 참조 |
bool receive_json_message | ( | SSL * | ssl, |
json & | received_json | ||
) |
SSL을 통해 JSON 메시지를 수신합니다.
SSL 연결에서 JSON 메시지를 수신합니다.
ssl | OpenSSL SSL 포인터 |
received_json | 파싱된 JSON 객체 (출력) |
void route_request | ( | SSL * | ssl, |
const json & | received_json, | ||
SQLite::Database & | db, | ||
std::mutex & | db_mutex, | ||
std::atomic< bool > & | bbox_push_enabled, | ||
std::thread & | push_thread, | ||
std::thread & | metadata_thread | ||
) |
request_id에 따라 적절한 요청 처리 함수를 호출합니다.
수신된 JSON 요청을 적절한 처리 함수로 라우팅합니다.
ssl | OpenSSL SSL 포인터 |
received_json | 수신된 JSON 요청 |
db | SQLite 데이터베이스 참조 |
db_mutex | DB 접근 뮤텍스 |
bbox_push_enabled | BBox push 활성화 플래그 |
push_thread | BBox push 스레드 참조 |
metadata_thread | 메타데이터 파싱 스레드 참조 |
SSL * setup_ssl_connection | ( | int | client_socket | ) |
클라이언트 소켓에 대해 SSL 연결을 설정합니다.
클라이언트 소켓에 SSL 연결을 설정합니다.
client_socket | 클라이언트 소켓 디스크립터 |
int tcp_run | ( | ) |
TCP 서버 메인 함수. 서버를 초기화하고 클라이언트 연결을 처리합니다.
TCP 서버를 시작하고 클라이언트 연결을 대기합니다.