aboutsummaryrefslogtreecommitdiff
path: root/daemon/Buffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'daemon/Buffer.cpp')
-rw-r--r--daemon/Buffer.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/daemon/Buffer.cpp b/daemon/Buffer.cpp
index dd19f7f..d7c4c7d 100644
--- a/daemon/Buffer.cpp
+++ b/daemon/Buffer.cpp
@@ -59,14 +59,18 @@ void Buffer::write(Sender *const sender) {
return;
}
+ // commit and read are updated by the writer, only read them once
+ int commitPos = mCommitPos;
+ int readPos = mReadPos;
+
// determine the size of two halves
- int length1 = mCommitPos - mReadPos;
- char *buffer1 = mBuf + mReadPos;
+ int length1 = commitPos - readPos;
+ char *buffer1 = mBuf + readPos;
int length2 = 0;
char *buffer2 = mBuf;
if (length1 < 0) {
- length1 = mSize - mReadPos;
- length2 = mCommitPos;
+ length1 = mSize - readPos;
+ length2 = commitPos;
}
logg->logMessage("Sending data length1: %i length2: %i", length1, length2);
@@ -81,7 +85,7 @@ void Buffer::write(Sender *const sender) {
sender->writeData(buffer2, length2, RESPONSE_APC_DATA);
}
- mReadPos = mCommitPos;
+ mReadPos = commitPos;
}
bool Buffer::commitReady() const {