問題タブ [gen-event]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
erlang - OTP イベント マネージャ プロセスの状態 (ハンドラではありません!)
OTP イベント マネージャ プロセス (ロガーなど) は、独自の状態 (ログ レベルなど) を持ち、それに基づいてイベントをフィルタ/変換できますか?
events - Erlang gen_event が機能しない
単純な gen_event アプリケーションを erlang で作成しようとしています。
私のコード:
通知しようとすると、関数 handle_event({test}, State) が実行されることを期待していますが、何も起こりません。なんで?どうしたの?
そして、gen_eventの簡単な例はどこで見ることができますか?
ありがとうございました。
erlang - Erlang: リモート マネージャーに gen_event グローバルを使用する
ローカルに登録すると、イベント フレームワークを問題なく開始できます。
registered() を呼び出すと foo_event_container が表示され、それにメッセージを送信すると、ハンドラーに表示されます。
ただし、ノードを再起動して試してみると
registered() はコンテナーを表示しません。コンテナーにハンドラーを追加しようとすると、
Sasl は追加情報を提供しません。この問題をグーグル検索すると、コンテナーを実行しているシェルが強制終了されたことが推測されますが、同じノードからアクセスしようとしているため、ここでは当てはまりません!
1) ここで何が起こっているのか、何か考えはありますか?
2) リモート コンテナーを使用するのが最適な設計ですか?それとも、すべてのサーバーがリモート プロセスにメッセージを送信するローカル コンテナーを使用する方がよいでしょうか?
ありがとう!
tcp - Erlangは着信TCP接続を動的に受け入れます
私が解決しようとしていること:特定のポートでリッスンするErlang TCPサーバーがあり(コードはある種の外部向けインターフェイス/ APIに存在する必要があります)、各着信接続はによって処理される必要がありますgen_server
(つまり、gen_tcp:accept
コード化する必要があります) )の内部gen_server
ですが、実際には、着信接続を受け入れる事前定義された数のプロセスを最初に生成したくありません)。それはどういうわけか可能ですか?
erlang - gen_eventmanagerにアトミックに通知して停止します
マネージャープロセスが特定のメッセージを受信した場合、gen_event
すべてのハンドラーがそのメッセージを処理した後、他のイベントを取得して処理する前に、メッセージを停止する必要があります。私が見つけることができる唯一の方法はこれです:
remove_handler
ただし、これにはすべてのハンドラーがから戻る必要があります。そうしないと、前後handle_event({stop, Reason}, State)
の別のプロセスから送信されたイベントを処理できます。ハンドラーに要件を課さないアプローチが必要です。sync_notify
stop
erlang - 同じイベント ハンドラーの複数のインスタンスを異なる状態で使用するにはどうすればよいですか?
定期的に発生するイベントを持つ OTP アプリケーションがあります。イベントに応じて何かをしたいアクターが何人かいます。各アクターが行うことは、それ自体の状態の関数ですが、それ以外は同一です。
私の問題は、このセットアップを監視ツリーに組み込む方法にあります。各アクターがイベント ハンドラーである gen_event マネージャーがあります。これは、gen_event 監視が奇妙であるという事実がなければ、うまく機能します。最初のハンドラーが終了add_sup_handler
すると、残りは失敗しalready_started
、イベント ハンドラーのスーパーバイザーとして機能している gen_server が停止します。
それで、私はここで何をすべきですか?すべてのアクターとその状態を追跡できる独自のイベント マネージャーを作成する必要があると考え始めています。
erlang - Erlangでgen_eventの動作を拡張する
私は、さまざまなイベントハンドラーを使用するイベントマネージャーを作成しています。このイベントマネージャーには、さまざまなイベントが通知されます。各ハンドラーは特定のイベントのみを処理し、残りは無視します。各ハンドラーは、状況に基づいて他の特定のイベントをトリガーすることもできます。
たとえば、最初に処理するハンドラーEvent1
処理する2番目のハンドラーEvent2
イベントのトリガーはハンドラーのgen_event:notify(self(), NewEvent)
内で呼び出すことで実行handle_event
できますが、イベントマネージャーから呼び出すことができるように、抽象化してエクスポートしたいと思います。
パターンマッチング、イベントの無視、イベントのトリガーはすべてのハンドラーに共通しているので、とにかくgen_event
動作を拡張してそれらを組み込みとして提供することはできますか?
カスタム動作を作成するデフォルトの方法から始めます。
次に何をすべきかわかりません。
erlang - gen_eventhandle_infoが呼び出されない
私はgen_eventの動作を使用しており、イベントの処理とは別に、他の一般的なメッセージを処理できるようにしたいと考えています。ドキュメントによると、これらのメッセージはhandle_infoを介して受信する必要があります。しかし、これは機能していないようです...私が非常に明白な何かを見逃していない限り!
これが私の振る舞いの実装です:
そして、これが私の使用法です
問題は、コードio:format( " Info〜p〜n"、[ Info ])に到達しないことです。
私はあまり愚かなことをしていないことを願っています!ありがとう
http - スーパーバイザーを備えた Erlang socket.io サーバー
現在、 socket.io-erlangを使用して単純なチャット サーバーを作成しようとしています。Erlang の学習を始めたばかりなので、モジュールで動作するようにデモを適応させるのにいくつか問題があります。あなたが私を助けてくれることを願っています、これが私がこれまでに持っているものです。まだ機能はありませんが、今回は機能させたいだけです (起動後にいくつかのクラッシュレポートを受け取ります。必要に応じて読むことができます)。
アプリ
スーパーバイザー
Socket.IO イベント ハンドラ
HTTP リクエスト ハンドラ
erlang - Erlang - スーパーバイザーと gen_fsm での例外終了
calculadora
、log_calculadora
およびの3 つのモジュールがありsupervisor_calculadora
ます。Calculadora
gen_fsm を使用して合計、減算、乗算、および除算を行う単純な計算機であり、スーパーバイザーはスーパーバイザーの動作を実装します。Calculadora はうまく動作calculadora
しますが、除算 0/0 または例外を作成したときにモジュールを再起動する必要があるスーパーバイザーを試してみると、機能しません。なんで?
PD: モジュールlog_calculadora
は、私が行った操作をcalculadora
log.txt ファイルに書き込むだけです。TEST モジュールは、私に例外終了を与えるモジュールです。