summaryrefslogtreecommitdiffstats
path: root/src/ChunkDataCallback.h
diff options
context:
space:
mode:
authorpeterbell10 <peterbell10@live.co.uk>2017-08-21 18:56:53 +0200
committerAlexander Harkness <me@bearbin.net>2017-08-21 18:56:53 +0200
commit096cdac80d222ac0be2a0554a759a0b16c1c34f6 (patch)
tree03190afb388f999bf9740fbae15d688780f036d5 /src/ChunkDataCallback.h
parentAward player an achievement when creating a beacon (#3930) (diff)
downloadcuberite-096cdac80d222ac0be2a0554a759a0b16c1c34f6.tar
cuberite-096cdac80d222ac0be2a0554a759a0b16c1c34f6.tar.gz
cuberite-096cdac80d222ac0be2a0554a759a0b16c1c34f6.tar.bz2
cuberite-096cdac80d222ac0be2a0554a759a0b16c1c34f6.tar.lz
cuberite-096cdac80d222ac0be2a0554a759a0b16c1c34f6.tar.xz
cuberite-096cdac80d222ac0be2a0554a759a0b16c1c34f6.tar.zst
cuberite-096cdac80d222ac0be2a0554a759a0b16c1c34f6.zip
Diffstat (limited to '')
-rw-r--r--src/ChunkDataCallback.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/ChunkDataCallback.h b/src/ChunkDataCallback.h
index 4841dad03..2bf554b74 100644
--- a/src/ChunkDataCallback.h
+++ b/src/ChunkDataCallback.h
@@ -101,3 +101,37 @@ protected:
+/** A simple implementation of the cChunkDataCallback interface that just copies the cChunkData */
+class cChunkDataCopyCollector :
+ public cChunkDataCallback
+{
+public:
+ struct MemCallbacks:
+ cAllocationPool<cChunkData::sChunkSection>::cStarvationCallbacks
+ {
+ virtual void OnStartUsingReserve() override {}
+ virtual void OnEndUsingReserve() override {}
+ virtual void OnOutOfReserve() override {}
+ };
+
+ cChunkDataCopyCollector():
+ m_Pool(cpp14::make_unique<MemCallbacks>()),
+ m_Data(m_Pool)
+ {
+ }
+
+
+ cListAllocationPool<cChunkData::sChunkSection, cChunkData::NumSections> m_Pool; // Keep 1 chunk worth of reserve
+ cChunkData m_Data;
+
+protected:
+
+ virtual void ChunkData(const cChunkData & a_ChunkBuffer) override
+ {
+ m_Data.Assign(a_ChunkBuffer);
+ }
+};
+
+
+
+