[解決済み] イエソドにおける例外
質問
私は、非常に原始的な形式の
ipc
(telnet で特定の単語を特定の順序で並べた文字列を送信する) という非常に原始的な形式を使用するデーモンを作っていました。私はそこから抜け出し、現在は
JSON
にメッセージを渡すために
Yesod
サーバーにメッセージを渡すためのものです。しかし、私のデザインにはとても気に入っている点がいくつかあり、今となっては何を選択すればよいのかわかりません。
私がやっていたことは以下のとおりです。
buildManager :: Phase -> IO ()
buildManager phase = do
let buildSeq = findSeq phase
jid = JobID $ pack "8"
config = MkConfig $ Just jid
flip C.catch exceptionHandler $
runReaderT (sequence_ $ buildSeq <*> stages) config
-- ^^ I would really like to keep the above line of code, or something like it.
return ()
buildSeqの各関数は以下のような感じです。
foo :: Stage -> ReaderT Config IO ()
data Config = MkConfig (Either JobID Product) BaseDir JobMap
JobMap
は
TMVar Map
であり、現在の仕事に関する情報を追跡するものです。
現在、私が持っているのはハンドラで、すべて次のようなものです。
foo :: Handler RepJson
foo
は私のデーモンに対するコマンドを表し、各ハンドラは異なるJSONオブジェクトを処理する必要があるかもしれません。
私がやりたいことは、1つの
JSON
オブジェクトを送信し、もう一つのJSONオブジェクトは例外についての情報を表します。
私が欲しいのは
foo
のヘルパー関数で
Either
を返せるようにする必要がありますが、 どうすればそれを得られるのか、さらにアクションのリストの評価を 終了させることができるのか、よくわかりません。
buildSeq
.
これが私が見た唯一の選択肢です。
1) 確認してください
exceptionHandler
がハンドラ内にあることを確認する。置く
JobMap
の中に
App
のレコードを作成します。を使って
getYesod
で適切な値を変更します。
JobMap
にある、例外についての詳細を示す値を変更します。
でアクセスすることができます。
foo
もっと良い方法はないでしょうか?
他の選択肢は?
編集:わかりやすくするために、以下の役割を説明します。
Handler RepJson
. サーバは以下のようなコマンドを受け取る方法が必要です。
build
stop
report
. クライアントは、これらのコマンドの結果を知るための何らかの方法が必要です。私は、サーバーとクライアントが互いに通信する媒体としてJSONを選びました。HandlerタイプはJSONの入出力を管理するためだけに使用しており、それ以上のことはしていません。
どのように解決するのですか?
哲学的に言えば、Haskell/Yesodの世界では、値を後ろから返すのではなく、前方に渡したいのです。したがって、ハンドラに値を返させる代わりに、例外を生成するようなプロセスの次のステップへ前方に呼び出すようにします。
ハンドラやfoosに継続オブジェクトを渡して、基本的に「終わったら、このコードの塊を実行してください」と伝えることができます。
関連
-
[解決済み】tsconfig.json: Build:No inputs were found in config file.
-
[解決済み] JSONDecodeError: 期待される値:行1列1
-
JsonParseException: 不正な引用符なしの文字 ((CTRL-CHAR, コード 10)): ha
-
[解決済み] 複数の例外を1行でキャッチする(ブロックを除く)
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] JSONでnullを表現する
-
jsonファイルのインポートエラー、TypeError expected string or buffer
-
[解決済み】REST APIでのPUTメソッドとPATCHメソッドの使い分け 実生活でのシナリオ
-
[解決済み] Node.jsでJSONオブジェクトの内容をログに記録する方法は?
-
[解決済み] JSONオブジェクトをBufferに変換し、BufferをJSONオブジェクトに戻す。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JSON Schemaにおける "required "と "optional "の違いについて
-
[解決済み] コマンドラインを使用してJSONオブジェクトの項目をカウントする方法は?
-
[解決済み] JSONDecodeError: 期待される値:行1列1
-
JsonParseException: 不正な引用符なしの文字 ((CTRL-CHAR, コード 10)): ha
-
[解決済み] kubectl get pods の json フォーマットの出力を jsonpath でパースする方法
-
[解決済み] Notepad++でJSONを再フォーマットする方法は?
-
[解決済み] JSONオブジェクトをTypeScriptのクラスにキャストする方法を教えてください。
-
[解決済み] node.jsでJSONをpretty-printするにはどうしたらいいですか?
-
[解決済み] JSONオブジェクトに末尾のカンマを使用することは可能ですか?
-
[解決済み] GoでJSONを部分的にマップにアンマーシャルする