Smart CODE
生成済みコードに関するオンラインガイド

名前
Internet Data - データ入力ストリームを制御するデータオブジェクト
概要
インターネットから入力されるデータは、独自のデータ構造およびクラスを使用して処理されます。これを使用すると、URL 接続が確立し、データが送信され、コンテンツヘッダーが検出された後、ユーザーの制御下でさまざまな方法でデータを処理することができます。

この Internet Data オブジェクトは、thin クライアント用スマートコードによって自動的に処理されます。これには、データを読み込んでパラレル変換し、グループデータオブジェクトの内容を更新するための非公開コードが組み込まれています。この処理については、「生成済みクライアント-サーバー用コールアウトおよびメソッド」のセクションで詳細に説明しています。

受信データの MIME 型が、予定していた thin クライアントの非公開 MIME 型と一致しない場合 (または、ユーザーが代替受信ハンドラを用意していた場合)、データは、処理のためにスタブルーチンに渡されます。生成済みスタブには、InputStream データへのアクセス方法とデータの読み込みおよび処理方法に関するコメント付きの例が含まれています。

C および C++ でのインターネット接続とストリーム処理は、java.net および java.io URL URLConnection、InputStream、OutputStream などのクラスと同じ API に作用するクラスおよびオブジェクトを使用して処理されます。これは、あるツールキットもしくは言語で記述されたコードを別のツールキットもしくは言語に簡単に移行できるようにしたり、まったく同じ方法で動作する代替 thin クライアントを導入するために、共通 API を提供することを目的としています

次のデータ構造は、Internet Data インタフェースを定義しています。ハンドラルーチンに渡されるデータオブジェクトは、特定のトランスポートメカニズム (ここでは HTTP) のためのインタフェースを実装したものであるため、抽象的なデータ構造です。

形式
C
typedef struct sc_idata_s
{
        /* public: */
                string_f        getMimeType;      /* 純粋仮想 */
                InputStream_f   getInputStream;   /* 純粋仮想 */
                int_f           getContentLength; /* 純粋仮想 */
                int_f           load;             /* 純粋仮想 */
} sc_idata_t;
C++
class sc_idata_c
{
        public:
                virtual char * getMimeType() = 0;
                virtual InputStream * getInputStream() = 0;
                virtual int getContentLength() = 0;
                virtual int load( sc_stdcs_c* data) = 0;
};
Java
package utils_java;

public abstract class SCIData
{
        public abstract String getMimeType();
        public abstract InputStream getInputStream() throws IOException;
        public abstract int getContentLength();
        public abstract boolean load( SCStdCS csdata) throws IOException;
}
説明
getMimeType()
- Web サーバーによって返されたコンテンツヘッダーから取得した URL の MIME 型を返します。thin クライアントトランザクションが正常な場合、非公開の MIME 型は次のようになります
x-application/sc-GROUPNAME
これは、接続の完全性を保証するためにクライアントとサーバーの両方で使用されます。

独自の処理ルーチンを用意する場合は、異なる MIME 型を受け取った場合に備えて、代替処理メカニズムを用意します。

getContentLength()
- データを送信している Web サーバーによって報告された、予想されるデータ長を返します。ファイアウォールまたはプロキシが介在する場合、これは信頼できないことがあり、データ長として -1 (指定なし) が返されることがよくあります。
getInputStream()
- URL が返した InputStream にアクセスできるようになります。受信データは次のように処理できます。
  • 必要に応じてバッファリングし、ストリームとして
  • すべてのデータをダウンロードした後 (InputData メソッドを使用して)
  • ハンドラ (たとえば SGMLまたは HTML 解析エンジンなど) に渡すことにより
  • load()
    InputStream を読み取り、その内容をグループオブジェクトに読み込みます。これは thin クライアントコードによって使用され、グループの非公開 MIME 型と一致するデータを要求します。
    使用法
    関連項目