mirror of
https://github.com/ossrs/srs.git
synced 2025-02-13 03:41:55 +00:00
Refine get_queue_length and set_queue_size in time unit
This commit is contained in:
parent
e3983b3513
commit
c1b64ba24f
13 changed files with 43 additions and 32 deletions
|
@ -4459,9 +4459,9 @@ bool SrsConfig::get_mix_correct(string vhost)
|
|||
return SRS_CONF_PERFER_FALSE(conf->arg0());
|
||||
}
|
||||
|
||||
double SrsConfig::get_queue_length(string vhost)
|
||||
srs_utime_t SrsConfig::get_queue_length(string vhost)
|
||||
{
|
||||
static double DEFAULT = SRS_PERF_PLAY_QUEUE;
|
||||
static srs_utime_t DEFAULT = SRS_PERF_PLAY_QUEUE;
|
||||
|
||||
SrsConfDirective* conf = get_vhost(vhost);
|
||||
if (!conf) {
|
||||
|
@ -4478,7 +4478,7 @@ double SrsConfig::get_queue_length(string vhost)
|
|||
return DEFAULT;
|
||||
}
|
||||
|
||||
return ::atoi(conf->arg0().c_str());
|
||||
return srs_utime_t(::atoi(conf->arg0().c_str()) * SRS_UTIME_SECONDS);
|
||||
}
|
||||
|
||||
bool SrsConfig::get_refer_enabled(string vhost)
|
||||
|
|
|
@ -729,11 +729,11 @@ public:
|
|||
*/
|
||||
virtual bool get_mix_correct(std::string vhost);
|
||||
/**
|
||||
* get the cache queue length, in seconds.
|
||||
* get the cache queue length, in srs_utime_t.
|
||||
* when exceed the queue length, drop packet util I frame.
|
||||
* @remark, default 10.
|
||||
* @remark, default 10s.
|
||||
*/
|
||||
virtual double get_queue_length(std::string vhost);
|
||||
virtual srs_utime_t get_queue_length(std::string vhost);
|
||||
/**
|
||||
* whether the refer hotlink-denial enabled.
|
||||
*/
|
||||
|
|
|
@ -433,7 +433,7 @@ SrsEdgeForwarder::~SrsEdgeForwarder()
|
|||
srs_freep(queue);
|
||||
}
|
||||
|
||||
void SrsEdgeForwarder::set_queue_size(double queue_size)
|
||||
void SrsEdgeForwarder::set_queue_size(srs_utime_t queue_size)
|
||||
{
|
||||
return queue->set_queue_size(queue_size);
|
||||
}
|
||||
|
@ -710,7 +710,7 @@ SrsPublishEdge::~SrsPublishEdge()
|
|||
srs_freep(forwarder);
|
||||
}
|
||||
|
||||
void SrsPublishEdge::set_queue_size(double queue_size)
|
||||
void SrsPublishEdge::set_queue_size(srs_utime_t queue_size)
|
||||
{
|
||||
return forwarder->set_queue_size(queue_size);
|
||||
}
|
||||
|
|
|
@ -170,7 +170,7 @@ public:
|
|||
SrsEdgeForwarder();
|
||||
virtual ~SrsEdgeForwarder();
|
||||
public:
|
||||
virtual void set_queue_size(double queue_size);
|
||||
virtual void set_queue_size(srs_utime_t queue_size);
|
||||
public:
|
||||
virtual srs_error_t initialize(SrsSource* s, SrsPublishEdge* e, SrsRequest* r);
|
||||
virtual srs_error_t start();
|
||||
|
@ -232,7 +232,7 @@ public:
|
|||
SrsPublishEdge();
|
||||
virtual ~SrsPublishEdge();
|
||||
public:
|
||||
virtual void set_queue_size(double queue_size);
|
||||
virtual void set_queue_size(srs_utime_t queue_size);
|
||||
public:
|
||||
virtual srs_error_t initialize(SrsSource* source, SrsRequest* req);
|
||||
virtual bool can_publish();
|
||||
|
|
|
@ -85,7 +85,7 @@ srs_error_t SrsForwarder::initialize(SrsRequest* r, string ep)
|
|||
return err;
|
||||
}
|
||||
|
||||
void SrsForwarder::set_queue_size(double queue_size)
|
||||
void SrsForwarder::set_queue_size(srs_utime_t queue_size)
|
||||
{
|
||||
queue->set_queue_size(queue_size);
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@ public:
|
|||
virtual ~SrsForwarder();
|
||||
public:
|
||||
virtual srs_error_t initialize(SrsRequest* r, std::string ep);
|
||||
virtual void set_queue_size(double queue_size);
|
||||
virtual void set_queue_size(srs_utime_t queue_size);
|
||||
public:
|
||||
virtual srs_error_t on_publish();
|
||||
virtual void on_unpublish();
|
||||
|
|
|
@ -64,7 +64,7 @@ SrsBufferCache::SrsBufferCache(SrsSource* s, SrsRequest* r)
|
|||
trd = new SrsSTCoroutine("http-stream", this);
|
||||
|
||||
// TODO: FIXME: support reload.
|
||||
fast_cache = _srs_config->get_vhost_http_remux_fast_cache(req->vhost);
|
||||
fast_cache = srs_utime_t(_srs_config->get_vhost_http_remux_fast_cache(req->vhost) * SRS_UTIME_SECONDS);
|
||||
}
|
||||
|
||||
SrsBufferCache::~SrsBufferCache()
|
||||
|
@ -108,7 +108,8 @@ srs_error_t SrsBufferCache::dump_cache(SrsConsumer* consumer, SrsRtmpJitterAlgor
|
|||
return srs_error_wrap(err, "dump packets");
|
||||
}
|
||||
|
||||
srs_trace("http: dump cache %d msgs, duration=%dms, cache=%.2fs", queue->size(), srsu2msi(queue->duration()), fast_cache);
|
||||
srs_trace("http: dump cache %d msgs, duration=%dms, cache=%dms",
|
||||
queue->size(), srsu2msi(queue->duration()), srsu2msi(fast_cache));
|
||||
|
||||
return err;
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ class SrsTsTransmuxer;
|
|||
class SrsBufferCache : public ISrsCoroutineHandler
|
||||
{
|
||||
private:
|
||||
double fast_cache;
|
||||
srs_utime_t fast_cache;
|
||||
private:
|
||||
SrsMessageQueue* queue;
|
||||
SrsSource* source;
|
||||
|
|
|
@ -260,9 +260,9 @@ srs_utime_t SrsMessageQueue::duration()
|
|||
return (av_end_time - av_start_time);
|
||||
}
|
||||
|
||||
void SrsMessageQueue::set_queue_size(double queue_size)
|
||||
void SrsMessageQueue::set_queue_size(srs_utime_t queue_size)
|
||||
{
|
||||
max_queue_size = srs_utime_t(queue_size * SRS_UTIME_SECONDS);
|
||||
max_queue_size = queue_size;
|
||||
}
|
||||
|
||||
srs_error_t SrsMessageQueue::enqueue(SrsSharedPtrMessage* msg, bool* is_overflow)
|
||||
|
@ -442,7 +442,7 @@ SrsConsumer::~SrsConsumer()
|
|||
#endif
|
||||
}
|
||||
|
||||
void SrsConsumer::set_queue_size(double queue_size)
|
||||
void SrsConsumer::set_queue_size(srs_utime_t queue_size)
|
||||
{
|
||||
queue->set_queue_size(queue_size);
|
||||
}
|
||||
|
@ -1468,9 +1468,8 @@ srs_error_t SrsOriginHub::create_forwarders()
|
|||
if ((err = forwarder->initialize(req, forward_server)) != srs_success) {
|
||||
return srs_error_wrap(err, "init forwarder");
|
||||
}
|
||||
|
||||
// TODO: FIXME: support queue size.
|
||||
double queue_size = _srs_config->get_queue_length(req->vhost);
|
||||
|
||||
srs_utime_t queue_size = _srs_config->get_queue_length(req->vhost);
|
||||
forwarder->set_queue_size(queue_size);
|
||||
|
||||
if ((err = forwarder->on_publish()) != srs_success) {
|
||||
|
@ -1864,7 +1863,7 @@ srs_error_t SrsSource::initialize(SrsRequest* r, ISrsSourceHandler* h)
|
|||
return srs_error_wrap(err, "edge(publish)");
|
||||
}
|
||||
|
||||
double queue_size = _srs_config->get_queue_length(req->vhost);
|
||||
srs_utime_t queue_size = _srs_config->get_queue_length(req->vhost);
|
||||
publish_edge->set_queue_size(queue_size);
|
||||
|
||||
jitter_algorithm = (SrsRtmpJitterAlgorithm)_srs_config->get_time_jitter(req->vhost);
|
||||
|
@ -1919,7 +1918,7 @@ srs_error_t SrsSource::on_reload_vhost_play(string vhost)
|
|||
|
||||
// queue length
|
||||
if (true) {
|
||||
double v = _srs_config->get_queue_length(req->vhost);
|
||||
srs_utime_t v = _srs_config->get_queue_length(req->vhost);
|
||||
|
||||
if (true) {
|
||||
std::vector<SrsConsumer*>::iterator it;
|
||||
|
@ -2443,7 +2442,7 @@ srs_error_t SrsSource::create_consumer(SrsConnection* conn, SrsConsumer*& consum
|
|||
consumer = new SrsConsumer(this, conn);
|
||||
consumers.push_back(consumer);
|
||||
|
||||
double queue_size = _srs_config->get_queue_length(req->vhost);
|
||||
srs_utime_t queue_size = _srs_config->get_queue_length(req->vhost);
|
||||
consumer->set_queue_size(queue_size);
|
||||
|
||||
// if atc, update the sequence header to gop cache time.
|
||||
|
|
|
@ -161,9 +161,9 @@ public:
|
|||
virtual srs_utime_t duration();
|
||||
/**
|
||||
* set the queue size
|
||||
* @param queue_size the queue size in seconds.
|
||||
* @param queue_size the queue size in srs_utime_t.
|
||||
*/
|
||||
virtual void set_queue_size(double queue_size);
|
||||
virtual void set_queue_size(srs_utime_t queue_size);
|
||||
public:
|
||||
/**
|
||||
* enqueue the message, the timestamp always monotonically.
|
||||
|
@ -243,7 +243,7 @@ public:
|
|||
/**
|
||||
* set the size of queue.
|
||||
*/
|
||||
virtual void set_queue_size(double queue_size);
|
||||
virtual void set_queue_size(srs_utime_t queue_size);
|
||||
/**
|
||||
* when source id changed, notice client to print.
|
||||
*/
|
||||
|
|
|
@ -148,8 +148,8 @@
|
|||
*/
|
||||
// whether gop cache is on.
|
||||
#define SRS_PERF_GOP_CACHE true
|
||||
// in seconds, the live queue length.
|
||||
#define SRS_PERF_PLAY_QUEUE 30
|
||||
// in srs_utime_t, the live queue length.
|
||||
#define SRS_PERF_PLAY_QUEUE (30 * SRS_UTIME_SECONDS)
|
||||
|
||||
/**
|
||||
* whether always use complex send algorithm.
|
||||
|
|
|
@ -306,7 +306,7 @@ void show_macro_features()
|
|||
// gc(gop-cache)
|
||||
ss << "gc:" << srs_bool2switch(SRS_PERF_GOP_CACHE);
|
||||
// pq(play-queue)
|
||||
ss << ", pq:" << SRS_PERF_PLAY_QUEUE << "s";
|
||||
ss << ", pq:" << srsu2msi(SRS_PERF_PLAY_QUEUE) << "ms";
|
||||
// cscc(chunk stream cache cid)
|
||||
ss << ", cscc:[0," << SRS_PERF_CHUNK_STREAM_CACHE << ")";
|
||||
// csa(complex send algorithm)
|
||||
|
@ -342,7 +342,7 @@ void show_macro_features()
|
|||
possible_mr_latency = srsu2msi(SRS_PERF_MR_SLEEP);
|
||||
#endif
|
||||
srs_trace("system default latency in ms: mw(0-%d) + mr(0-%d) + play-queue(0-%d)",
|
||||
srsu2msi(SRS_PERF_MW_SLEEP), possible_mr_latency, SRS_PERF_PLAY_QUEUE*1000);
|
||||
srsu2msi(SRS_PERF_MW_SLEEP), possible_mr_latency, srsu2msi(SRS_PERF_PLAY_QUEUE));
|
||||
|
||||
#ifdef SRS_AUTO_MEM_WATCH
|
||||
#warning "srs memory watcher will hurts performance. user should kill by SIGTERM or init.d script."
|
||||
|
|
|
@ -1806,7 +1806,7 @@ VOID TEST(ConfigMainTest, CheckConf_vhost_ingest_id)
|
|||
EXPECT_TRUE(ERROR_SUCCESS != conf.parse(_MIN_OK_CONF"vhost v{ingest{} ingest{}}"));
|
||||
}
|
||||
|
||||
VOID TEST(ConfigUnitTest, CheckDefaultValues)
|
||||
VOID TEST(ConfigUnitTest, CheckDefaultValuesVhost)
|
||||
{
|
||||
MockSrsConfig conf;
|
||||
|
||||
|
@ -1875,6 +1875,17 @@ VOID TEST(ConfigUnitTest, CheckDefaultValues)
|
|||
EXPECT_EQ(10 * SRS_UTIME_SECONDS, conf.get_hls_dispose("v"));
|
||||
}
|
||||
|
||||
if (true) {
|
||||
EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF));
|
||||
EXPECT_EQ(30 * SRS_UTIME_SECONDS, conf.get_queue_length(""));
|
||||
|
||||
EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost v{play{queue_length 100;}}"));
|
||||
EXPECT_EQ(100 * SRS_UTIME_SECONDS, conf.get_queue_length("v"));
|
||||
}
|
||||
}
|
||||
|
||||
VOID TEST(ConfigUnitTest, CheckDefaultValuesGlobal)
|
||||
{
|
||||
if (true) {
|
||||
srs_utime_t t0 = srs_update_system_time();
|
||||
srs_usleep(10 * SRS_UTIME_MILLISECONDS);
|
||||
|
|
Loading…
Reference in a new issue