3#ifndef ENGINE_SHARED_SNAPSHOT_H
4#define ENGINE_SHARED_SNAPSHOT_H
16 int *
Data() {
return (
int *)(
this + 1); }
21 const int *
Data()
const {
return (
int *)(
this + 1); }
34 int *
Offsets()
const {
return (
int *)(
this + 1); }
61 const void *
FindItem(
int Type,
int Id)
const;
68 bool IsValid(
size_t ActualSize)
const;
115 static void UndiffItem(
const int *pPast,
const int *pDiff,
int *pOut,
int Size, uint64_t *pDataRate);
118 static int DiffItem(
const int *pPast,
const int *pCurrent,
int *pOut,
int Size);
123 void SetStaticsize(
int ItemType,
size_t Size);
124 const CData *EmptyDelta()
const;
127 int DebugDumpDelta(
const void *pSrcData,
int DataSize);
158 void PurgeUntil(
int Tick);
159 void Add(
int Tick, int64_t Tagtime,
size_t DataSize,
const void *pData,
size_t AltDataSize,
const void *pAltData);
160 int Get(
int Tick, int64_t *pTagtime,
const CSnapshot **ppData,
const CSnapshot **ppAltData)
const;
188 void Init(
bool Sixup =
false);
191 bool NewItem(
int Type,
int Id,
const void *pData,
int Size);
const CSnapshot * AsSnapshot() const
Definition snapshot.h:79
CSnapshot * AsSnapshot()
Definition snapshot.h:78
unsigned char m_aData[CSnapshot::MAX_SIZE]
Definition snapshot.h:76
Definition snapshot.h:164
int FinishIfNoDroppedItems(CSnapshotBuffer *pSnapData)
Definition snapshot.cpp:797
int m_NumItems
Definition snapshot.h:174
int m_aExtendedItemTypes[MAX_EXTENDED_ITEM_TYPES]
Definition snapshot.h:176
CSnapshotItem * GetItem(int Index)
Definition snapshot.cpp:765
bool m_Sixup
Definition snapshot.h:185
void Init(bool Sixup=false)
Definition snapshot.cpp:749
char m_aData[CSnapshot::MAX_SIZE]
Definition snapshot.h:170
bool m_Building
Definition snapshot.h:183
void * NewItemRaw(int Type, int Id, int Size)
Definition snapshot.cpp:888
std::optional< int > FindItemIndexByKey(int Key)
Definition snapshot.cpp:784
bool NewItem(int Type, int Id, const void *pData, int Size)
Definition snapshot.cpp:871
int m_aOffsets[CSnapshot::MAX_ITEMS]
Definition snapshot.h:173
int m_NumExtendedItemTypes
Definition snapshot.h:177
bool m_HasDroppedItem
Definition snapshot.h:184
int * GetItemData(int Index)
Definition snapshot.cpp:779
int GetExtendedItemTypeIndex(int TypeId)
Definition snapshot.cpp:850
@ MAX_EXTENDED_ITEM_TYPES
Definition snapshot.h:167
int Finish(CSnapshotBuffer *pBuffer)
Definition snapshot.cpp:808
int GetItemSize(int Index) const
Definition snapshot.cpp:771
int GetTypeFromIndex(int Index) const
Definition snapshot.cpp:825
void Init7(const CSnapshot *pSnapshot)
Definition sixup_translate_snapshot.cpp:6
int m_DataSize
Definition snapshot.h:171
bool AddExtendedItemType(int Index)
Definition snapshot.cpp:830
static constexpr int MAX_SIZE
Definition snapshot.h:85
unsigned char m_aData[MAX_SIZE]
Definition snapshot.h:88
int m_NumUpdateItems
Definition snapshot.h:100
int m_aData[1]
Definition snapshot.h:102
int m_NumTempItems
Definition snapshot.h:101
int m_NumDeletedItems
Definition snapshot.h:99
CData m_Empty
Definition snapshot.h:113
uint64_t GetDataUpdates(int Index) const
Definition snapshot.h:122
static void UndiffItem(const int *pPast, const int *pDiff, int *pOut, int Size, uint64_t *pDataRate)
Definition snapshot.cpp:250
@ MAX_NETOBJSIZES
Definition snapshot.h:108
uint64_t m_aSnapshotDataRate[CSnapshot::MAX_TYPE+1]
Definition snapshot.h:111
static int DiffItem(const int *pPast, const int *pCurrent, int *pOut, int Size)
Definition snapshot.cpp:233
uint64_t GetDataRate(int Index) const
Definition snapshot.h:121
uint64_t m_aSnapshotDataUpdates[CSnapshot::MAX_TYPE+1]
Definition snapshot.h:112
CSnapshotDelta()
Definition snapshot.cpp:273
short m_aItemSizes[MAX_NETOBJSIZES]
Definition snapshot.h:110
void Invalidate()
Definition snapshot.h:25
int Id() const
Definition snapshot.h:23
int m_TypeAndId
Definition snapshot.h:19
const int * Data() const
Definition snapshot.h:21
int InternalType() const
Definition snapshot.h:22
int Key() const
Definition snapshot.h:24
friend class CSnapshotBuilder
Definition snapshot.h:14
int * Data()
Definition snapshot.h:16
Definition snapshot.h:136
int m_Tick
Definition snapshot.h:142
int m_SnapSize
Definition snapshot.h:144
int m_AltSnapSize
Definition snapshot.h:145
CHolder * m_pPrev
Definition snapshot.h:138
CHolder * m_pNext
Definition snapshot.h:139
CSnapshot * m_pAltSnap
Definition snapshot.h:148
int64_t m_Tagtime
Definition snapshot.h:141
CSnapshot * m_pSnap
Definition snapshot.h:147
~CSnapshotStorage()
Definition snapshot.h:155
CSnapshotStorage()
Definition snapshot.h:154
void PurgeAll()
Definition snapshot.cpp:641
void Init()
Definition snapshot.cpp:635
CHolder * m_pLast
Definition snapshot.h:152
CHolder * m_pFirst
Definition snapshot.h:151
int GetExternalItemType(int InternalType) const
Definition snapshot.cpp:43
static const CSnapshot * EmptySnapshot()
Definition snapshot.h:70
int * Offsets() const
Definition snapshot.h:34
const CSnapshotItem * GetItem(int Index) const
Definition snapshot.cpp:23
size_t TotalSize() const
Definition snapshot.h:38
char * DataStart() const
Definition snapshot.h:35
int m_NumItems
Definition snapshot.h:32
const void * FindItem(int Type, int Id) const
Definition snapshot.cpp:79
int GetItemIndex(int Key) const
Definition snapshot.cpp:63
@ MAX_ID
Definition snapshot.h:47
@ MAX_ITEMS
Definition snapshot.h:48
@ MAX_SIZE
Definition snapshot.h:50
@ MAX_TYPE
Definition snapshot.h:46
@ MAX_PARTS
Definition snapshot.h:49
@ OFFSET_UUID_TYPE
Definition snapshot.h:45
int DataSize() const
Definition snapshot.h:54
int GetItemType(int Index) const
Definition snapshot.cpp:37
void InvalidateItem(int Index)
Definition snapshot.cpp:74
void DebugDump() const
Definition snapshot.cpp:127
unsigned Crc() const
Definition snapshot.cpp:112
size_t OffsetSize() const
Definition snapshot.h:37
bool IsValid(size_t ActualSize) const
Definition snapshot.cpp:140
friend class CSnapshotBuilder
Definition snapshot.h:30
int m_DataSize
Definition snapshot.h:31
int NumItems() const
Definition snapshot.h:53
static const CSnapshot ms_EmptySnapshot
Definition snapshot.h:40
int GetItemSize(int Index) const
Definition snapshot.cpp:30