Added save session feature in the Software Integration module

This commit is contained in:
Victor Lindquist
2022-06-14 02:00:00 -06:00
parent d341961c40
commit f7e5dcf2e2
17 changed files with 812 additions and 354 deletions

View File

@@ -43,6 +43,9 @@ public:
template <typename T>
void encode(const T& v);
template <typename T>
void encode(std::vector<T>& value);
std::string decode();
template <typename T>
@@ -57,6 +60,9 @@ public:
template <typename T>
void decode(T& value);
template <typename T>
void decode(std::vector<T>& value);
void reset();
//void write();

View File

@@ -41,6 +41,21 @@ void SyncBuffer::encode(const T& v) {
_encodeOffset += size;
}
template <typename T>
void SyncBuffer::encode(std::vector<T>& value) {
const size_t size = sizeof(T) * value.size();
encode(static_cast<uint32_t>(value.size()));
size_t anticpatedBufferSize = _encodeOffset + size;
if (anticpatedBufferSize >= _n) {
_dataStream.resize(anticpatedBufferSize);
}
std::memcpy(_dataStream.data() + _encodeOffset, value.data(), size);
_encodeOffset += size;
}
template <typename T>
T SyncBuffer::decode() {
const size_t size = sizeof(T);
@@ -59,4 +74,16 @@ void SyncBuffer::decode(T& value) {
_decodeOffset += size;
}
template <typename T>
void SyncBuffer::decode(std::vector<T>& value) {
uint32_t size;
decode(size);
value.resize(size);
const size_t sizeInBytes = sizeof(T) * size;
ghoul_assert(_decodeOffset + sizeInBytes < _n, "");
std::memcpy(value.data(), _dataStream.data() + _decodeOffset, sizeInBytes);
_decodeOffset += sizeInBytes;
}
} // namespace openspace