1

私は CORBA を初めて使用し、QT アプリケーション用の Corba インターフェイスを作成しようとしています。CORBA で使用できるデータ型を確認しましたが、QT オブジェクトを CORBA 関数のパラメーターとして使用できるかどうかはわかりません。私が渡したいのは QWSPointerCalibrationData です。CORBA サーバー コードがあるとします。

//pass data.screenPoints and data.devPoints

CORBA::Boolean Calibrate( QWSPointerCalibrationData data )
{
  ...
}
  • これは可能ですか?
  • はいの場合、IDL ファイルで宣言するにはどうすればよいですか?
  • そうでない場合、これらのタイプのデータを渡すことができるように、どの CORBA データ タイプを使用できますか?
4

1 に答える 1

4

コードがあるので、これは不可能です。アプリケーションで使用している IDL 型と同等の IDL 型を指定する必要があります。また、CORBA IDL で定義されている型とアプリケーションで定義されている型との間の変換関数も提供する必要があります。利点として、独自の型を内部で使用しているため、通信 (または RPC) テクノロジの将来の変更に対してアプリケーションを盲目にすることができます。この場合、ドキュメントを見ると、QWSPointerCalibrationData型には 2 つのデータ メンバーがあります。

QPoint  devPoints[5] 
QPoint  screenPoints[5]

次に、IDL で最初にQPoint型を宣言し、次に ( CORBA 型を示すためQWSPointerCalibrationDataに名前の前に を付けます) を宣言する必要があります。C_

// IDL
struct C_Point { long x; long y; };
typedef sequence<C_Point> Points;
struct C_WSPointerCalibrationData
{
    Points devPoints;
    Points screenPoints;
};

次に、サーバーメソッドは次のようにする必要があります。

CORBA::Boolean Calibrate( C_QWSPointerCalibrationData const& data )
{
    QWSPointerCalibrationData qpcd = convert_from_CORBA_QWSPointerCalibrationData(data);
    // use qpcd as usual here
}

また、関数を自分で作成する必要がありますconvert_from_CORBA_QWSPointerCalibrationData(および、その型を CORBA の対応する型に変換する対応するもの)。その変換を行うために利用できるツールがいくつかありますが、そうです、それは残念です。

于 2011-09-30T09:57:49.970 に答える