Page

source: bluebase/rm/page.py


class RmPageHeader(page: PfPage, *, offset: int, limit: int)[source]

Bases: PfPageView, LayoutMixin

file page header를 나타내는 view 클래스입니다.

Layout

Offset

Size

Name

Format

0

4

next_available_pid

'<i'

NO_NEXT_AVAILABLE_PAGE: ClassVar[RmPageId] = -1

다음 available page가 없을 경우 사용하는 상수.

size: ClassVar[int] = 4

The total size of the layout, automatically calculated from fields.

class RmPageBitmap(page: PfPage, *, offset: int, capacity: int)[source]

Bases: PfPageView

Variables:

capacity (int)

static calc_size(*, capacity: int) → int[source]
assignmentfind_first_zero() → int[source]
assignmentset_bit(position: int) → None[source]
assignmentclear_bit(position: int) → None[source]
assignmentcheck_bit(position: int) → bool[source]
assignmentreset() → None[source]
assignmentis_empty() → bool[source]
assignmentis_full() → bool[source]
class RmPage(page_: PfPage, record_size: int, record_capacity: int)[source]

Bases: object

Variables:
  • pid (RmPageId)

  • page (PfPage)

  • record_size (int)

  • record_capacity (int)

classmethod new(page_: PfPage, record_size: int, record_capacity: int) → Self[source]
property header_offset: intread-only
property header_size: intread-only
property bitmap_offset: intread-only
property bitmap_size: intread-only
property payload_offset: intread-only
property last_sid: RmSlotIdread-only
property next_available_pid: RmPageId | Noneread-write
validate_sid(sid: RmSlotId) → None[source]
validate_slot_occupied(sid: RmSlotId) → None[source]
validate_slot_unoccupied(sid: RmSlotId) → None[source]
get_header() → RmPageHeader[source]
get_bitmap() → RmPageBitmap[source]
get_record_offset(sid: RmSlotId) → int[source]
assignmentis_empty() → bool[source]
assignmentis_full() → bool[source]
assignmentfind_first_free_slot() → RmSlotId[source]
assignmentunpin() → None[source]
assignmentget_record(sid: RmSlotId) → RmRecord[source]
Raises:
assignmentset_record(sid: RmSlotId, data: RmRecordData, *, new: bool = False) → None[source]
Raises:
assignmentclear_slot(sid: RmSlotId) → None[source]
Raises:
assignmentcheck_slot(sid: RmSlotId) → bool[source]
Raises:

RmInvalidSlotIdError –