summaryrefslogtreecommitdiffstats
path: root/host/libs/virglrenderer/ChecksumCalculator.cpp
diff options
context:
space:
mode:
authorYurii Zubrytskyi <zyy@google.com>2017-02-01 17:12:03 -0800
committerGreg Hartman <ghartman@google.com>2018-08-23 17:30:51 -0700
commit96ed3c4607c440eab88d15484c4100c73de730d0 (patch)
tree5fd820323004cae1e03bdd0119d0472c93271bbc /host/libs/virglrenderer/ChecksumCalculator.cpp
parente85e7930301177a25c49bd51aac0ede2744632f3 (diff)
downloaddevice_generic_opengl-transport-96ed3c4607c440eab88d15484c4100c73de730d0.tar.gz
device_generic_opengl-transport-96ed3c4607c440eab88d15484c4100c73de730d0.tar.bz2
device_generic_opengl-transport-96ed3c4607c440eab88d15484c4100c73de730d0.zip
ChecksumCalculator serialization
Change-Id: Id135b7e226c0664c3bc2261f0f6b5ab28cb580c6
Diffstat (limited to 'host/libs/virglrenderer/ChecksumCalculator.cpp')
-rw-r--r--host/libs/virglrenderer/ChecksumCalculator.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/host/libs/virglrenderer/ChecksumCalculator.cpp b/host/libs/virglrenderer/ChecksumCalculator.cpp
index 6a3a38adf..7bd82fc76 100644
--- a/host/libs/virglrenderer/ChecksumCalculator.cpp
+++ b/host/libs/virglrenderer/ChecksumCalculator.cpp
@@ -16,6 +16,8 @@
#include "ChecksumCalculator.h"
+#include "android/base/files/Stream.h"
+
#include <string>
#include <vector>
@@ -138,3 +140,33 @@ uint32_t ChecksumCalculator::computeV1Checksum() const {
revLen = (revLen & 0xaaaaaaaa) >> 1 | (revLen & 0x55555555) << 1;
return revLen;
}
+
+void ChecksumCalculator::save(android::base::Stream* stream) {
+ assert(!m_isEncodingChecksum);
+ switch (m_version) {
+ case 1:
+ assert(m_v1BufferTotalLength == 0);
+ break;
+ }
+
+ // Our checksum should never become > 255 bytes. Ever.
+ assert((uint8_t)m_checksumSize == m_checksumSize);
+ stream->putByte(m_checksumSize);
+ stream->putBe32(m_version);
+ stream->putBe32(m_numRead);
+ stream->putBe32(m_numWrite);
+}
+
+void ChecksumCalculator::load(android::base::Stream* stream) {
+ assert(!m_isEncodingChecksum);
+ switch (m_version) {
+ case 1:
+ assert(m_v1BufferTotalLength == 0);
+ break;
+ }
+
+ m_checksumSize = stream->getByte();
+ m_version = stream->getBe32();
+ m_numRead = stream->getBe32();
+ m_numWrite = stream->getBe32();
+}