6.1 ポート
6.1.2 R ポート
図29: ソフトウェアコンポーネント“Swc”のツリーペイン内のPポート“Server”
サーバーランナブルのエントリ関数の戻り値の型は、そのサーバーがアプリケーションエラーを返す場合は Std_ReturnType、返さない場合はvoidです。
Pポートの場合、<PROVIDED-INTERFACE-TREF>エレメント内で、他のポートとの通信に使用する定義済み インターフェース型への参照が定義されます。
さらに、ASCETはソフトウェアコンポーネントSwcの内部ビヘイビアに情報を追加します。1つのオペレーショ ンが呼び出すイベントがサーバーポート内の各オペレーション用に作成され、ランナブルエンティティも同様に 1つずつ作成されます。詳細は第 7章「内部ビヘイビア」を参照してください。
注記
クライアント/サーバーインターフェースは、サーバーがソフトウェアコンポーネントに挿入される際に変更さ れるると編集される可能性があります。この場合、メニューコマンド 、ユーザーはBuild → Update Inter-faces メニューオプションを実行使用して、ソフトウェアコンポーネント内のサーバーインターフェースを更新 する必要があります。
“Select item…”ダイアログボックスが開きます。
ツリーペインをナビゲートし、インターフェースSRInterfaceを選択して OK をクリックします。
“Properties for complex element: SRInterface”ダイアログボックスが開きま す。
このポートの名前をReceiverにし、内部アクセスプロパティ(“Internal Ac-cess”フィールド)で“Required”を選択して OK をクリックします。
図30: “SRInterface”型のRポート“Receiver”
ツリーペインの“Outline”タブからエレメントReceiver::SRInterfaceを 選択し、ソフトウェアコンポーネントのブロックダイアグラム上に配置します。
エレメントSpeedを持つPポート Receiverが、下図のようなグラフィックで 表現されます。
また<REQUIRED-INTERFACE-TREF>エレメントを使用して、他のポートとの通信に使用する定義済みインタ ーフェース型への参照が定義されます。
クライアントポートを作成する:
“Software Component Editor for: Swc”ウィンドウの Insert → Compo-nent を選択します。
“Select item…”ダイアログボックスが開きます。
ツリーペイン内をナビゲートし、インターフェースCSInterfaceを選択して OK をクリックします。
“Properties for complex element: CSInterface”が開きます。
このポートの名前をClientにし、内部アクセスプロパティ(“Internal Access”フィールド)で“Required”を選択して OK をクリックします。
図32: “CSInterface”型のRポート“Client”
ツリーペインの“Outline”タブからエレメントClient::CSInterfaceを選 択し、ソフトウェアコンポーネントのブロックダイアグラム上に配置します。
ブロックダイアグラムエディタ内のClientポートを右クリックしてショートカッ トメニューを開き、Ports → Methods を選択します。
“Port Editor<CSInterface>”ダイアログボックスが開きます。
メソッドNotificationのチェックボックスをオフにして OK をクリックします。
図33 ポートエディタウィンドウでメソッドを選択/選択解除する
Clientブロック内のピンのサイズと位置を調整します。
オペレーションMaximumValueを持つRポート Clientが、下図のような グラフィックで表現されます。
図34: ソフトウェアコンポーネントのブロックダイアグラム上に配置されたRポート“Client”
Rポートの定義内に、<REQUIRED-INTERFACE-TREF>エレメントを使用して、他のポートとの通信に使用す る定義済みインターフェース型への参照が定義されます。
7 内部ビヘイビア
ソフトウェアコンポーネントの「内部ビヘイビア」は、そのコンポーネントを実装するコードとポートとのインタラク ションの方法を定義するものです。本章では、この内部ビヘイビアを設定する方法について説明します。
実行時のソフトウェアコンポーネントとRTEとのインタラクションは、内部ビヘイビアエレメントを用いて定義され ます。ソフトウェアコンポーネントの内部ビヘイビアには以下のものが定義されます。
そのソフトウェアコンポーネントに属するランナブルエンティティ、また各ランナブルとそのソフトウェアコ ンポーネントのポートとの間にインタラクションがある場合は、そのインタラクション
実行時にランナブルエンティティを起動するイベント
ランナブルエンティティが他のランナブルエンティティと相互排他的にコードの全体または一部を実行で きるようにするための排他領域
1つの内部ビヘイビアディスクリプションは1つのソフトウェアコンポーネントにのみ適用されるので、適用され るソフトウェアコンポーネント型を参照する必要があります。この参照は<COMPONENT-REF>エレメントを使用 して定義されます。
以下に、ソフトウェアコンポーネントSwcの内部ビヘイビアディスクリプションの例を紹介します。
内部ビヘイビアの名前は<SHORT-NAME>エレメントで定義されます。この名前は、このビヘイビアを参照する 他のエレメントの中で使用されます。ASCETはソフトウェアコンポーネント名の前にプレフィックスbを付けた名 前を、自動的にそのソフトウェアコンポーネントの内部ビヘイビア名とします。
内部ビヘイビアのショート名は有効なC識別子である必要はありませんが、XMLスキーマにより実施される構 文チェックをパスするものでなくてはなりません。
以下の項では、イベントとランナブルエンティティの基本的枠組みを概説し、さらにランナブルエンティティとイン ターフェースとの間で行われる各種インタラクションを実現するためのRTEの設定方法を紹介します。