본문 바로가기
C.W.K.
Stream
Lesson 02 of 04 · published

KitTerminalClient 가 두드려

~11 min · siblingkit, kit-terminal-client, waygate, watchfire, wire

Level 0불씨
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

호출자는 사설 사투리가 아니라 키트로 두드려

Sibling Kit 가 터미널 클라이언트를 실어(KitTerminalClient). 가족 앱이 Smolder 에게 판을 청하는 두 번째 길을 만들지 않게 해. Waygate 는 폴더가 분할을 원할 때 이미 그걸로 두드려. Watchfire 는 호스트가 자리를 원할 때 이미 그걸로 두드려. 키트를 소비하는 거지, 키트를 다시 말하는 게 아니야. 이 퀘스트는 키트가 어떻게 벤더되는지, 드리프트가 어떻게 검사되는지, 핀이 어떻게 움직이는지 가르치지 않아. 그 문장들은 키트 자신의 퀘스트 것이야. 여기 제품 사실은: 호출자가 그 클라이언트를 쓰고, 옆에 날것 입력 메서드를 더하지 않는다는 거야.

형제마다 사설 사투리는 문이 이름 넷인 일반 키보드 넷을 키우는 길이야. 키트 클라이언트가 공유하는 입이야. 새 가족 앱이 터미널이 필요하면 클라이언트를 가져가지, Waygate 호출의 스크린샷을 가져가 변이하지 않아. 변이는 "폴더 열기"가 조용히 "이 문자열 치기"가 되는 길이고, 지난 레슨의 거절이 헬퍼 함수 안에서 죽어.

Smolder 가 세션이랑 와이어를 소유하고, 호출자가 정책을 소유해

소유의 갈라짐이 여기서 버텨. Smolder 는 세션이랑 와이어 계약을 소유해. 어느 판이 있는지, 어느 PTY, 어느 영수증, 어느 안정된 대상 ID. 호출자는 폴더, 호스트, 자리 정책을 소유해. 이 디렉터리가 어디인지, 어느 기계, 어느 Anvil 자리 이름. 클라이언트가 호출자의 정책을 문으로 나르지. 문은 창 제목에서 폴더를 짐작하지 않고, 호출자는 PTY 를 고르지 않아. 그 선을 건너면 Waygate 가 에뮬레이터 상태를 신경 쓰기 시작하거나, Smolder 가 Watchfire 의 호스트 목록을 신경 쓰기 시작해.

영수증은 같은 클라이언트로 돌아와. 호출자는 나중에 말할 수 있는 ID 를 쥐어. 남의 PTY 로 들어가는 파일 디스크립터를 쥐지 않아. 형제가 실행 뒤에 "바이트 몇 개만 보내면" 하고 싶어지면, 정책을 떠나 입력에 들어간 거고, 클라이언트는 그걸 위한 메서드를 키우면 안 돼. 유리 앞의 사람, 또는 PTY 밖의 초안이 이 트랙의 나머지야.

호출자 둘이 이미 모양을 증명해

Waygate 는 이중 창 파일 작업대야. 필요는 공간이야. 이 폴더, 새 잎, 보고 있는 것 옆일 수도. Watchfire 는 함대 제어야. 필요는 호스트 위의 자리, 이름 있는, 제목 없는 셸 무더기가 아닌. 둘 다 형 있는 실행에 맞아. 어느 쪽도 "오른쪽처럼 보이는 판에 cd 치기"가 아니야. 앞날의 형제가 폴더-호스트-자리 말로 필요를 못 말하면, 답은 클라이언트의 새 동사가 아니야. 답은 그 필요가 문의 필요인지에 대한 계획 문의 대화야.

키트는 한 문장, 문은 다른 문장. 키트는 가족이 이미 공유하는 배관이야. 문은 Smolder 의 제품 경계야. 실행과 영수증, 날것 입력 없음, 루프백만. 그 문장을 섞으면 배관 업데이트가 정책 누수의 탓이 되거나, 정책 누수가 배관 업데이트 안에 숨어.

호출자는 KitTerminalClient 로 두드려. Smolder 가 세션이랑 와이어를 소유해. 호출자가 폴더, 호스트, 자리를 소유해. 아무도 날것 입력 메서드를 더하지 않고, 이 퀘스트는 키트가 어떻게 실리는지 다시 말하지 않아.

Code

두드림, 키 입력이 아니라 형 있는 실행으로·swift
// Conceptual shape of the shipped actor. Callers own policy.
// Real types: KitTerminalRequest / KitTerminalReceipt.
let request = KitTerminalRequest(
    caller: "cwkWaygate",
    action: .openDirectory,
    target: .init(host: "local", cwd: folder)
)
let client = try KitTerminalClient(caller: "cwkWaygate")
let receipt = try await client.submit(request)
// receipt names session and pane. Not a file descriptor.
// There is no send(bytes:to:). There is no pressEnter.

External links

Exercise

Waygate 아니면 Watchfire 를 골라. 보낼 실행을 써 (폴더 / 호스트 / 자리 / 대상). 기대해 돌려받을 영수증을 써. 그다음 클라이언트에 더하면 안 되는 메서드 하나, 대신 누가 치는지 이름 붙인 문장 하나를 써 (사람, 또는 나중 초안 뷰).
Hint
실행에 쳐야 할 명령 문자열이 있으면, 이미 변장한 금지 메서드를 더한 거야. 정책은 어디와 누구야. 입력은 눌러지는 것이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.