1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

merge srs2

This commit is contained in:
winlin 2016-12-13 17:58:42 +08:00
commit 9ba4bed648
5 changed files with 19 additions and 32 deletions

View file

@ -390,6 +390,7 @@ Remark:
* v3.0, 2015-08-31, fix [#319][bug #319], http raw api support query global and vhost. * v3.0, 2015-08-31, fix [#319][bug #319], http raw api support query global and vhost.
* v3.0, 2015-08-28, fix [#471][bug #471], api response the width and height. 3.0.2 * v3.0, 2015-08-28, fix [#471][bug #471], api response the width and height. 3.0.2
* v3.0, 2015-08-25, fix [#367][bug #367], support nginx-rtmp exec. 3.0.1 * v3.0, 2015-08-25, fix [#367][bug #367], support nginx-rtmp exec. 3.0.1
* <strong>v2.0, 2016-11-09, [2.0 beta2(2.0.221)][r2.0b2] released. 86691 lines.</strong>
* <strong>v2.0, 2016-09-09, [2.0 beta1(2.0.215)][r2.0b1] released. 89941 lines.</strong> * <strong>v2.0, 2016-09-09, [2.0 beta1(2.0.215)][r2.0b1] released. 89941 lines.</strong>
* <strong>v2.0, 2016-08-06, [2.0 beta0(2.0.210)][r2.0b0] released. 89704 lines.</strong> * <strong>v2.0, 2016-08-06, [2.0 beta0(2.0.210)][r2.0b0] released. 89704 lines.</strong>
* <strong>v2.0, 2015-12-23, [2.0 alpha3(2.0.205)][r2.0a3] released. 89544 lines.</strong> * <strong>v2.0, 2015-12-23, [2.0 alpha3(2.0.205)][r2.0a3] released. 89544 lines.</strong>

View file

@ -1232,12 +1232,10 @@ int SrsHttpStreamServer::hijack(ISrsHttpMessage* request, ISrsHttpHandler** ph)
} }
} }
SrsSource* s = SrsSource::fetch(r); SrsSource* s = NULL;
if (!s) { if ((ret = SrsSource::fetch_or_create(r, server, server, &s)) != ERROR_SUCCESS) {
if ((ret = SrsSource::create(r, server, server, &s)) != ERROR_SUCCESS) {
return ret; return ret;
} }
}
srs_assert(s != NULL); srs_assert(s != NULL);
// create http streaming handler. // create http streaming handler.

View file

@ -709,12 +709,10 @@ int SrsRtmpConn::stream_service_cycle()
rtmp->set_send_timeout(SRS_CONSTS_RTMP_TIMEOUT_US); rtmp->set_send_timeout(SRS_CONSTS_RTMP_TIMEOUT_US);
// find a source to serve. // find a source to serve.
SrsSource* source = SrsSource::fetch(req); SrsSource* source = NULL;
if (!source) { if ((ret = SrsSource::fetch_or_create(req, server, server, &source)) != ERROR_SUCCESS) {
if ((ret = SrsSource::create(req, server, server, &source)) != ERROR_SUCCESS) {
return ret; return ret;
} }
}
srs_assert(source != NULL); srs_assert(source != NULL);
// update the statistic when source disconveried. // update the statistic when source disconveried.

View file

@ -737,17 +737,23 @@ ISrsSourceHandler::~ISrsSourceHandler()
std::map<std::string, SrsSource*> SrsSource::pool; std::map<std::string, SrsSource*> SrsSource::pool;
int SrsSource::create(SrsRequest* r, ISrsSourceHandler* h, ISrsHlsHandler* hh, SrsSource** pps) int SrsSource::fetch_or_create(SrsRequest* r, ISrsSourceHandler* h, ISrsHlsHandler* hh, SrsSource** pps)
{ {
int ret = ERROR_SUCCESS; int ret = ERROR_SUCCESS;
SrsSource* source = NULL;
if ((source = fetch(r)) != NULL) {
*pps = source;
return ret;
}
string stream_url = r->get_stream_url(); string stream_url = r->get_stream_url();
string vhost = r->vhost; string vhost = r->vhost;
// should always not exists for create a source. // should always not exists for create a source.
srs_assert (pool.find(stream_url) == pool.end()); srs_assert (pool.find(stream_url) == pool.end());
SrsSource* source = new SrsSource(); source = new SrsSource();
if ((ret = source->initialize(r, h, hh)) != ERROR_SUCCESS) { if ((ret = source->initialize(r, h, hh)) != ERROR_SUCCESS) {
srs_freep(source); srs_freep(source);
return ret; return ret;
@ -780,20 +786,6 @@ SrsSource* SrsSource::fetch(SrsRequest* r)
return source; return source;
} }
SrsSource* SrsSource::fetch(std::string vhost, std::string app, std::string stream)
{
SrsSource* source = NULL;
string stream_url = srs_generate_stream_url(vhost, app, stream);
if (pool.find(stream_url) == pool.end()) {
return NULL;
}
source = pool[stream_url];
return source;
}
void SrsSource::dispose_all() void SrsSource::dispose_all()
{ {
std::map<std::string, SrsSource*>::iterator it; std::map<std::string, SrsSource*>::iterator it;

View file

@ -420,22 +420,20 @@ private:
static std::map<std::string, SrsSource*> pool; static std::map<std::string, SrsSource*> pool;
public: public:
/** /**
* find stream by vhost/app/stream. * create source when fetch from cache failed.
* @param r the client request. * @param r the client request.
* @param h the event handler for source. * @param h the event handler for source.
* @param hh the event handler for hls. * @param hh the event handler for hls.
* @param pps the matched source, if success never be NULL. * @param pps the matched source, if success never be NULL.
*/ */
static int create(SrsRequest* r, ISrsSourceHandler* h, ISrsHlsHandler* hh, SrsSource** pps); static int fetch_or_create(SrsRequest* r, ISrsSourceHandler* h, ISrsHlsHandler* hh, SrsSource** pps);
private:
/** /**
* get the exists source, NULL when not exists. * get the exists source, NULL when not exists.
* update the request and return the exists source. * update the request and return the exists source.
*/ */
static SrsSource* fetch(SrsRequest* r); static SrsSource* fetch(SrsRequest* r);
/** public:
* get the exists source by stream info(vhost, app, stream), NULL when not exists.
*/
static SrsSource* fetch(std::string vhost, std::string app, std::string stream);
/** /**
* dispose and cycle all sources. * dispose and cycle all sources.
*/ */