콘텐츠로 이동

English | 한국어

시스템 목차 | 이전: Auto HWM | 다음: POSD module 구조

Core source layout

이 장이 정의하는 것 — Core raw runtime source가 디렉터리와 include 방향으로 어떻게 나뉘는지의 구현 서술.

1. Core source layout 개요

이 문서는 Core raw runtime source의 디렉터리 구획별 책임과, 구획 사이에 허용하는 include 방향을 설명한다. 대상 독자는 Core source를 수정하거나 새 파일의 위치를 정하는 유지보수자다.

이 문서 전체는 공개 계약이 아니라 구현 서술이다. 문서와 코드가 어긋나면 코드가 사실이며, 문서를 코드에 맞춘다. Application이 의존하는 공개 계약은 이 문서가 아니라 각 기능의 스펙 문서가 소유한다.

관련 계약의 소유 문서는 다음과 같다.

관련 계약 정의하는 문서
설치 header와 export manifest Core runtime 경계
각 용어의 짧은 정의 Core 용어

2. Layer model

Source는 다음 구획으로 나뉜다.

core/
|-- include/                public raw C ABI (root zlink.h, zlink_enum.h, zlink_errno.h)
|   `-- zlink/              domain header (common.h, core/, message/, socket/, eventing/)
|-- src/api/                C ABI, validation, public multipart·request/reply·completion state와 timer scheduler
|-- src/runtime/sockets/    socket-type routing과 pipe semantics
|-- src/runtime/core/       context, session, pipe, message runtime과 poller·monitor 기반
|-- src/runtime/engine/     ZMP and RAW engines
|-- src/runtime/protocol/   ZMP·RAW wire codec (encoder/decoder)
|-- src/runtime/transports/ transport integration
|-- src/runtime/utils/      allocator, clock, err 등 공용 utility
`-- tests/                  raw contract and integration tests

위 구획에서 socket은 message를 주고받는 endpoint이고, Context는 I/O thread와 socket을 담는 최상위 container다. src/runtime/sockets/가 socket type별 의미를, src/runtime/core/가 context와 session·pipe·message runtime을 구현한다.

3. Include 방향

src/api/의 public 진입점은 socket semantic 계층을 호출한다. 반대 방향으로 socket runtime은 public multipart·request/reply·completion state와 연결할 때 api/socket internal header를 include한다. socket semantic 계층은 runtime core의 공통 connection·pipe 메커니즘을 사용한다. Engine과 transport는 socket type의 application 의미를 알지 못한다.

MeshName, ChannelName, application mailbox, Spot, Actor, Location Store와 service lifecycle 상태는 Core 위에서 application service를 제공하는 상위 계층인 Framework가 소유하는 개념이다 (POSD module 구조 §3). Core source에는 이 개념들을 두지 않는다. Framework 편의를 위한 별도 native seam도 추가하지 않는다.

4. Public include 규칙

Root zlink.hzlink/common.h와 core(zlink/core/api.h), message, socket, eventing domain header만 포함한다. Public header는 src/ private header를 include하지 않는다. 설치 header와 export manifest는 Core runtime 경계와 일치해야 한다.

시스템 목차 | 이전: Auto HWM | 다음: POSD module 구조