用語
Device Connector Frameworkで使用される用語について説明します。
メッセージ
タスク間で送受信されるデータです。
タスク間で送受信されるメッセージは、何らかの型を持ちます。
型情報は、MIMEタイプ(例: MIMEタイプ "image/jpeg"
)またはカスタムタイプ(例: カスタムタイプ "iscp-v2-compat-msg"
)です。
各ポートがどの型のメッセージを受け取れるかは、エレメントにおいて定義されます。
送信元のタスクは、メッセージを最初に送信するとき、そのメッセージの型をデバイスコネクターに通知します。 デバイスコネクターは、メッセージを受信するポートがその型を受け入れ可能かどうかを判定し、受け入れができない場合はエラーとします。
データを、MIMEタイプ "image/jpeg" 、 MIMEタイプ "text/plain" 、カスタムタイプ "iscp-v2-compat-msg" 等で送出するエレメントの場合は、1枚の画像、1行のテキスト、1つのデータポイントのように、意味を持つ単位を1つのメッセージとして送出します。
それに対し、MIMEタイプ "application/octet-stream" で送出するエレメントの場合は、送出するデータは区切りのないバイナリストリームであるため、意味的な区切りとは関係なく送信上の都合でセグメントに分割して送信します。この場合のセグメントもここではメッセージと呼びます。
エレメント
メッセージの生成やメッセージの処理を定義したものです。 デバイスコネクター内にメッセージを生成する「srcエレメント」、受け取るだけの「sinkエレメント」、送受信を共に行う「filterエレメント」があります。
エレメントは、実行時には「タスク」として実行されます。
デバイスコネクター内のパイプラインでは、以下の順序で処理が行われます。
srcエレメントにおいて、デバイスコネクターの外部(例えばセンサー)からデータを取得して、メッセージを生成
filterエレメントにおいて、メッセージを意味のある単位に区切る、変換する、などの処理を行う
sinkエレメントにおいて、デバイスコネクターの外部(例えばintdash Edge Agent)にデータを出力する
注釈
アプトポッドにより提供されるエレメントは以下のような名前になっています。
srcエレメント:
*-src
filterエレメント:
*-filter
sinkエレメント:
*-sink
例えば、入力をjpegのフレームごとのメッセージにするのはfilterエレメントの役目で、jpeg-split-filterと名付けています。
タスク
エレメントにおいて定義された処理が実際に実行されるとき、その処理はタスクと呼ばれます。 タスクは、メッセージの送受信が必要になったときに起動されます。
ポート
エレメントには、0個以上255個以下の受信ポートと、0個以上255個以下の送信ポートを定義することができます。 複数のポートを使うことによって、ポートごとに別の型のメッセージを送受信させることができます。
複数の送信ポートからのメッセージを、1つの受信ポートで受信することができます。
1つの送信ポートから、複数の受信ポートに向けてメッセージを送信することはできません。
注釈
Device Connector Framework v1.0現在、送受信ともに0番ポート1つのみを使用することができます。 今後のリリースで、順次複数のポートに対応する予定です。
プラグイン
Device Connector Frameworkは、プラグインによるエレメントの追加をサポートしています。 プラグインは共有ライブラリ(.so)の形式で開発し、実行時にロードされるようにします(ダイナミックリンク)。