[+] ISocketServer::GetServerRecvStats()
[+] ISocketServer::GetServerSendStats()
This commit is contained in:
parent
81871ed0b8
commit
e0f74d6160
@ -15,5 +15,7 @@ namespace Aurora::IO::Net
|
||||
virtual AuUInt32 GetSessionCount() = 0;
|
||||
virtual AuSPtr<ISocketServerLimits> GetLimits() = 0;
|
||||
virtual AuSPtr<ISocketServerDriver> GetServerDriver() = 0;
|
||||
virtual AuSPtr<ISocketStats> GetServerRecvStats() = 0;
|
||||
virtual AuSPtr<ISocketStats> GetServerSendStats() = 0;
|
||||
};
|
||||
}
|
@ -493,6 +493,11 @@ namespace Aurora::IO::Net
|
||||
|
||||
auto uHeadDelta = pReadableBuffer ? (pReadableBuffer->readPtr - pStartOffset) : 0;
|
||||
this->socketChannel_.GetRecvStatsEx().AddBytes(uHeadDelta);
|
||||
|
||||
if (auto pServerRecvStats = this->socketChannel_.GetRecvStatsEx2())
|
||||
{
|
||||
pServerRecvStats->AddBytes(uHeadDelta);
|
||||
}
|
||||
}
|
||||
|
||||
const NetError &SocketBase::GetError()
|
||||
|
@ -132,6 +132,7 @@ namespace Aurora::IO::Net
|
||||
|
||||
friend struct NetWriteQueue;
|
||||
friend struct SocketChannelOutput;
|
||||
friend struct SocketChannel;
|
||||
|
||||
NetEndpoint remoteEndpoint_;
|
||||
NetEndpoint localEndpoint_;
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "AuNetWorker.hpp"
|
||||
#include <Source/IO/Protocol/Protocol.hpp>
|
||||
#include <Source/IO/Protocol/AuProtocolStack.hpp>
|
||||
#include "AuNetSocketServer.hpp"
|
||||
|
||||
namespace Aurora::IO::Net
|
||||
{
|
||||
@ -313,6 +314,44 @@ namespace Aurora::IO::Net
|
||||
return this->recvStats_;
|
||||
}
|
||||
|
||||
SocketStats *SocketChannel::GetSendStatsEx2()
|
||||
{
|
||||
if (auto pTest = this->pParent_->GetSocketServer())
|
||||
{
|
||||
if (auto pWP2 = this->pParent_->wpParent2_)
|
||||
{
|
||||
return &pWP2->sendStats_;
|
||||
}
|
||||
else
|
||||
{
|
||||
return {};
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
SocketStats *SocketChannel::GetRecvStatsEx2()
|
||||
{
|
||||
if (auto pTest = this->pParent_->GetSocketServer())
|
||||
{
|
||||
if (auto pWP2 = this->pParent_->wpParent2_)
|
||||
{
|
||||
return &pWP2->recvStats_;
|
||||
}
|
||||
else
|
||||
{
|
||||
return {};
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
void SocketChannel::AddEventListener(const AuSPtr<ISocketChannelEventListener> &pListener)
|
||||
{
|
||||
AU_LOCK_GUARD(this->spinLock);
|
||||
|
@ -86,6 +86,8 @@ namespace Aurora::IO::Net
|
||||
|
||||
SocketStats &GetSendStatsEx();
|
||||
SocketStats &GetRecvStatsEx();
|
||||
SocketStats *GetSendStatsEx2();
|
||||
SocketStats *GetRecvStatsEx2();
|
||||
|
||||
void Establish();
|
||||
|
||||
|
@ -281,6 +281,11 @@ namespace Aurora::IO::Net
|
||||
|
||||
AuStaticCast<SocketChannel>(this->pParent_->ToChannel())->GetSendStatsEx().AddBytes(length);
|
||||
|
||||
if (auto pServerSendStats = AuStaticCast<SocketChannel>(this->pParent_->ToChannel())->GetSendStatsEx2())
|
||||
{
|
||||
pServerSendStats->AddBytes(length);
|
||||
}
|
||||
|
||||
if (!length)
|
||||
{
|
||||
this->pParent_->SendErrorBeginShutdown({});
|
||||
|
@ -130,6 +130,16 @@ namespace Aurora::IO::Net
|
||||
return this->pFactory_;
|
||||
}
|
||||
|
||||
AuSPtr<ISocketStats> SocketServer::GetServerRecvStats()
|
||||
{
|
||||
return AuSPtr<ISocketStats>(this->SharedFromThis(), &this->recvStats_);
|
||||
}
|
||||
|
||||
AuSPtr<ISocketStats> SocketServer::GetServerSendStats()
|
||||
{
|
||||
return AuSPtr<ISocketStats>(this->SharedFromThis(), &this->sendStats_);
|
||||
}
|
||||
|
||||
AuSPtr<ISocketServerLimits> SocketServer::GetLimits()
|
||||
{
|
||||
return AuSPtr<ISocketServerLimits>(this->SharedFromThis(), &this->serverLimits_);
|
||||
|
@ -39,6 +39,8 @@ namespace Aurora::IO::Net
|
||||
AuSPtr<ISocketServerLimits> GetLimits() override;
|
||||
AuList<AuSPtr<ISocket>> GetChildren() override;
|
||||
AuUInt32 GetSessionCount() override;
|
||||
AuSPtr<ISocketStats> GetServerRecvStats() override;
|
||||
AuSPtr<ISocketStats> GetServerSendStats() override;
|
||||
|
||||
virtual void FinishConstructAsync() override;
|
||||
|
||||
@ -92,7 +94,10 @@ namespace Aurora::IO::Net
|
||||
|
||||
private:
|
||||
friend struct SocketBase;
|
||||
friend struct SocketChannel;
|
||||
|
||||
SocketStats sendStats_;
|
||||
SocketStats recvStats_;
|
||||
AuSPtr<ISocketServerDriver> pDriver_;
|
||||
AuUInt32 uMaxConnections_;
|
||||
AuSPtr<ISocketDriverFactory> pFactory_;
|
||||
|
@ -89,7 +89,6 @@ namespace Aurora::IO::Net
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
AuUInt32 NetDatagramEmulatorISocketServer::GetSessionCount()
|
||||
{
|
||||
if (auto pParent = this->pParent)
|
||||
@ -101,4 +100,28 @@ namespace Aurora::IO::Net
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
AuSPtr<ISocketStats> NetDatagramEmulatorISocketServer::GetServerRecvStats()
|
||||
{
|
||||
if (auto pParent = this->pParent)
|
||||
{
|
||||
return AuSPtr<ISocketStats> { pParent->SharedFromThis(), pParent->GetRecvStats() };
|
||||
}
|
||||
else
|
||||
{
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
AuSPtr<ISocketStats> NetDatagramEmulatorISocketServer::GetServerSendStats()
|
||||
{
|
||||
if (auto pParent = this->pParent)
|
||||
{
|
||||
return AuSPtr<ISocketStats> { pParent->SharedFromThis(), pParent->GetSendStats() };
|
||||
}
|
||||
else
|
||||
{
|
||||
return {};
|
||||
}
|
||||
}
|
||||
}
|
@ -32,5 +32,7 @@ namespace Aurora::IO::Net
|
||||
AuList<AuSPtr<ISocket>> GetChildren() override;
|
||||
AuSPtr<INetWorker> GetLockedWorkerThread() override;
|
||||
AuUInt32 GetSessionCount() override;
|
||||
AuSPtr<ISocketStats> GetServerRecvStats() override;
|
||||
AuSPtr<ISocketStats> GetServerSendStats() override;
|
||||
};
|
||||
}
|
@ -394,4 +394,14 @@ namespace Aurora::IO::Net
|
||||
{
|
||||
return this->pSocketDriverFactory_;
|
||||
}
|
||||
|
||||
SocketStats *NetDatagramSocketServer::GetSendStats()
|
||||
{
|
||||
return &this->sendStats_;
|
||||
}
|
||||
|
||||
SocketStats *NetDatagramSocketServer::GetRecvStats()
|
||||
{
|
||||
return &this->recvStats_;
|
||||
}
|
||||
}
|
@ -10,6 +10,7 @@
|
||||
#include "AuNetDatagramSocketServerDriver.hpp"
|
||||
#include "AuNetDatagramEmulatorISocketServer.hpp"
|
||||
#include "AuNetDatagramSocketEviction.hpp"
|
||||
#include "../AuSocketStats.hpp"
|
||||
|
||||
namespace Aurora::IO::Net
|
||||
{
|
||||
@ -60,6 +61,9 @@ namespace Aurora::IO::Net
|
||||
AuSPtr<ISocketDriverFactory> GetFactoryDriver();
|
||||
AuSPtr<IDatagramServer> ToServer();
|
||||
|
||||
SocketStats *GetSendStats();
|
||||
SocketStats *GetRecvStats();
|
||||
|
||||
void DispatchNew(AuSPtr<NetDatagramSocketServerSession> pSession);
|
||||
|
||||
const AuUInt32 uSocketTimeoutAnyMS;
|
||||
@ -85,5 +89,7 @@ namespace Aurora::IO::Net
|
||||
AuSPtr<ISocketDriverFactory> pSocketDriverFactory_;
|
||||
NetDatagramSocketEviction eviction;
|
||||
AuThreadPrimitives::Mutex mutex_;
|
||||
SocketStats sendStats_;
|
||||
SocketStats recvStats_;
|
||||
};
|
||||
}
|
@ -15,6 +15,7 @@
|
||||
#endif
|
||||
|
||||
#include "../AuNetDatagramServer.hpp"
|
||||
#include "AuNetDatagramSocketServer.hpp"
|
||||
|
||||
static const auto kDefaultBufferSize = 64 * 1024;
|
||||
|
||||
@ -160,6 +161,15 @@ namespace Aurora::IO::Net
|
||||
pMem->ptr = this->outputBuffer.readPtr;
|
||||
pMem->length = uDelta;
|
||||
|
||||
this->sendStats_.AddBytes(uDelta);
|
||||
if (auto pParent = AuTryLockMemoryType(this->pParent_->pParentServer))
|
||||
{
|
||||
if (auto pSendStats = pParent->GetSendStats())
|
||||
{
|
||||
pSendStats->AddBytes(uDelta);
|
||||
}
|
||||
}
|
||||
|
||||
this->outputBuffer.readPtr += uDelta;
|
||||
|
||||
pWriteTransaction->SetCallback(AuMakeSharedThrow<AuIO::IAsyncFinishedSubscriberFunctional>([=](AuUInt64 uOffset, AuUInt32 uLength)
|
||||
@ -450,6 +460,14 @@ namespace Aurora::IO::Net
|
||||
{
|
||||
this->recvStats_.AddBytes(pBuffer->RemainingBytes());
|
||||
|
||||
if (auto pParent = AuTryLockMemoryType(this->pParent_->pParentServer))
|
||||
{
|
||||
if (auto pRecvStats = pParent->GetRecvStats())
|
||||
{
|
||||
pRecvStats->AddBytes(pBuffer->RemainingBytes());
|
||||
}
|
||||
}
|
||||
|
||||
if (this->pBuffer)
|
||||
{
|
||||
if (!this->bOwnsBuffer)
|
||||
|
Loading…
Reference in New Issue
Block a user