C プログラミング言語でユーザー定義拡張機能を開発する場合は、ストレージ管理に関する問題を考慮してください。
Java™ プログラミング言語を使用してユーザー定義拡張機能を開発している場合は、標準 Java ストリング処理メソッドを使用できます。
ユーザー定義拡張機能が割り振るすべてのメモリーは、ユーザー定義拡張機能によって解放される必要があります。 実行時のノードの構成により、cniCreateNodeContext 機能が呼び出され、そのことによってユーザー定義拡張機能は、ノード・インスタンス特定のデータ・エリアを割り振ってコンテキストを保管します。 コンテキストのアドレスはブローカーに戻され、内部メソッドによりユーザー定義拡張機能が呼び出されるときにブローカーから戻されます。 したがって、C ユーザー定義拡張機能は関数処理で正しいコンテキストを見つけ、使用できます。
ブローカーは、 C++ オブジェクトのアドレスをユーザー定義拡張機能に渡します。これは、後続の関数呼び出しの際に戻されるハンドルとして使用されます。 C ユーザー定義拡張機能が、(例えば free 関数を使用してストレージの解放を試行するなど) どんな方法であれ、これらポインターを操作したり使用したりすることがないようにしてください。 そのようなアクションは、ブローカーで予測不能な振る舞いを引き起こします。
cniCreateNodeContext インプリメンテーション関数は、 基礎になるノード・オブジェクトが内部的に構成されるときにはいつでも呼び出されます。 この呼び出しは、ユーザー定義ノードを使用するメッセージ・フローでブローカーが定義されるときに行われます。 このアクティビティーは、スレッドを作成 (または再利用) してノードを含むメッセージ・フロー・インスタンスを実行する場合と必ずしも同じではありません。 cniCreateNodeContext 関数は、メッセージ・フローを実行しているスレッドの数に関係なく、メッセージ・フローの構成中に一度だけ呼び出されます。
同様の考慮事項がユーザー定義のパーサー、および対応するインプリメンテーション関数 cpiCreateContext にも適用されます。