mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
for #442, add more information for client for api.
This commit is contained in:
parent
94641c812b
commit
aeebddb269
6 changed files with 36 additions and 8 deletions
|
@ -495,7 +495,7 @@ int SrsRtmpConn::stream_service_cycle()
|
||||||
|
|
||||||
// update the statistic when source disconveried.
|
// update the statistic when source disconveried.
|
||||||
SrsStatistic* stat = SrsStatistic::instance();
|
SrsStatistic* stat = SrsStatistic::instance();
|
||||||
if ((ret = stat->on_client(_srs_context->get_id(), req, this)) != ERROR_SUCCESS) {
|
if ((ret = stat->on_client(_srs_context->get_id(), req, this, type)) != ERROR_SUCCESS) {
|
||||||
srs_error("stat client failed. ret=%d", ret);
|
srs_error("stat client failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -181,6 +181,11 @@ void SrsStatisticStream::close()
|
||||||
SrsStatisticClient::SrsStatisticClient()
|
SrsStatisticClient::SrsStatisticClient()
|
||||||
{
|
{
|
||||||
id = 0;
|
id = 0;
|
||||||
|
stream = NULL;
|
||||||
|
conn = NULL;
|
||||||
|
req = NULL;
|
||||||
|
type = SrsRtmpConnUnknown;
|
||||||
|
create = srs_get_system_time_ms();
|
||||||
}
|
}
|
||||||
|
|
||||||
SrsStatisticClient::~SrsStatisticClient()
|
SrsStatisticClient::~SrsStatisticClient()
|
||||||
|
@ -192,7 +197,17 @@ int SrsStatisticClient::dumps(stringstream& ss)
|
||||||
int ret = ERROR_SUCCESS;
|
int ret = ERROR_SUCCESS;
|
||||||
|
|
||||||
ss << SRS_JOBJECT_START
|
ss << SRS_JOBJECT_START
|
||||||
<< SRS_JFIELD_ORG("id", id)
|
<< SRS_JFIELD_ORG("id", id) << SRS_JFIELD_CONT
|
||||||
|
<< SRS_JFIELD_ORG("vhost", stream->vhost->id) << SRS_JFIELD_CONT
|
||||||
|
<< SRS_JFIELD_ORG("stream", stream->id) << SRS_JFIELD_CONT
|
||||||
|
<< SRS_JFIELD_STR("ip", req->ip) << SRS_JFIELD_CONT
|
||||||
|
<< SRS_JFIELD_STR("pageUrl", req->pageUrl) << SRS_JFIELD_CONT
|
||||||
|
<< SRS_JFIELD_STR("swfUrl", req->swfUrl) << SRS_JFIELD_CONT
|
||||||
|
<< SRS_JFIELD_STR("tcUrl", req->tcUrl) << SRS_JFIELD_CONT
|
||||||
|
<< SRS_JFIELD_STR("url", req->get_stream_url()) << SRS_JFIELD_CONT
|
||||||
|
<< SRS_JFIELD_STR("type", srs_client_type_string(type)) << SRS_JFIELD_CONT
|
||||||
|
<< SRS_JFIELD_BOOL("publish", srs_client_type_is_publish(type)) << SRS_JFIELD_CONT
|
||||||
|
<< SRS_JFIELD_ORG("alive", srs_get_system_time_ms() - create)
|
||||||
<< SRS_JOBJECT_END;
|
<< SRS_JOBJECT_END;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -322,7 +337,7 @@ void SrsStatistic::on_stream_close(SrsRequest* req)
|
||||||
stream->close();
|
stream->close();
|
||||||
}
|
}
|
||||||
|
|
||||||
int SrsStatistic::on_client(int id, SrsRequest* req, SrsConnection* conn)
|
int SrsStatistic::on_client(int id, SrsRequest* req, SrsConnection* conn, SrsRtmpConnType type)
|
||||||
{
|
{
|
||||||
int ret = ERROR_SUCCESS;
|
int ret = ERROR_SUCCESS;
|
||||||
|
|
||||||
|
@ -342,6 +357,8 @@ int SrsStatistic::on_client(int id, SrsRequest* req, SrsConnection* conn)
|
||||||
|
|
||||||
// got client.
|
// got client.
|
||||||
client->conn = conn;
|
client->conn = conn;
|
||||||
|
client->req = req;
|
||||||
|
client->type = type;
|
||||||
stream->nb_clients++;
|
stream->nb_clients++;
|
||||||
vhost->nb_clients++;
|
vhost->nb_clients++;
|
||||||
|
|
||||||
|
@ -464,7 +481,7 @@ int SrsStatistic::dumps_clients(stringstream& ss, int start, int count)
|
||||||
|
|
||||||
ss << SRS_JARRAY_START;
|
ss << SRS_JARRAY_START;
|
||||||
std::map<int, SrsStatisticClient*>::iterator it = clients.begin();
|
std::map<int, SrsStatisticClient*>::iterator it = clients.begin();
|
||||||
for (int i = 0; i < count && it != clients.end(); it++) {
|
for (int i = 0; i < start + count && it != clients.end(); it++, i++) {
|
||||||
if (i < start) {
|
if (i < start) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include <srs_kernel_codec.hpp>
|
#include <srs_kernel_codec.hpp>
|
||||||
|
#include <srs_rtmp_stack.hpp>
|
||||||
|
|
||||||
class SrsKbps;
|
class SrsKbps;
|
||||||
class SrsRequest;
|
class SrsRequest;
|
||||||
|
@ -113,7 +114,10 @@ struct SrsStatisticClient
|
||||||
public:
|
public:
|
||||||
SrsStatisticStream* stream;
|
SrsStatisticStream* stream;
|
||||||
SrsConnection* conn;
|
SrsConnection* conn;
|
||||||
|
SrsRequest* req;
|
||||||
|
SrsRtmpConnType type;
|
||||||
int id;
|
int id;
|
||||||
|
int64_t create;
|
||||||
public:
|
public:
|
||||||
SrsStatisticClient();
|
SrsStatisticClient();
|
||||||
virtual ~SrsStatisticClient();
|
virtual ~SrsStatisticClient();
|
||||||
|
@ -183,8 +187,9 @@ public:
|
||||||
* @param id, the client srs id.
|
* @param id, the client srs id.
|
||||||
* @param req, the client request object.
|
* @param req, the client request object.
|
||||||
* @param conn, the physical absract connection object.
|
* @param conn, the physical absract connection object.
|
||||||
|
* @param type, the type of connection.
|
||||||
*/
|
*/
|
||||||
virtual int on_client(int id, SrsRequest* req, SrsConnection* conn);
|
virtual int on_client(int id, SrsRequest* req, SrsConnection* conn, SrsRtmpConnType type);
|
||||||
/**
|
/**
|
||||||
* client disconnect
|
* client disconnect
|
||||||
* @remark the on_disconnect always call, while the on_client is call when
|
* @remark the on_disconnect always call, while the on_client is call when
|
||||||
|
|
|
@ -1747,12 +1747,17 @@ string srs_client_type_string(SrsRtmpConnType type)
|
||||||
{
|
{
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case SrsRtmpConnPlay: return "Play";
|
case SrsRtmpConnPlay: return "Play";
|
||||||
case SrsRtmpConnFlashPublish: return "publish(FlashPublish)";
|
case SrsRtmpConnFlashPublish: return "flash-publish)";
|
||||||
case SrsRtmpConnFMLEPublish: return "publish(FMLEPublish)";
|
case SrsRtmpConnFMLEPublish: return "fmle-publish";
|
||||||
default: return "Unknown";
|
default: return "Unknown";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool srs_client_type_is_publish(SrsRtmpConnType type)
|
||||||
|
{
|
||||||
|
return type != SrsRtmpConnPlay;
|
||||||
|
}
|
||||||
|
|
||||||
SrsHandshakeBytes::SrsHandshakeBytes()
|
SrsHandshakeBytes::SrsHandshakeBytes()
|
||||||
{
|
{
|
||||||
c0c1 = s0s1s2 = c2 = NULL;
|
c0c1 = s0s1s2 = c2 = NULL;
|
||||||
|
|
|
@ -622,6 +622,7 @@ enum SrsRtmpConnType
|
||||||
SrsRtmpConnFlashPublish,
|
SrsRtmpConnFlashPublish,
|
||||||
};
|
};
|
||||||
std::string srs_client_type_string(SrsRtmpConnType type);
|
std::string srs_client_type_string(SrsRtmpConnType type);
|
||||||
|
bool srs_client_type_is_publish(SrsRtmpConnType type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* store the handshake bytes,
|
* store the handshake bytes,
|
||||||
|
|
|
@ -247,7 +247,7 @@ int srs_write_large_iovs(ISrsProtocolReaderWriter* skt, iovec* iovs, int size, s
|
||||||
// for srs-librtmp, @see https://github.com/simple-rtmp-server/srs/issues/213
|
// for srs-librtmp, @see https://github.com/simple-rtmp-server/srs/issues/213
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
// for linux, generally it's 1024.
|
// for linux, generally it's 1024.
|
||||||
static int limits = sysconf(_SC_IOV_MAX);
|
static int limits = (int)sysconf(_SC_IOV_MAX);
|
||||||
#else
|
#else
|
||||||
static int limits = 1024;
|
static int limits = 1024;
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue