int SrsSource::create_forwarders() { int ret = ERROR_SUCCESS; SrsConfDirective* conf = config->get_forward(req->vhost); for (int i = 0; conf && i < (int)conf->args.size(); i++) { std::string forward_server = conf->args.at(i); SrsForwarder* forwarder = new SrsForwarder(this); forwarders.push_back(forwarder); double queue_size = config->get_queue_length(req->vhost); forwarder->set_queue_size(queue_size); if ((ret = forwarder->on_publish(req, forward_server)) != ERROR_SUCCESS) { srs_error("start forwarder failed. " "vhost=%s, app=%s, stream=%s, forward-to=%s", req->vhost.c_str(), req->app.c_str(), req->stream.c_str(), forward_server.c_str()); return ret; } } return ret; }
int SrsSource::on_reload_queue_length(string vhost) { int ret = ERROR_SUCCESS; if (req->vhost != vhost) { return ret; } double queue_size = config->get_queue_length(req->vhost); if (true) { std::vector<SrsConsumer*>::iterator it; for (it = consumers.begin(); it != consumers.end(); ++it) { SrsConsumer* consumer = *it; consumer->set_queue_size(queue_size); } srs_trace("consumers reload queue size success."); } if (true) { std::vector<SrsForwarder*>::iterator it; for (it = forwarders.begin(); it != forwarders.end(); ++it) { SrsForwarder* forwarder = *it; forwarder->set_queue_size(queue_size); } srs_trace("forwarders reload queue size success."); } return ret; }