diff options
author | Yurii Zubrytskyi <zyy@google.com> | 2017-02-01 17:12:03 -0800 |
---|---|---|
committer | Greg Hartman <ghartman@google.com> | 2018-08-23 17:30:51 -0700 |
commit | 96ed3c4607c440eab88d15484c4100c73de730d0 (patch) | |
tree | 5fd820323004cae1e03bdd0119d0472c93271bbc /host/libs/virglrenderer/ChecksumCalculator.cpp | |
parent | e85e7930301177a25c49bd51aac0ede2744632f3 (diff) | |
download | device_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.cpp | 32 |
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(); +} |