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.
|
||||
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);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -181,6 +181,11 @@ void SrsStatisticStream::close()
|
|||
SrsStatisticClient::SrsStatisticClient()
|
||||
{
|
||||
id = 0;
|
||||
stream = NULL;
|
||||
conn = NULL;
|
||||
req = NULL;
|
||||
type = SrsRtmpConnUnknown;
|
||||
create = srs_get_system_time_ms();
|
||||
}
|
||||
|
||||
SrsStatisticClient::~SrsStatisticClient()
|
||||
|
@ -192,7 +197,17 @@ int SrsStatisticClient::dumps(stringstream& ss)
|
|||
int ret = ERROR_SUCCESS;
|
||||
|
||||
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;
|
||||
|
||||
return ret;
|
||||
|
@ -322,7 +337,7 @@ void SrsStatistic::on_stream_close(SrsRequest* req)
|
|||
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;
|
||||
|
||||
|
@ -342,6 +357,8 @@ int SrsStatistic::on_client(int id, SrsRequest* req, SrsConnection* conn)
|
|||
|
||||
// got client.
|
||||
client->conn = conn;
|
||||
client->req = req;
|
||||
client->type = type;
|
||||
stream->nb_clients++;
|
||||
vhost->nb_clients++;
|
||||
|
||||
|
@ -464,7 +481,7 @@ int SrsStatistic::dumps_clients(stringstream& ss, int start, int count)
|
|||
|
||||
ss << SRS_JARRAY_START;
|
||||
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) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#include <string>
|
||||
|
||||
#include <srs_kernel_codec.hpp>
|
||||
#include <srs_rtmp_stack.hpp>
|
||||
|
||||
class SrsKbps;
|
||||
class SrsRequest;
|
||||
|
@ -113,7 +114,10 @@ struct SrsStatisticClient
|
|||
public:
|
||||
SrsStatisticStream* stream;
|
||||
SrsConnection* conn;
|
||||
SrsRequest* req;
|
||||
SrsRtmpConnType type;
|
||||
int id;
|
||||
int64_t create;
|
||||
public:
|
||||
SrsStatisticClient();
|
||||
virtual ~SrsStatisticClient();
|
||||
|
@ -183,8 +187,9 @@ public:
|
|||
* @param id, the client srs id.
|
||||
* @param req, the client request 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
|
||||
* @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) {
|
||||
case SrsRtmpConnPlay: return "Play";
|
||||
case SrsRtmpConnFlashPublish: return "publish(FlashPublish)";
|
||||
case SrsRtmpConnFMLEPublish: return "publish(FMLEPublish)";
|
||||
case SrsRtmpConnFlashPublish: return "flash-publish)";
|
||||
case SrsRtmpConnFMLEPublish: return "fmle-publish";
|
||||
default: return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
bool srs_client_type_is_publish(SrsRtmpConnType type)
|
||||
{
|
||||
return type != SrsRtmpConnPlay;
|
||||
}
|
||||
|
||||
SrsHandshakeBytes::SrsHandshakeBytes()
|
||||
{
|
||||
c0c1 = s0s1s2 = c2 = NULL;
|
||||
|
|
|
@ -622,6 +622,7 @@ enum SrsRtmpConnType
|
|||
SrsRtmpConnFlashPublish,
|
||||
};
|
||||
std::string srs_client_type_string(SrsRtmpConnType type);
|
||||
bool srs_client_type_is_publish(SrsRtmpConnType type);
|
||||
|
||||
/**
|
||||
* 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
|
||||
#ifndef _WIN32
|
||||
// for linux, generally it's 1024.
|
||||
static int limits = sysconf(_SC_IOV_MAX);
|
||||
static int limits = (int)sysconf(_SC_IOV_MAX);
|
||||
#else
|
||||
static int limits = 1024;
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue