ITSUKI.
技術734 文字2 分

Day 04|Op と EventMsg — お願いと報告を分ける

#Codex#ソースコードリーディング#図解

この章しょうの答こたえ

UI からの操作そうさ要求ようきゅうと、Core からの出来事できごとの通知つうちは別べつの方向ほうこうに流ながれる。

レストランで注文ちゅうもんを伝つたえることと、料理りょうりができたと知しらされることは別べつです。Codex の内部ないぶメッセージも、してほしいことと起おきたことを分わけて読よむと、非同期ひどうきの動うごきが分わかりやすくなります。

01|図でつかむ

図04|Op と EventMsg

要求ようきゅうは Core へ、出来事できごとは UI へ。これは内部ないぶ Protocol の概念図がいねんず。

02|3つのポイントで理解する

1. Op は要求の種類を表す

ユーザー入力にゅうりょくや処理しょりへの操作そうさは、内部ないぶの Op として表現ひょうげんされます。enum の定義ていぎだけでなく、その variant を受け取うけとる match を探さがすと、どこが実行じっこうを担当たんとうするかが分わかります。

2. EventMsg は進行を知らせる

処理中しょりちゅうには複数ふくすうの出来事できごとが発生はっせいします。UI は通知つうちを受うけて表示ひょうじを更新こうしんします。一ひとつの要求ようきゅうが一ひとつの通知つうちだけで完結かんけつするとは限かぎらず、開始かいし・途中とちゅう・完了かんりょうを区別くべつして読よみます。

3. 識別子で対応を確認する

Submission や Event の包み方つつみかた、ThreadId や処理しょりの ID を見みると、どの会話かいわ・操作そうさに属ぞくする情報じょうほうかを追おえます。App Server の公開こうかい API と内部ないぶ Op の型かたを同おなじものとして扱あつかわないことも大切たいせつです。

03|ソースで確かめる

以下いかの検索けんさくは Codex リポジトリのルートで実行じっこうします。最初さいしょに対象たいしょう commit を記録きろくし、検索結果けんさくけっかから定義ていぎと呼び出よびだし元もとを一ひとつずつ開ひらいてください。

git rev-parse --short HEAD
rg -n "enum Op|enum EventMsg" codex-rs

読よむ入口いりぐち: codex-rs/protocol/src/protocol.rs 。リンク先さきは照合しょうごうに使つかった固定こてい commit のファイルです。手元てもとの版はんと異ことなる場合ばあいは、上うえの検索語けんさくごから探さがし直なおします。

小さく試す

Op と EventMsg から一ひとつずつ選えらび、作つくる場所ばしょ・受け取うけとる場所ばしょ・更新こうしんする状態じょうたいを線せんで結むすびます。

04|30秒で復習

  • 要求ようきゅうと通知つうちは方向ほうこうが違ちがう。
  • 一ひとつの要求ようきゅうから複数ふくすうの通知つうちが出でる。
  • ID と受信側じゅしんがわの処理しょりまで追おう。

全ぜん30章しょうの目次もくじへ