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+" 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+" :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+" :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) 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) int SocketEngine::RecvFrom(EventHandler* fd, void *buf, size_t len, int flags, sockaddr *from, socklen_t *fromlen)
{ {
this->UpdateStats(len, 0); int nbRecvd = recvfrom(fd->GetFd(), (char*)buf, len, flags, from, fromlen);
return 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) int SocketEngine::Send(EventHandler* fd, const void *buf, size_t len, int flags)
{ {
this->UpdateStats(0, len); int nbSent = send(fd->GetFd(), (const char*)buf, len, flags);
return 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) int SocketEngine::Recv(EventHandler* fd, void *buf, size_t len, int flags)
{ {
this->UpdateStats(len, 0); int nbRecvd = recv(fd->GetFd(), (char*)buf, len, flags);
return 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) int SocketEngine::SendTo(EventHandler* fd, const void *buf, size_t len, int flags, const sockaddr *to, socklen_t tolen)
{ {
this->UpdateStats(0, len); int nbSent = sendto(fd->GetFd(), (const char*)buf, len, flags, to, tolen);
return 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) int SocketEngine::Connect(EventHandler* fd, const sockaddr *serv_addr, socklen_t addrlen)