void SrsServer::close_listeners(SrsListenerType type) { std::vector<SrsListener*>::iterator it; for (it = listeners.begin(); it != listeners.end();) { SrsListener* listener = *it; if (listener->type() != type) { ++it; continue; } srs_freep(listener); it = listeners.erase(it); } }
int SrsServer::listen_http_stream() { int ret = ERROR_SUCCESS; #ifdef SRS_AUTO_HTTP_SERVER close_listeners(SrsListenerHttpStream); if (_srs_config->get_http_stream_enabled()) { SrsListener* listener = new SrsListener(this, SrsListenerHttpStream); listeners.push_back(listener); int port = _srs_config->get_http_stream_listen(); if ((ret = listener->listen(port)) != ERROR_SUCCESS) { srs_error("HTTP stream listen at port %d failed. ret=%d", port, ret); return ret; } } #endif return ret; }
int SrsServer::listen_rtmp() { int ret = ERROR_SUCCESS; // stream service port. SrsConfDirective* conf = _srs_config->get_listen(); srs_assert(conf); close_listeners(SrsListenerRtmpStream); for (int i = 0; i < (int)conf->args.size(); i++) { SrsListener* listener = new SrsListener(this, SrsListenerRtmpStream); listeners.push_back(listener); int port = ::atoi(conf->args.at(i).c_str()); if ((ret = listener->listen(port)) != ERROR_SUCCESS) { srs_error("RTMP stream listen at port %d failed. ret=%d", port, ret); return ret; } } return ret; }
int SrsServer::listen_rtmp() { int ret = ERROR_SUCCESS; // stream service port. std::vector<std::string> ports = _srs_config->get_listen(); srs_assert((int)ports.size() > 0); close_listeners(SrsListenerRtmpStream); for (int i = 0; i < (int)ports.size(); i++) { SrsListener* listener = new SrsListener(this, SrsListenerRtmpStream); listeners.push_back(listener); int port = ::atoi(ports[i].c_str()); if ((ret = listener->listen(port)) != ERROR_SUCCESS) { srs_error("RTMP stream listen at port %d failed. ret=%d", port, ret); return ret; } } return ret; }
int SrsServer::listen() { int ret = ERROR_SUCCESS; SrsConfDirective* conf = NULL; // stream service port. conf = _srs_config->get_listen(); srs_assert(conf); close_listeners(); for (int i = 0; i < (int)conf->args.size(); i++) { SrsListener* listener = new SrsListener(this, SrsListenerRtmpStream); listeners.push_back(listener); int port = ::atoi(conf->args.at(i).c_str()); if ((ret = listener->listen(port)) != ERROR_SUCCESS) { srs_error("RTMP stream listen at port %d failed. ret=%d", port, ret); return ret; } } #ifdef SRS_HTTP_API if (_srs_config->get_http_api_enabled()) { SrsListener* listener = new SrsListener(this, SrsListenerHttpApi); listeners.push_back(listener); int port = _srs_config->get_http_api_listen(); if ((ret = listener->listen(port)) != ERROR_SUCCESS) { srs_error("HTTP api listen at port %d failed. ret=%d", port, ret); return ret; } } #endif #ifdef SRS_HTTP_SERVER if (_srs_config->get_http_stream_enabled()) { SrsListener* listener = new SrsListener(this, SrsListenerHttpStream); listeners.push_back(listener); int port = _srs_config->get_http_stream_listen(); if ((ret = listener->listen(port)) != ERROR_SUCCESS) { srs_error("HTTP stream listen at port %d failed. ret=%d", port, ret); return ret; } } #endif return ret; }