mirror of
https://github.com/ossrs/srs.git
synced 2025-02-13 11:51:57 +00:00
Merge pull request #279 from tufang14/develop
add client num for stream in statistic for #227
This commit is contained in:
commit
ac584a4db2
4 changed files with 52 additions and 8 deletions
|
@ -530,9 +530,7 @@ int SrsApiVhosts::do_process_request(SrsStSocket* skt, SrsHttpMessage* req)
|
||||||
ss << __SRS_JOBJECT_START
|
ss << __SRS_JOBJECT_START
|
||||||
<< __SRS_JFIELD_ERROR(ret) << __SRS_JFIELD_CONT
|
<< __SRS_JFIELD_ERROR(ret) << __SRS_JFIELD_CONT
|
||||||
<< __SRS_JFIELD_ORG("server", stat->server_id()) << __SRS_JFIELD_CONT
|
<< __SRS_JFIELD_ORG("server", stat->server_id()) << __SRS_JFIELD_CONT
|
||||||
<< __SRS_JFIELD_ORG("vhosts", __SRS_JARRAY_START)
|
<< __SRS_JFIELD_ORG("vhosts", data.str())
|
||||||
<< data.str()
|
|
||||||
<< __SRS_JARRAY_END
|
|
||||||
<< __SRS_JOBJECT_END;
|
<< __SRS_JOBJECT_END;
|
||||||
|
|
||||||
return res_json(skt, req, ss.str());
|
return res_json(skt, req, ss.str());
|
||||||
|
@ -562,9 +560,7 @@ int SrsApiStreams::do_process_request(SrsStSocket* skt, SrsHttpMessage* req)
|
||||||
ss << __SRS_JOBJECT_START
|
ss << __SRS_JOBJECT_START
|
||||||
<< __SRS_JFIELD_ERROR(ret) << __SRS_JFIELD_CONT
|
<< __SRS_JFIELD_ERROR(ret) << __SRS_JFIELD_CONT
|
||||||
<< __SRS_JFIELD_ORG("server", stat->server_id()) << __SRS_JFIELD_CONT
|
<< __SRS_JFIELD_ORG("server", stat->server_id()) << __SRS_JFIELD_CONT
|
||||||
<< __SRS_JFIELD_ORG("streams", __SRS_JARRAY_START)
|
<< __SRS_JFIELD_ORG("streams", data.str())
|
||||||
<< data.str()
|
|
||||||
<< __SRS_JARRAY_END
|
|
||||||
<< __SRS_JOBJECT_END;
|
<< __SRS_JOBJECT_END;
|
||||||
|
|
||||||
return res_json(skt, req, ss.str());
|
return res_json(skt, req, ss.str());
|
||||||
|
|
|
@ -200,6 +200,7 @@ int SrsRtmpConn::do_cycle()
|
||||||
|
|
||||||
ret = service_cycle();
|
ret = service_cycle();
|
||||||
http_hooks_on_close();
|
http_hooks_on_close();
|
||||||
|
SrsStatistic::instance()->on_close(_srs_context->get_id());
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -122,6 +122,34 @@ int SrsStatistic::on_client(int id, SrsRequest* req)
|
||||||
stream = streams[url];
|
stream = streams[url];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// create client if not exists
|
||||||
|
SrsStatisticClient* client = NULL;
|
||||||
|
if (clients.find(id) == clients.end()) {
|
||||||
|
client = new SrsStatisticClient();
|
||||||
|
client->stream = stream;
|
||||||
|
clients[id] = client;
|
||||||
|
} else {
|
||||||
|
client = clients[id];
|
||||||
|
}
|
||||||
|
|
||||||
|
stream->clients[id] = client;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int SrsStatistic::on_close(int id)
|
||||||
|
{
|
||||||
|
int ret = ERROR_SUCCESS;
|
||||||
|
|
||||||
|
std::map<int, SrsStatisticClient*>::iterator it;
|
||||||
|
it = clients.find(id);
|
||||||
|
if (it != clients.end()) {
|
||||||
|
SrsStatisticClient* client = it->second;
|
||||||
|
client->stream->clients.erase(id);
|
||||||
|
srs_freep(client);
|
||||||
|
clients.erase(it);
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,14 +162,20 @@ int SrsStatistic::dumps_vhosts(stringstream& ss)
|
||||||
{
|
{
|
||||||
int ret = ERROR_SUCCESS;
|
int ret = ERROR_SUCCESS;
|
||||||
|
|
||||||
|
ss << __SRS_JARRAY_START;
|
||||||
std::map<std::string, SrsStatisticVhost*>::iterator it;
|
std::map<std::string, SrsStatisticVhost*>::iterator it;
|
||||||
for (it = vhosts.begin(); it != vhosts.end(); it++) {
|
for (it = vhosts.begin(); it != vhosts.end(); it++) {
|
||||||
SrsStatisticVhost* vhost = it->second;
|
SrsStatisticVhost* vhost = it->second;
|
||||||
|
if (it != vhosts.begin()) {
|
||||||
|
ss << __SRS_JFIELD_CONT;
|
||||||
|
}
|
||||||
|
|
||||||
ss << __SRS_JOBJECT_START
|
ss << __SRS_JOBJECT_START
|
||||||
<< __SRS_JFIELD_ORG("id", vhost->id) << __SRS_JFIELD_CONT
|
<< __SRS_JFIELD_ORG("id", vhost->id) << __SRS_JFIELD_CONT
|
||||||
<< __SRS_JFIELD_STR("name", vhost->vhost)
|
<< __SRS_JFIELD_STR("name", vhost->vhost)
|
||||||
<< __SRS_JOBJECT_END;
|
<< __SRS_JOBJECT_END;
|
||||||
}
|
}
|
||||||
|
ss << __SRS_JARRAY_END;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -150,15 +184,22 @@ int SrsStatistic::dumps_streams(stringstream& ss)
|
||||||
{
|
{
|
||||||
int ret = ERROR_SUCCESS;
|
int ret = ERROR_SUCCESS;
|
||||||
|
|
||||||
|
ss << __SRS_JARRAY_START;
|
||||||
std::map<std::string, SrsStatisticStream*>::iterator it;
|
std::map<std::string, SrsStatisticStream*>::iterator it;
|
||||||
for (it = streams.begin(); it != streams.end(); it++) {
|
for (it = streams.begin(); it != streams.end(); it++) {
|
||||||
SrsStatisticStream* stream = it->second;
|
SrsStatisticStream* stream = it->second;
|
||||||
|
if (it != streams.begin()) {
|
||||||
|
ss << __SRS_JFIELD_CONT;
|
||||||
|
}
|
||||||
|
|
||||||
ss << __SRS_JOBJECT_START
|
ss << __SRS_JOBJECT_START
|
||||||
<< __SRS_JFIELD_ORG("id", stream->id) << __SRS_JFIELD_CONT
|
<< __SRS_JFIELD_ORG("id", stream->id) << __SRS_JFIELD_CONT
|
||||||
<< __SRS_JFIELD_STR("name", stream->stream) << __SRS_JFIELD_CONT
|
<< __SRS_JFIELD_STR("name", stream->stream) << __SRS_JFIELD_CONT
|
||||||
<< __SRS_JFIELD_ORG("vhost", stream->vhost->id)
|
<< __SRS_JFIELD_ORG("vhost", stream->vhost->id) << __SRS_JFIELD_CONT
|
||||||
|
<< __SRS_JFIELD_ORG("clients", stream->clients.size())
|
||||||
<< __SRS_JOBJECT_END;
|
<< __SRS_JOBJECT_END;
|
||||||
}
|
}
|
||||||
|
ss << __SRS_JARRAY_END;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class SrsRequest;
|
class SrsRequest;
|
||||||
|
struct SrsStatisticClient;
|
||||||
|
|
||||||
struct SrsStatisticVhost
|
struct SrsStatisticVhost
|
||||||
{
|
{
|
||||||
|
@ -53,6 +54,7 @@ public:
|
||||||
std::string app;
|
std::string app;
|
||||||
std::string stream;
|
std::string stream;
|
||||||
std::string url;
|
std::string url;
|
||||||
|
std::map<int, SrsStatisticClient*> clients;
|
||||||
public:
|
public:
|
||||||
SrsStatisticStream();
|
SrsStatisticStream();
|
||||||
virtual ~SrsStatisticStream();
|
virtual ~SrsStatisticStream();
|
||||||
|
@ -89,6 +91,10 @@ public:
|
||||||
* @param req, the client request object.
|
* @param req, the client request object.
|
||||||
*/
|
*/
|
||||||
virtual int on_client(int id, SrsRequest* req);
|
virtual int on_client(int id, SrsRequest* req);
|
||||||
|
/**
|
||||||
|
* client close
|
||||||
|
*/
|
||||||
|
virtual int on_close(int id);
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* get the server id, used to identify the server.
|
* get the server id, used to identify the server.
|
||||||
|
|
Loading…
Reference in a new issue