API Buffered Write

.. when sending metrics, since if no selection is made
   it can result in thousands of needless updates !
This commit is contained in:
Mark Liversedge
2015-09-08 11:48:46 +01:00
parent 7d884cff93
commit fa40917053
4 changed files with 44 additions and 17 deletions

View File

@@ -11,6 +11,8 @@ HttpResponse::HttpResponse(QTcpSocket* socket) {
statusText="OK";
sentHeaders=false;
sentLastPart=false;
buffersize=4096;
barry.reserve(4096);
}
void HttpResponse::setHeader(QByteArray name, QByteArray value) {
@@ -72,6 +74,25 @@ bool HttpResponse::writeToSocket(QByteArray data) {
return true;
}
void HttpResponse::bwrite(QByteArray data)
{
if (barry.size() && (barry.size() + data.size() > buffersize)) {
// flush buffer
write(barry);
barry = data;
} else {
barry.append(data);
}
}
void HttpResponse::flush()
{
if (barry.size()) {
write(barry, true);
barry.clear();
}
}
void HttpResponse::write(QByteArray data, bool lastPart) {
Q_ASSERT(sentLastPart==false);
if (sentHeaders==false) {