Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat: try-catch 구조 변경 및 time-out 부분 #1

Open
HiHoi opened this issue Jun 25, 2023 · 3 comments
Open

Feat: try-catch 구조 변경 및 time-out 부분 #1

HiHoi opened this issue Jun 25, 2023 · 3 comments

Comments

@HiHoi
Copy link
Collaborator

HiHoi commented Jun 25, 2023

1. try-catch 구조

기존의 구조는 throw를 하면 바로 main 쪽의 catch로 나와서 바로 프로그램이 종료되는 구조였음
서브젝트에서 요구하는 왠만하면 서버는 종료되면 안된다를 충족하기 위해선 throw 자체를 루프쪽에서 돌리면 2가지 장점이 있음
첫번째, 만약 치명적인 에러가 터진 경우 왠만한 에러 구문을 잡아서 매끄럽게 처리가 가능함
두번째, 서브젝트에서 요구한 대로 치명적인 에러가 나와서 서버는 다시 재시작함

2. time-out 부분

일단 kevent의 마지막 인자로 넣는 부분만 추가
시간을 따로 재야하는 건 불필요한 느낌이 있음. 다른 함수들도 마찬가지로 시간을 재는 부분이 있음
그리고 서브젝트에서 요구하는 게 과연 time를 직접 재서 이를 의도적으로 끊는 건지 의문이 듬
(만약 현재 구조에서 이 부분이 큰 문제 였다면 siege에서 한 모든 공격 중 하나라도 블록이 되거나 큰 에러가 터졌을 거 같음)

HiHoi added a commit that referenced this issue Jun 25, 2023
@hojsong
Copy link
Owner

hojsong commented Jun 25, 2023

나는 시간 처리 부분 이라고 하길래 요청까지 걸린시간도 보여줘야하나? 라는생각이 들었음
그래서 그렇게 할까? 했는데 timeout부분이라면 다른이야기

@HiHoi
Copy link
Collaborator Author

HiHoi commented Jun 25, 2023

그럼 제가 예전에 만든 Connection 구조체 이용하면 좋을 거 같아요
Request에 Connection 넣어서 관리하는 건 어때요?

class Connection
{
private:
    uintptr_t       fd;
    uint16_t        client_port;
    struct timeval  last_request_time;
    
public:
    Connection();
    Connection(uintptr_t fd, uint16_t port);
    ~Connection();

    //getter
    uintptr_t       getFd(void);
    uint16_t        getClientPort(void);
    struct timeval  getLastRequestTime(void);

    //setter
    void    setLastRequestTime(struct timeval param);
};

@hojsong
Copy link
Owner

hojsong commented Jun 25, 2023

내가 주석달아서 올려뒀어 한번보고 판단해줘

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

2 participants