状態の保持と無限再帰の防止

プラグイン・マネージャーへのすべての呼び出しには固有 ID (UID) が関連付けられています。

次に示すシナリオで例示されているように、UID により、ロギング、無限再帰の検出、および preExit メソッド呼び出しと postExit メソッド呼び出しの間での状態保持が容易になります。

図 1. 無限再帰の防止
無限再帰の防止

無限再帰が発生するシナリオを以下に示します。

ただし、1 番目のステップでプラグイン・マネージャーの preExit メソッドがデータ・オブジェクトの Context オブジェクトに UID を挿入します。この UID の値は List オブジェクトであり、2 番目の呼び出しで新規 UID がこのオブジェクトに追加されます。

サブスクライバーは、以下の理由から無限再帰を防ぐための検査を行います。

さまざまなサブスクライバー呼び出し間での状態保持のために、同一 UID を使用できます。サブスクライバーが新規トピック・エミッターを呼び出す場合、無限再帰を防ぐため、新規データ・オブジェクトにこの UID をコピー・バックする必要があります。状態を保持することで、サブスクライバーは preExit メソッド呼び出しを postExit メソッド呼び出しと関連付けけることができます。



利用条件 | フィードバック