File
- class pf.file.PfFileHeader(page: PfPage, offset: int, limit: int)[소스]
기반 클래스:
PfLayoutViewfile의 header를 나타내는 클래스입니다.
file header는 0번째 페이지에 저장됩니다. page content의 첫 8바이트를 사용하는 layout view입니다. layout view의 property를 사용 할 때는 항상 해당 page가 pin 되어있어야 합니다.
- 변수:
page_count (int) – file에 존재하는 page 수 (free page 포함).
first_free_pid (PfPageId) – file에 있는 가장 첫번째 free page의 ID. NO_FREE_PAGE 인 경우는 file에 free page가 없다는 뜻입니다.
- PID = 0
file header가 들어있는 page의 ID.
- NO_FREE_PAGE = -1
file에 free page가 없다는 뜻을 나타내는 상수.
- property page_count: int
- SIZE: int = 8
layout view의 크기.
- class pf.file.PfFile(fid: PfFileId, path: Path, stream: BinaryIO, buffer_manager: PfBufferManager)[소스]
기반 클래스:
objectfile을 나타내는 클래스입니다.
- 변수:
fid (PfFileId) – file의 ID.
path (Path) – file의 경로.
stream (BinaryIO) – file의 I/O stream.
_buffer_manager (PfBufferManager) – 이 파일을 관리하는 buffer manager.
- __init__(fid: PfFileId, path: Path, stream: BinaryIO, buffer_manager: PfBufferManager) None[소스]
file을 초기화합니다.
- 매개변수:
fid (PfFileId) – file의 ID.
path (Path) – file의 경로.
stream (BinaryIO) – file의 I/O stream.
buffer_manager (PfBufferManager) – 이 파일을 관리하는 buffer manager.
- get_page(pid: PfPageId) PfPage[소스]
page를 가져옵니다. free page도 가져올 수 있습니다.
buffer manager 의 fetch_page 메서드를 사용합니다.
- 매개변수:
pid (PfPageId) – 대상 page의 ID.
- 반환:
가져온 page.
- 반환 형식:
- 예외 발생:
PfInvalidPidError – pid 가 유효하지 않은 경우.
- find_next_allocated_page(pid: PfPageId) PfPage[소스]
file에 있는, pid 다음의 allocate된 page를 찾습니다. free page는 건너뜁니다.
- 매개변수:
pid (PfPageId) – 대상 page의 ID.
- 반환:
pid 다음에 있는 allocate된 page.
- 반환 형식:
- 예외 발생:
PfInvalidPidError – pid 가 유효하지 않은 경우.
PfNoNextAllocatedPageFoundError – pid 다음에 있는 allocate된 page를 찾을 수 없는 경우.
- allocate_page() PfPage[소스]
page를 allocate합니다.
free page가 없으면, 새로운 page를 allocate합니다. buffer manager 의 allocate_page 메서드를 사용하며, file header의 page_count 를 증가시킵니다.
free page가 있으면, 해당 page를 재활용 합니다. buffer manager 의 fetch_page 메서드를 사용하며, file header의 first_free_pid 를 재활용할 page header의 next_free_pid 로 업데이트 하고, page header의 next_free_pid 를 NOT_IN_FREE_PAGE_LIST 로 업데이트 합니다. page data는 page의 clear_content 메서드를 사용하여 초기화합니다.
- 반환:
allocate된 page.
- 반환 형식:
- dispose_page(pid: PfPageId) None[소스]
page를 해제하여 free page로 만듭니다.
page header의 next_free_pid 를 file header의 first_free_pid 로 업데이트 하고, file header의 first_free_pid 를 해제할 page의 ID로 업데이트 합니다.
- 매개변수:
pid (PfPageId) – 대상 page의 ID.
- 예외 발생:
PfInvalidPidError – pid 가 file header page의 ID거나 유효하지 않은 경우.
PfDisposingPinnedPageError – page가 pin 되어있어서 해제할 수 없는 경우.
PfAlreadyDisposedPageError – page가 이미 해제된 상태인 경우.
- flush() int[소스]
file을 flush 합니다.
buffer manager 의 flush 메서드를 사용합니다.
- 반환:
write가 발생한 page의 수.
- 반환 형식:
int
- 예외 발생:
PfFlushingPinnedPageError – page가 pin 되어있어서 flush할 수 없는 경우.