-
Notifications
You must be signed in to change notification settings - Fork 1
Define Class and struct
Ryu(Paul) edited this page Jan 20, 2023
·
1 revision
- 변경 사항
- Server Config 파트의 지정된 형태 + 시리님, 진호님이 현재 제작 중. 이후 피드백을 해볼 예정
- ClientMetaDatas 라는 클래스를 만들어, Client 데이터를 저장하여 관리하는 것으로 지정
- 이때, 내부는 관리성을 위해
std::map<int fd, structure node>
의 구조로 관리할 것이며, 이들을 사용하기 위해선 byFD 컨벤션 을 활용한다. - 또한 내부 strcture node 라는 것은 kevent를 포함하여 각종 정보들을 담고 있다. 이때, 담을 데이터는 다음과 같다.
-
kevent *(pointer) event_data;
(event_data->udata = server_config) -
??? HTTP_datas;
(메서드를 포함한 requst 정보) -
enum status_code;
(발생 가능한 에러 상태를 담아두는 용도)
- 이때, 내부는 관리성을 위해
ver 1.0
/* Config file parsing */
class ServerConfigInfo {
public:
//config 데이터들 갖고 올 수 있는 메소드 함수 만들기
private:
struct server_data s_data_; // config에 들어있는 정보들 다 넣기
std::vector<struct location> locations_; // location이 여러개일 수 있으니 vector로 관리
};
/* Request Handler */
// 1. 요청 메시지 첫줄 유효성 체크
// 2. 에러로그, access 로그 Handler 호출
// 3. parse for each method
// 4. 정보를 <RequestController>
class ReqHandler{
public:
bool IsValidMethod(const std::string &line); // 사용할 수 있는 Method 인지? (글자만 확인)
bool IsVaildHTTP(const std::string &line); // HTTP 버전 1.1 아니면 false
bool IsValidURL(const std::string &line); // 글자만 확인
private:
bool IsValidFirstLien(); // 글자 자체만 확인
void Parse(); // 요청 메시지 파싱. 이때, Config 내용 보면서 에러처리 (throw)
struct something TansferToCore();
};
/* MsgComposer */
// 응답 메시지 구성
// status code, entity(char*), cgi에서오면 pipe(fd)
class MsgComposer{
public:
private:
// string.append || pipe에 write해서 ResHandler에서 pipe read
};