yiguolei commented on code in PR #19472:
URL: https://github.com/apache/doris/pull/19472#discussion_r1193771777


##########
be/src/olap/page_cache.h:
##########
@@ -28,11 +28,50 @@
 
 #include "olap/lru_cache.h"
 #include "util/slice.h"
+#include "vec/common/allocator.h"
+#include "vec/common/allocator_fwd.h"
 
 namespace doris {
 
 class PageCacheHandle;
 
+template <typename TAllocator>
+class PageBase : private TAllocator {
+public:
+    PageBase() : data(nullptr), size(0), bytes(0) {}
+
+    PageBase(size_t b) : size(b), bytes(b) {
+        data = reinterpret_cast<char*>(TAllocator::alloc(bytes, 
ALLOCATOR_ALIGNMENT_16));
+        ExecEnv::GetInstance()->page_no_cache_mem_tracker()->consume(bytes);
+    }
+
+    ~PageBase() {
+        if (data != nullptr) {
+            DCHECK(bytes != 0 && size != 0);
+            TAllocator::free(data, bytes);
+            
ExecEnv::GetInstance()->page_no_cache_mem_tracker()->release(bytes);
+        }
+    }
+
+    void reset_size(size_t n) {
+        DCHECK(n <= bytes);
+        size = n;
+    }
+
+    void release() {
+        data = nullptr;
+        size = 0;
+        bytes = 0;
+    }
+
+    char* data;

Review Comment:
   可能你得看看类似java 中buffer的一些概念,比如pos,capacity 这些,size和bytes还是太相似了, 这个东东在buffer 
结构里有比较通用的定义



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to