Page

class rm.page.RmSlotId[소스]

기반 클래스: int

slot의 ID를 나타내는 클래스입니다.

class rm.page.RmPageId[소스]

기반 클래스: int

page의 ID를 나타내는 클래스입니다.

class rm.page.RmPageHeader(page: PfPage, offset: int, limit: int)[소스]

기반 클래스: PfLayoutView

RM page의 header를 나타내는 클래스입니다.

PF page content의 첫 4바이트를 사용하는 layout view입니다. layout view의 property를 사용 할 때는 항상 해당 PF page가 pin 되어있어야 합니다.

변수:

next_available_pid (RmPageId) – 다음 available RM page의 ID.

NO_NEXT_AVAILABLE_PAGE = -1

다음 available page가 없다는 뜻을 나타내는 상수.

NOT_IN_AVAILABLE_PAGE_LIST = -2

page가 available page list에 없다는 뜻을 나타내는 상수.

property next_available_pid: RmPageId
SIZE: int = 4

layout view의 크기.

class rm.page.RmPage(pf_page: PfPage, pid: RmPageId, record_size: int)[소스]

기반 클래스: object

RM page를 나타내는 클래스입니다.

변수:
  • _pf_page (PfPage) – RM page가 wrapping하고 있는 PF page.

  • pid (RmPageId) – RM page의 ID.

  • record_size (int) – record의 크기.

  • record_capacity (int) – record의 최대 수.

  • header (RmPageHeader) – RM page의 header.

  • _bitmap (RmPageBitmap) – RM page의 bitmap.

__init__(pf_page: PfPage, pid: RmPageId, record_size: int) None[소스]

RM page를 초기화합니다.

매개변수:
  • pf_page (PfPage) – RM page가 wrapping하고 있는 PF page.

  • pid (RmPageId) – RM page의 ID.

  • record_size (int) – record의 크기.

pinned()[소스]

RM page를 pin 상태로 사용할 수 있는 context를 생성합니다.

PF page의 pinned 메서드를 사용합니다.

예제

>>> with page.pinned():
...     ...
get_record(sid: RmSlotId) RmRecord[소스]

대상 slot에 있는 record를 가져옵니다.

PF page의 get_content 메서드를 사용합니다.

매개변수:

sid (RmSlotId) – 대상 record의 slot ID.

반환:

가져온 record.

반환 형식:

RmRecord

예외 발생:
set_record(sid: RmSlotId, data: RmRecordData, new: bool = False) None[소스]

대상 slot에 record data를 설정합니다.

bitmap의 check_bit, set_bit 메서드와 PF page의 set_content 메서드를 사용합니다.

매개변수:
  • sid (RmSlotId) – 대상 record의 slot ID.

  • data (RmRecordData) – 설정할 record의 data.

  • new (bool) – 새로운 record를 생성할지 여부.

예외 발생:
clear_record(sid: RmSlotId) None[소스]

record를 삭제합니다.

실제로 삭제하지는 않고, bitmap의 해당 bit를 0으로 설정합니다. bitmap의 clear_bit 메서드를 사용합니다.

매개변수:

sid (RmSlotId) – 대상 record의 slot ID.

예외 발생:
clear_all_records() None[소스]

모든 record를 삭제합니다.

실제로 삭제하지는 않고, bitmap의 모든 bit를 0으로 설정합니다. bitmap의 clear_all 메서드를 사용합니다.

find_first_free_sid() RmSlotId[소스]

첫번째로 비어있는 slot의 ID를 반환합니다.

bitmap의 find_first_zero_bit 메서드를 사용합니다.

반환:

첫번째로 비어있는 slot의 ID.

반환 형식:

RmSlotId

is_full() bool[소스]

slot이 가득 찼는지 여부를 반환합니다.

bitmap의 is_full 메서드를 사용합니다.

반환:

slot이 가득 찼는지 여부.

반환 형식:

bool