rename IHTTPSessionDataHooks methods

This commit is contained in:
serxa 2024-07-05 10:33:22 +00:00
parent 54fda05094
commit 3fa5ad92b4
3 changed files with 15 additions and 15 deletions

View File

@ -42,13 +42,13 @@ namespace Net
public:
virtual ~IHTTPSessionDataHooks() = default;
virtual void start(int bytes) = 0;
virtual void atStart(int bytes) = 0;
/// Called before sending/receiving data `bytes` to/from socket.
virtual void finish(int bytes) = 0;
virtual void atFinish(int bytes) = 0;
/// Called when sending/receiving of data `bytes` is successfully finished.
virtual void fail() = 0;
virtual void atFail() = 0;
/// If an error occurred during send/receive `fail()` is called instead of `finish()`.
};

View File

@ -167,16 +167,16 @@ int HTTPSession::write(const char* buffer, std::streamsize length)
try
{
if (_sendDataHooks)
_sendDataHooks->start((int) length);
_sendDataHooks->atStart((int) length);
int result = _socket.sendBytes(buffer, (int) length);
if (_sendDataHooks)
_sendDataHooks->finish(result);
_sendDataHooks->atFinish(result);
return result;
}
catch (Poco::Exception& exc)
{
if (_sendDataHooks)
_sendDataHooks->fail();
_sendDataHooks->atFail();
setException(exc);
throw;
}
@ -188,16 +188,16 @@ int HTTPSession::receive(char* buffer, int length)
try
{
if (_receiveDataHooks)
_receiveDataHooks->start(length);
_receiveDataHooks->atStart(length);
int result = _socket.receiveBytes(buffer, length);
if (_receiveDataHooks)
_receiveDataHooks->finish(result);
_receiveDataHooks->atFinish(result);
return result;
}
catch (Poco::Exception& exc)
{
if (_receiveDataHooks)
_receiveDataHooks->fail();
_receiveDataHooks->atFail();
setException(exc);
throw;
}

View File

@ -239,13 +239,13 @@ public:
// Session data hooks implementation for integration with resource scheduler.
// Hooks are created per every request-response pair and are registered/unregistered in HTTP session.
// * `start()` send resource request to the scheduler every time HTTP session is going to send or receive
// * `atStart()` send resource request to the scheduler every time HTTP session is going to send or receive
// data to/from socket. `start()` waits for the scheduler confirmation. This way scheduler might
// throttle and/or schedule socket data streams.
// * `finish()` hook is called on successful socket read/write operation.
// * `atFinish()` hook is called on successful socket read/write operation.
// It informs the scheduler that operation is complete, which allows the scheduler to control the total
// amount of in-flight bytes and/or operations.
// * `fail()` hook is called on failure of socket operation. The purpose is to correct the amount of bytes
// * `atFail()` hook is called on failure of socket operation. The purpose is to correct the amount of bytes
// passed through the scheduler queue to ensure fair bandwidth allocation even in presence of errors.
struct ResourceGuardSessionDataHooks : public Poco::Net::IHTTPSessionDataHooks
{
@ -261,18 +261,18 @@ struct ResourceGuardSessionDataHooks : public Poco::Net::IHTTPSessionDataHooks
request.assertFinished(); // Never destruct with an active request
}
void start(int bytes) override
void atStart(int bytes) override
{
request.enqueue(bytes, link);
request.wait();
}
void finish(int bytes) override
void atFinish(int bytes) override
{
request.finish(bytes, link);
}
void fail() override
void atFail() override
{
request.finish(0, link);
}