Merge pull request #138 from attilamolnar/insp12+sestatsfix

[1.2] Count the actual number of sent/received bytes in SocketEngine statistics
This commit is contained in:
Robin Burchell 2012-05-23 03:17:07 -07:00
commit f99847f5a9
2 changed files with 17 additions and 9 deletions

View File

@ -202,7 +202,7 @@ DllExport void DoStats(InspIRCd* ServerInstance, char statschar, User* user, str
results.push_back(sn+" 240 "+user->nick+" :InspIRCd(CLASS) "+ConvToStr(sizeof(InspIRCd))+" bytes");
results.push_back(sn+" 249 "+user->nick+" :Users(HASH_MAP) "+ConvToStr(ServerInstance->Users->clientlist->size())+" ("+ConvToStr(ServerInstance->Users->clientlist->size()*sizeof(User))+" bytes)");
results.push_back(sn+" 249 "+user->nick+" :Channels(HASH_MAP) "+ConvToStr(ServerInstance->chanlist->size())+" ("+ConvToStr(ServerInstance->chanlist->size()*sizeof(Channel))+" bytes)");
results.push_back(sn+" 249 "+user->nick+" :Commands(VECTOR) "+ConvToStr(ServerInstance->Parser->cmdlist.size())+" ("+ConvToStr(ServerInstance->Parser->cmdlist.size()*sizeof(Command))+" bytes)");
results.push_back(sn+" 249 "+user->nick+" :Commands(HASH_MAP) "+ConvToStr(ServerInstance->Parser->cmdlist.size())+" ("+ConvToStr(ServerInstance->Parser->cmdlist.size()*sizeof(Command))+" bytes)");
if (!ServerInstance->Config->WhoWasGroupSize == 0 && !ServerInstance->Config->WhoWasMaxGroups == 0)
{

View File

@ -219,26 +219,34 @@ int SocketEngine::GetSockName(EventHandler* fd, sockaddr *name, socklen_t* namel
int SocketEngine::RecvFrom(EventHandler* fd, void *buf, size_t len, int flags, sockaddr *from, socklen_t *fromlen)
{
this->UpdateStats(len, 0);
return recvfrom(fd->GetFd(), (char*)buf, len, flags, from, fromlen);
int nbRecvd = recvfrom(fd->GetFd(), (char*)buf, len, flags, from, fromlen);
if (nbRecvd > 0)
this->UpdateStats(nbRecvd, 0);
return nbRecvd;
}
int SocketEngine::Send(EventHandler* fd, const void *buf, size_t len, int flags)
{
this->UpdateStats(0, len);
return send(fd->GetFd(), (const char*)buf, len, flags);
int nbSent = send(fd->GetFd(), (const char*)buf, len, flags);
if (nbSent > 0)
this->UpdateStats(0, nbSent);
return nbSent;
}
int SocketEngine::Recv(EventHandler* fd, void *buf, size_t len, int flags)
{
this->UpdateStats(len, 0);
return recv(fd->GetFd(), (char*)buf, len, flags);
int nbRecvd = recv(fd->GetFd(), (char*)buf, len, flags);
if (nbRecvd > 0)
this->UpdateStats(nbRecvd, 0);
return nbRecvd;
}
int SocketEngine::SendTo(EventHandler* fd, const void *buf, size_t len, int flags, const sockaddr *to, socklen_t tolen)
{
this->UpdateStats(0, len);
return sendto(fd->GetFd(), (const char*)buf, len, flags, to, tolen);
int nbSent = sendto(fd->GetFd(), (const char*)buf, len, flags, to, tolen);
if (nbSent > 0)
this->UpdateStats(0, nbSent);
return nbSent;
}
int SocketEngine::Connect(EventHandler* fd, const sockaddr *serv_addr, socklen_t addrlen)