Page
- class pf.page.PfPageHeader(page: PfPage, offset: int, limit: int)[소스]
기반 클래스:
PfLayoutViewpage의 header를 나타내는 클래스입니다.
page data의 첫 4바이트를 사용하는 layout view입니다. layout view의 property를 사용 할 때는 항상 해당 page가 pin 되어있어야 합니다.
- 변수:
next_free_pid (PfPageId) – 다음 free page의 ID.
- NO_NEXT_FREE_PAGE = -1
다음 free page가 없다는 뜻을 나타내는 상수.
- NOT_IN_FREE_PAGE_LIST = -2
page가 free page list에 없다는 뜻을 나타내는 상수.
- SIZE: int = 4
layout view의 크기.
- class pf.page.PfPage(file: PfFile, pid: PfPageId, size: int, data: PfPageData, buffer_manager: PfBufferManager)[소스]
기반 클래스:
objectpage를 나타내는 클래스입니다.
- 변수:
file (PfFile) – page가 속한 file.
pid (PfPageId) – page의 ID.
size (int) – page의 크기.
data (PfPageData) – page의 data.
_buffer_manager (PfBufferManager) – page가 속한 file을 관리하는 buffer manager.
_dirty (bool) – page의 dirty 상태 여부.
_pin_count (int) – page가 pin 되어있는 횟수.
header (PfPageHeader) – page의 header.
- __init__(file: PfFile, pid: PfPageId, size: int, data: PfPageData, buffer_manager: PfBufferManager) None[소스]
page를 초기화합니다.
- 매개변수:
file (PfFile) – page가 속한 file.
pid (PfPageId) – page의 ID.
size (int) – page의 크기.
data (PfPageData) – page의 data.
buffer_manager (PfBufferManager) – page가 속한 file을 관리하는 buffer manager.
- pinned()[소스]
page를 pin 상태로 사용할 수 있는 context를 생성합니다.
page가 pin 될 때, 그리고 마지막으로 unpin 될 때, buffer manager 의 touch_page 메서드를 호출합니다.
예제
>>> with page.pinned(): ... ...
- get_content(offset: int, size: int) PfPageData[소스]
page의 content의 일부를 가져옵니다.
page content는 page data 중 page header 이후의 부분을 의미합니다.
- 매개변수:
offset (int) – content 중 가져올 부분의 오프셋.
size (int) – content 중 가져올 부분의 크기.
- 반환:
page의 content.
- 반환 형식:
- 예외 발생:
PfUnpinnedPageManipulationError – page가 pin 되어있지 않은 경우.
- set_content(offset: int, data: PfPageData) None[소스]
page의 content의 일부를 갱신하고, page를 dirty 상태로 만듭니다.
page content는 page data 중 page header 이후의 부분을 의미합니다.
- 매개변수:
offset (int) – content 중 갱신할 부분의 오프셋.
data (PfPageData) – 갱신할 데이터의 내용.
- 예외 발생:
PfUnpinnedPageManipulationError – page가 pin 되어있지 않은 경우.
- clear_content() None[소스]
page의 content를 0으로 초기화하고, page를 dirty 상태로 만듭니다.
page content는 page data 중 page header 이후의 부분을 의미합니다.
- 예외 발생:
PfUnpinnedPageManipulationError – page가 pin 되어있지 않은 경우.
- persist() bool[소스]
page를 file에 즉시 write합니다.
buffer manager의 persist_page 메서드를 사용합니다.
- 반환:
write가 발생했는지 여부.
- 반환 형식:
bool
- mark_dirty() None[소스]
page를 dirty 상태로 만들고, page를 가장 최근에 접근한 것으로 표시합니다.
buffer manager 의 touch_page 메서드를 사용합니다.
- is_free() bool[소스]
page가 free page인지 여부를 반환합니다.
- 예외 발생:
PfUnpinnedPageManipulationError – page가 pin 되어있지 않은 경우.