Skip to content

Define Class and struct

Ryu(Paul) edited this page Jan 20, 2023 · 1 revision

ver 1.2

  • 변경 사항
    • 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

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
};
Clone this wiki locally