File

source: bluebase/rm/file.py


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

Bases: PfPageView, LayoutMixin

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

Layout

Offset

Size

Name

Format

0

4

record_size

'<i'

4

4

record_capacity

'<i'

8

4

first_available_pid

'<i'

PID: ClassVar[PfPageId] = 1

file header의 page id를 나타내는 상수.

NO_AVAILABLE_PAGE: ClassVar[RmPageId] = -1

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

size: ClassVar[int] = 12

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

class RmFile(file_: PfFile, record_size: int, record_capacity: int)[source]

Bases: object

Variables:
  • file (PfFile)

  • record_size (int)

  • record_capacity (int)

static get_header(page_: PfPage) → RmFileHeader[source]
static fetch_header(file_: PfFile) → tuple[PfPage, RmFileHeader][source]
classmethod new(file_: PfFile, record_size: int, record_capacity: int) → Self[source]
classmethod open(file_: PfFile) → Self[source]
property first_available_pid: RmPageId | Noneread-write
assignmentget_page(pid: RmPageId) → RmPage[source]
Raises:

RmFileHeaderAccessError –

assignmentfind_next_pid(pid: RmPageId) → RmPageId | None[source]
assignmentget_record(rid: RmRecordId) → RmRecord[source]
Raises:
assignmentinsert_record(data: RmRecordData) → RmRecordId[source]
Raises:
assignmentdelete_record(rid: RmRecordId) → None[source]
Raises:
assignmentupdate_record(rid: RmRecordId, data: RmRecordData) → None[source]
Raises:
assignmentpersist() → None[source]
assignmentvacuum() → None[source]