Page
- class rm.page.RmPageHeader(page: PfPage, offset: int, limit: int)[소스]
기반 클래스:
PfLayoutViewRM 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에 없다는 뜻을 나타내는 상수.
- SIZE: int = 4
layout view의 크기.
- class rm.page.RmPage(pf_page: PfPage, pid: RmPageId, record_size: int)[소스]
기반 클래스:
objectRM 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.
- 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.
- 반환 형식:
- 예외 발생:
RmInvalidSidError – sid 가 유효하지 않은 경우.
RmUnoccupiedSlotError – sid 가 비어있는 경우.
- 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를 생성할지 여부.
- 예외 발생:
RmInvalidSidError – sid 가 유효하지 않은 경우.
RmUnoccupiedSlotError – sid 가 비어있는 경우이면서 new 가 False 인 경우.
RmInvalidRecordDataSizeError – data 의 크기가 유효하지 않은 경우.
- clear_record(sid: RmSlotId) None[소스]
record를 삭제합니다.
실제로 삭제하지는 않고, bitmap의 해당 bit를 0으로 설정합니다. bitmap의 clear_bit 메서드를 사용합니다.
- 매개변수:
sid (RmSlotId) – 대상 record의 slot ID.
- 예외 발생:
RmInvalidSidError – sid 가 유효하지 않은 경우.
RmUnoccupiedSlotError – sid 가 비어있는 경우.
- clear_all_records() None[소스]
모든 record를 삭제합니다.
실제로 삭제하지는 않고, bitmap의 모든 bit를 0으로 설정합니다. bitmap의 clear_all 메서드를 사용합니다.