SRS 코드 분석【서버 시작】

1899 단어 SRS코드 분석
서버 시작 프로세스:
main 함수에서 do_ 직접 호출main 함수
do_main 함수 실행 과정은 다음과 같습니다.
1).입력 매개변수 분석 _srs_config->parse_options()
2).로그srs_ 초기화log->initialize()
3).서버 런(SrsServer*) 시작
run 함수 실행 프로세스는 다음과 같습니다.
1). SrsServer  svr->initialize(NULL)
2). 수호 프로세스로 시작할지 여부를 판단합니다
// if not deamon, directly run master.
if (!_srs_config->get_deamon()) {
        if ((err = run_master(svr)) != srs_success) {
            return srs_error_wrap(err, "run master");
        }
        return srs_success;
}
3).실행 서버 runumaster(SrsServer*)
run_master(SrssServer*) 함수 실행 절차는 다음과 같습니다.
srs_error_t run_master(SrsServer* svr)
{
    srs_error_t err = srs_success;
    
    if ((err = svr->initialize_st()) != srs_success) {
        return srs_error_wrap(err, "initialize st");
    }
    
    if ((err = svr->initialize_signal()) != srs_success) {
        return srs_error_wrap(err, "initialize signal");
    }
    
    if ((err = svr->acquire_pid_file()) != srs_success) {
        return srs_error_wrap(err, "acquire pid file");
    }
    
    // 
    if ((err = svr->listen()) != srs_success) {
        return srs_error_wrap(err, "listen");
    }
    
    if ((err = svr->register_signal()) != srs_success) {
        return srs_error_wrap(err, "register signal");
    }
    
    // Http 
    if ((err = svr->http_handle()) != srs_success) {
        return srs_error_wrap(err, "http handle");
    }
    
    // 
    if ((err = svr->ingest()) != srs_success) {
        return srs_error_wrap(err, "ingest");
    }
    
    // 
    if ((err = svr->cycle()) != srs_success) {
        return srs_error_wrap(err, "main cycle");
    }
    
    return err;
}

좋은 웹페이지 즐겨찾기