• 検索結果がありません。

2. 概念

2.9 C/S 連携

RTEは,あるSW-Cから他SW-Cのサービスの呼出し(C/S連携)を提供する.C/S連携では,サービ スをオペレーション,サービスの呼出し元をクライアント,サービスの提供元をサーバと呼ぶ.

クライアントは,サービス要求が開始してからサーバからの応答を受け取るまで待ち合わせを行う,

同期連携をサポートする.サービスの結果は,C/S連携のAPIの返り値として取得できる.

2.9.1 C/S連携の構成

C/S連携は以下の要素から構成される.

C/Sインタフェース

C/S連携におけるポートインタフェースであり,SW-C間のオペレーション呼出し内容を規定するイ ンタフェース仕様を表す.

アプリケーションエラー

C/Sインタフェースによるオペレーション呼出しで発生しうるエラーを表す.

オペレーション

C/S連携のインタフェース要素であり,C/S連携で実際に呼び出すサービスを表す.

オペレーション引数

オペレーション呼出しの際に渡す引数を表す.クライアントからのオペレーションの入力情報の引 渡し,およびオペレーションの処理結果のクライアントへの引渡しに使用される.

オペレーション使用アプリケーションエラー

オペレーションにおいて発生しうるアプリケーションエラーを表す.

ポート定義引数値

オペレーション呼出しの際に渡す固定の引数値を表す.サーバへサーバポート固有の入力情報を引 渡すために使用される.

サーバポート

C/S連携における提供側ポートであり,オペレーションを提供するSW-Cのポート.

クライアントポート

C/S連携における要求側ポートであり,オペレーションを呼び出すSW-Cのポート.

サーバオペレーション

サーバポートにおけるオペレーションのインスタンス.

クライアントオペレーション

クライアントポートにおけるオペレーションのインスタンス.オペレーション呼出しのためのAPI はクライアントオペレーション毎に生成される.

サーバSW-C

C/S連携における提供側SW-Cであり,C/Sインタフェースを介してオペレーションを提供する SW-C.

クライアントSW-C

C/S連携における要求側SW-Cであり,C/Sインタフェースを介してオペレーションを呼び出す SW-C.

サーバランナブル

オペレーション呼出しイベントにより起動し,オペレーションの処理を行うランナブル.オペレー ションの処理内容は,本ランナブルの処理内容として定義される.

2.9.2 C/S連携の種別 2.9.2.1 C/S連携の多重度

RTEは,以下の多重度のC/S連携をサポートする.連携の多重度については,2.4.2.2節を参照.

・ 1:0連携,0:1連携〔rte_sws_1329〕

・ 1:1連携

・ N:1連携【rte_sws_4519】

以上のいずれのケースについても,RTEは,クライアントポートに対し1つのオペレーション要求 APIを提供する.

複数のクライアントが同一のオペレーションを使用する場合,RTEは,オペレーションの結果が適切 なクライアントに送られることを保証する【rte_sws_4516】.

ービスの処理に必要となる場合がある.RTEは,これらの情報をポート定義引数値としてサーバに提 供する.

ポート定義引数は,サーバポート毎に,コンフィギュレーションにより設定できる.

2.9.3 C/S連携の操作

2.9.3.1 オペレーション呼出し

RTEは,オペレーション毎にオペレーション呼出しのためのAPI(Rte_Call)を提供する.クライアン トSW-Cは,提供されたAPIを使用することで,オペレーション呼出しを行う.オペレーション呼び 出しの引数と返り値は,アトミックに扱う【rte_sws_4518】.

オペレーション呼出しの挙動

Rte_Callによりオペレーション呼出しが開始された場合の挙動は以下の通りである

【nrte_sws_0076】.

(1) RTEは,APIにより指定されたオペレーション引数の値をサーバポートに伝搬する.

(2) サーバポートに値が伝搬されると,RTEは,サーバランナブルに伝搬されたオペレーション 引数の値,およびポート定義引数値を渡して起動する.

(3) サーバランナブルは,渡された引数に従ってオペレーションの処理を行い,処理結果の値を サーバランナブルのオペレーション引数,および返り値として返す.

(4) RTEは,サーバランナブルのオペレーション引数の値,および返り値をクライアントポート に伝搬する.

(5) クライアントポートに値が伝搬されると,RTEは,オペレーション呼出し元のRte_Callの引 数に伝搬されたオペレーション引数の値を設定する.そして,伝搬された返り値をAPIの返 り値として返す.

サーバランナブルへの引数渡しの順序

オペレーション呼出しによりサーバランナブルを起動する際,RTEは,以下の順序で引数値を指定 して,サーバランナブルを呼び出す【rte_sws_1360】.

