Fennel: /home/pub/open/dev/fennel/segment/RandomAllocationSegment.h Source File (original) (raw)

00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024 #ifndef Fennel_RandomAllocationSegment_Included 00025 #define Fennel_RandomAllocationSegment_Included 00026 00027 #include "fennel/segment/RandomAllocationSegmentBase.h" 00028 00029 FENNEL_BEGIN_NAMESPACE 00030 00031 struct ExtentAllocationNode; 00032 00038 class FENNEL_SEGMENT_EXPORT RandomAllocationSegment 00039 : public RandomAllocationSegmentBase 00040 { 00041
00042 virtual PageId getSegAllocPageIdForWrite(PageId origSegAllocPageId); 00043 virtual void undoSegAllocPageWrite(PageId segAllocPageId); 00044 virtual PageId getExtAllocPageIdForWrite(ExtentNum extentNum); 00045 virtual PageId allocateFromExtent(ExtentNum extentNum, PageOwnerId ownerId); 00046 virtual void formatPageExtents( 00047 SegmentAllocationNode &segAllocNode, 00048 ExtentNum &extentNum); 00049 virtual PageId allocateFromNewExtent( 00050 ExtentNum extentNum, 00051 PageOwnerId ownerId); 00052 virtual void freePageEntry(ExtentNum extentNum, BlockNum iPageInExtent); 00053 virtual PageOwnerId getPageOwnerId(PageId pageId, bool thisSegment); 00054 virtual PageId getSegAllocPageIdForRead( 00055 PageId origSegAllocPageId, 00056 SharedSegment &allocNodeSegment); 00057 virtual PageId getExtAllocPageIdForRead( 00058 ExtentNum extentNum, 00059 SharedSegment &allocNodeSegment); 00060 virtual void getPageEntryCopy( 00061 PageId pageId, 00062 PageEntry &pageEntryCopy, 00063 bool isAllocated, 00064 bool thisSegment); 00065 00066 public: 00067 explicit RandomAllocationSegment(SharedSegment delegateSegment); 00068 00069
00070 virtual PageId allocatePageId(PageOwnerId ownerId); 00071 virtual PageId getPageSuccessor(PageId pageId); 00072 virtual void setPageSuccessor(PageId pageId, PageId successorId); 00073 }; 00074 00075 FENNEL_END_NAMESPACE 00076 00077 #endif 00078 00079