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

refine hls notify, support timeout.

This commit is contained in:
winlin 2015-04-10 13:45:21 +08:00
parent d8988da0ea
commit 1f93fb3399
4 changed files with 19 additions and 10 deletions

View file

@ -37,15 +37,13 @@ using namespace std;
#include <srs_app_utility.hpp>
#include <srs_core_autofree.hpp>
// when error, http client sleep for a while and retry.
#define SRS_HTTP_CLIENT_SLEEP_US (int64_t)(3*1000*1000LL)
SrsHttpClient::SrsHttpClient()
{
connected = false;
stfd = NULL;
skt = NULL;
parser = NULL;
timeout_us = 0;
}
SrsHttpClient::~SrsHttpClient()
@ -54,7 +52,7 @@ SrsHttpClient::~SrsHttpClient()
srs_freep(parser);
}
int SrsHttpClient::initialize(string h, int p)
int SrsHttpClient::initialize(string h, int p, int64_t t_us)
{
int ret = ERROR_SUCCESS;
@ -68,6 +66,7 @@ int SrsHttpClient::initialize(string h, int p)
host = h;
port = p;
timeout_us = t_us;
return ret;
}
@ -183,10 +182,9 @@ int SrsHttpClient::connect()
disconnect();
// open socket.
int64_t timeout = SRS_HTTP_CLIENT_SLEEP_US;
if ((ret = srs_socket_connect(host, port, timeout, &stfd)) != ERROR_SUCCESS) {
if ((ret = srs_socket_connect(host, port, timeout_us, &stfd)) != ERROR_SUCCESS) {
srs_warn("http client failed, server=%s, port=%d, timeout=%"PRId64", ret=%d",
host.c_str(), port, timeout, ret);
host.c_str(), port, timeout_us, ret);
return ret;
}
srs_info("connect to server success. server=%s, port=%d", host, port);
@ -195,6 +193,10 @@ int SrsHttpClient::connect()
skt = new SrsStSocket(stfd);
connected = true;
// set the recv/send timeout in us.
skt->set_recv_timeout(timeout_us);
skt->set_send_timeout(timeout_us);
return ret;
}

View file

@ -40,6 +40,9 @@ class SrsHttpParser;
class SrsHttpMessage;
class SrsStSocket;
// the default timeout for http client.
#define SRS_HTTP_CLIENT_TIMEOUT_US (int64_t)(30*1000*1000LL)
/**
* http client to GET/POST/PUT/DELETE uri
*/
@ -51,6 +54,7 @@ private:
SrsStSocket* skt;
SrsHttpParser* parser;
private:
int64_t timeout_us;
// host name or ip.
std::string host;
int port;
@ -61,7 +65,7 @@ public:
/**
* initialize the client, connect to host and port.
*/
virtual int initialize(std::string h, int p);
virtual int initialize(std::string h, int p, int64_t t_us = SRS_HTTP_CLIENT_TIMEOUT_US);
public:
/**
* to post data to the uri.

View file

@ -44,6 +44,9 @@ using namespace std;
#define SRS_HTTP_HEADER_BUFFER 1024
#define SRS_HTTP_BODY_BUFFER 32 * 1024
// the timeout for hls notify, in us.
#define SRS_HLS_NOTIFY_TIMEOUT_US (int64_t)(10*1000*1000LL)
SrsHttpHooks::SrsHttpHooks()
{
}
@ -350,7 +353,7 @@ int SrsHttpHooks::on_hls_notify(std::string url, SrsRequest* req, std::string ts
}
SrsHttpClient http;
if ((ret = http.initialize(uri.get_host(), uri.get_port())) != ERROR_SUCCESS) {
if ((ret = http.initialize(uri.get_host(), uri.get_port(), SRS_HLS_NOTIFY_TIMEOUT_US)) != ERROR_SUCCESS) {
return ret;
}

View file

@ -390,7 +390,7 @@ bool srs_aac_startswith_adts(SrsStream* stream)
char* bytes = stream->data() + stream->pos();
char* p = bytes;
if (!stream->require(p - bytes + 2)) {
if (!stream->require((int)(p - bytes) + 2)) {
return false;
}