(1) 全てのポート定義引数値(ポート定義引数値の定義順)

(2) APIにより指定された全てのオペレーション引数の値(オペレーション引数の定義順)

オペレーション呼出しの制限

サーバランナブルはオペレーション呼出しAPIからのみ起動する【rte_sws_6019】.サーバランナ ブルはオペレーション呼出しAPIからのみ起動でき,RTE以外のモジュールから関数呼び出しにより 起動してはならない【rte_sws_a_0030】.本RTEのオペレーション呼び出し範囲は以下の通りである

【nrte_sws_0050】.

SW-C間の連携パターン SW-C所属 パーティションの権限

サポート有無

クライアント サーバ

パーティション内連携 非信頼 (同左) ○

信頼 (同左) ○

パーティション間連携 (コア内)

非信頼 非信頼 ×

信頼 ○

信頼 非信頼 ×

信頼 ○

コア間連携 - - ×

ECU間連携 - - ×

オペレーションの並行呼出し

各クライアントは,サーバの,あるオペレーションを並行して呼び出すことができる.RTEは,サー バのオペレーションの並行起動要求をサポートする【rte_sws_4520】.

オペレーション呼出しのデータ一貫性保証

RTEによるオーバヘッドを減らすため,オペレーション呼出しがサーバランナブルの直接関数起動 として実現される場合,RTEは,参照渡しされるパラメータのコピーを作成せず,参照パラメータのデ ータ一貫性を保証することはアプリケーションの責任である【rte_sws_7008】.

2.9.4 C/S連携の実現方式

2.9.4.1 オペレーション呼出し

本RTEにおける,オペレーション呼出しAPI(Rte_Call)からのサーバランナブル起動は以下の方法 で実現する【nrte_sws_0031】.

SW-C間の連携パターン SW-C所属 パーティションの権限

実現方法

クライアント サーバ

パーティション内連携 非信頼 (同左) 直接関数起動

信頼 (同左) 直接関数起動

パーティション間連携 (コア内)

非信頼 非信頼 -

信頼 OS信頼関数経由での直接関数起動

信頼 非信頼 -

信頼 直接関数起動

コア間連携 - - -

ECU間連携 - - -

2.9.5 C/S連携の設定

2.9.5.1 C/Sインタフェース,オペレーション,およびアプリケーションエラー

C/Sインタフェースは,C/Sインタフェース(ClientServerInterface)により指定する.

オペレーションは,C/Sインタフェース(ClientServerInterface)のオペレーション(operation)により 指定する.

アプリケーションエラーは,C/Sインタフェース(ClientServerInterface)の発生可能エラー (possibleError)により指定する.

2.9.5.2 クライアント,およびサーバポート

クライアントポートは,C/Sインタフェースを参照する要求側ポートプロトタイプ(RPortPrototype) により指定する.

サーバポートは,C/Sインタフェースを参照する提供側ポートプロトタイプ(PPortPrototype)により 指定する.

2.9.5.3 オペレーション引数

オペレーション引数は,オペレーションのオペレーション引数(argument)により指定する.

2.9.5.4 オペレーション使用アプリケーションエラー

オペレーション使用アプリケーションエラーは,オペレーションの発生可能エラー(possibleError) により指定する.

2.9.5.5 ポート定義引数値

ポート定義引数値は,サーバポートを参照するポートAPIオプション(PortAPIOption)ポート定義 引数値(portArgValue)により指定する.

2.9.5.6 サーバランナブル

サーバランナブルは,オペレーションを参照するオペレーション呼出しイベント

(OperationInvokedEvent)で起動するランナブル(RunnableEntity)により指定する【rte_sws_5163】.

2.9.5.7 ポート間の接続関係

クライアントポート-サーバポート間の接続関係は,クライアント(要求側)ポート,およびサーバ(提 供側)ポートを参照するアセンブリコネクタ(AssemblySwConnector)により指定する.RTEGENは,

要求側ポート同士の接続や,提供側ポート同士の接続された設定を拒否〔rte_sws_7192〕し,コード生 成を中止する.

2.9.5.8 オペレーション間の接続関係

RTEGENは,以下のルールに基づき,C/Sインタフェース(ClientServerInterface)のオペレーショ

ン(operation)の接続関係を判定する【rte_sws_3818】.

・ クライアントポート-サーバポートの間で,ショートネームが一致するオペレーションを接続され ているものとして扱う.

・ ポート間で対応するオペレーションが存在しない場合,そのオペレーションは未接続である(接続 されているポートがない)ものとして扱う.