1
0
Fork 0
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:
winlin 2015-08-22 13:57:34 +08:00
parent 94641c812b
commit aeebddb269
6 changed files with 36 additions and 8 deletions

View file

@ -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;
} }

View file

@ -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;
} }

View file

@ -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

View file

@ -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;

View file

@ -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,

View file

@ -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