SerializeOutputStream (クラス)
public SerializeOutputStream {inherits {OutputStream-of any}}
パッケージ: CURL.IO.SERIALIZE

バイト ストリームにシリアル化される出力ストリームです。


コンストラクタ
default:シリアル化する出力ストリームを作成します。
コンストラクタ public {SerializeOutputStream.default
raw-byte-stream:ByteOutputStream,
close-stream-on-close?:bool = true,
known-values:#FastArray = null,
protocol:SerializeProtocol = {this-class}.default-protocol
}

プロパティ
known-values:既知の値のセットです。
アクセサ public inline SerializeOutputStream.known-values:#FastArray
open?:このストリームが現在開いているかどうかを示します。Stream-of.close が呼び出されると false を返します。
アクセサ public SerializeOutputStream.open?:bool
origin-url:このストリームを開いた Url を返します。そのような Url が存在しない場合は null を返します。
アクセサ public SerializeOutputStream.origin-url:#Url
protocol:このストリームで使用されるシリアル化プロトコルです。
アクセサ public inline SerializeOutputStream.protocol:SerializeProtocol
raw-byte-stream:カスタマイズされたシリアル化の対象となるロー バイト ストリームを取得します。
アクセサ public SerializeOutputStream.raw-byte-stream:ByteOutputStream
プロパティ 継承 Stream-of: non-blocking-supported?

クラス変数と定数
default-protocol:既定のシリアル化プロトコルです。
public constant SerializeOutputStream.default-protocol:any =SerializeProtocol.version-6-0

メソッド
clear-shared-object-table:共有オブジェクトが記録されたテーブルをクリアします。
public {SerializeOutputStream.clear-shared-object-table}:void
close:ストリームを閉じます。呼び出されると、ストリームを使用不可能にして Stream-of.open?false を返すことを確かめます。
public {SerializeOutputStream.close}:void
do-not-share-next:書き込まれる次のオブジェクトを共有しません。
public {SerializeOutputStream.do-not-share-next}:void
flush:self が収集した、バッファされた出力をフラッシュします。
public {SerializeOutputStream.flush
non-blocking?:bool = false,
allow-short-write?:bool = false
}:void
get-package-locator:パッケージの追加位置情報を取得します。
public {SerializeOutputStream.get-package-locator
package:Package
}:#String
reopen:ストリームが閉じられた後に再度開くことができます。
public {SerializeOutputStream.reopen
raw-byte-stream:ByteOutputStream,
close-stream-on-close?:bool = true,
known-values:#FastArray = self.known-values,
protocol:SerializeProtocol = self.protocol
}:void
write-class-version:クラス バージョンを書き出します。
public {SerializeOutputStream.write-class-version version:int}:void
write-one:値をそのストリームにシリアル化します。
public {SerializeOutputStream.write-one val:any}:void
write-one-compact:コンパクトな表現を使用して値を書き出します。
public {SerializeOutputStream.write-one-compact
val:any,
compile-time-type:Type
}:void
write-protocol:シリアル化ストリームのヘッダーにプロトコル ナンバーを書き込みます。
public inline {SerializeOutputStream.write-protocol}:void
メソッド 継承 OutputStream-of: async-write, write
メソッド 継承 Stream-of: verify-open
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
default (コンストラクタ)
public {SerializeOutputStream.default
raw-byte-stream:ByteOutputStream,
close-stream-on-close?:bool = true,
known-values:#FastArray = null,
protocol:SerializeProtocol = {this-class}.default-protocol
}

シリアル化する出力ストリームを作成します。

raw-byte-stream: シリアル化されたオブジェクトの書き込み先バイト ストリーム。
close-stream-on-close?: true の場合 (既定)、バイト ストリーム raw-byte-stream はこのストリームと同時に閉じられます。
known-values:
この配列のインデックスを使用して単純にシリアル化される既知のポインタ値のオプションのリストを規定します。SerializeInputStream は同じ配列で開かれなければなりません。
プロシージャとクラス インスタンス以外の全ての値は無視されます。 SerializeProtocol のバージョン 4.0 では、配列全体が無視されます。
protocol:
使用されるシリアル化プロトコルを規定します。これは、Curl の 4.0 または 5.0 API で起動されているコードによって読み込まれるデータを書き出す時のみに規定される必要があります。
一般的に言えば、古いプロトコルは新しいプロトコルより遅く、圧縮率が低くなります。
詳細に関しては SerializeProtocol を参照してください。

注意事項

ByteOutputStream は、ByteArrayOutputStream クラスを使用して ByteArray から作成できます。



プロパティ詳細
known-values (アクセサ)
アクセサ public inline SerializeOutputStream.known-values:#FastArray

既知の値のセットです。

説明

これは、default コンストラクタか reopen メソッドに最後に渡された known-values 配列です。
導入: バージョン 6.0


open? (アクセサ)
アクセサ public SerializeOutputStream.open?:bool

このストリームが現在開いているかどうかを示します。Stream-of.close が呼び出されると false を返します。

注意事項

InputStream-of および OutputStream-of の既定の実装で使用します。ストリームが開いていない場合は多くの操作でエラーが発生します。

オーバーライド

サブクラスにはこのメソッドを実装する必要があります。


origin-url (アクセサ)
アクセサ public SerializeOutputStream.origin-url:#Url

このストリームを開いた Url を返します。そのような Url が存在しない場合は null を返します。

{read-open {url "file://c:/foo.txt"}}.origin-url Url file://c:/foo.txt (そのようなファイルが存在すると仮定して) を返します。

一方、{{TextInputStream-from String} "foo"}.origin-urlnull を返します。


protocol (アクセサ)
アクセサ public inline SerializeOutputStream.protocol:SerializeProtocol

このストリームで使用されるシリアル化プロトコルです。

説明

これは、生成中か reopen 中に設定されます。
導入: バージョン 6.0


raw-byte-stream (アクセサ)
アクセサ public SerializeOutputStream.raw-byte-stream:ByteOutputStream

カスタマイズされたシリアル化の対象となるロー バイト ストリームを取得します。




クラス変数と定数の詳細
default-protocol (クラス定数)
public constant SerializeOutputStream.default-protocol:any =SerializeProtocol.version-6-0

既定のシリアル化プロトコルです。

説明

出力ストリーム用の、既定のシリアル化プロトコルを規定します。これは、ストリームを作成したり再度開く場合にオーバーライドされます。
SerializeProtocol を参照してください。
導入: バージョン 6.0




メソッド詳細
clear-shared-object-table (メソッド)
public {SerializeOutputStream.clear-shared-object-table}:void

共有オブジェクトが記録されたテーブルをクリアします。

説明

一時的に蓄えられたプロシージャとクラス インスタンスのテーブルをクリアします。このメソッドを呼び出すと、コードがシリアル化ストリームに挿入され、シリアル化の解除時にテーブルをクリアすることが示されます。
多くのオブジェクトがシリアル化され、それらのほとんどが再びシリアル化されない場合に、スペースを節約するためにこれを使用することができます。
現行の実装の詳細に関しては、SerializeCode.clear-temporarySerializeCode.interned-temporary を参照してください。


close (メソッド)
public {SerializeOutputStream.close}:void

ストリームを閉じます。呼び出されると、ストリームを使用不可能にして Stream-of.open?false を返すことを確かめます。

注意事項

これは OutputStream-of.flush を呼び出してからストリームを閉じます。

オーバーライド

この実装者は、try ブロック内の OutputStream-of.flush を呼び出す必要があります。その場合、try ブロックの finally 部分のストリームを閉じるコードを使用します。


do-not-share-next (メソッド)
public {SerializeOutputStream.do-not-share-next}:void

書き込まれる次のオブジェクトを共有しません。

説明

これによって、次の値が一時的に蓄えられているテーブルで共有されるのを防ぐことができます。
これを使用する 2 つの理由があります。:
  1. シリアル化されるオブジェクトが、異なるコンテンツで複数回シリアル化したい配列のようなコンテナの場合です。このメソッドを使用せずに、基本のコンテンツのみがシリアル化されます。
    例:
    def out = {SerializeOutputStream byte-stream}
    def array = {Array 1,2,3}
    {out.do-not-share-next}
    {out.write-one array}
    
    {array.clear}
    {array.append 4}
    {array.append 5}
    {array.append 6}
    
    {out.do-not-share-next}
    {out.write-one array}
    
  2. たくさんの異なるオブジェクトがシリアル化される必要がある場合です。この場合、オブジェクトを共有するオーバーヘッドがパフォーマンスを悪くします。
    例:
    def out = {SerializeOutputStream byte-stream}
    {for obj in many-unique-objs do
        {out.do-not-share-next}
        {out.write-one obj}
    }
    
protocolversion-4-0 に設定される場合、効果はありません。
導入: バージョン 6.0


flush (メソッド)
public {SerializeOutputStream.flush
non-blocking?:bool = false,
allow-short-write?:bool = false
}:void

self が収集した、バッファされた出力をフラッシュします。

オーバーライド

非抽象サブクラスにより提供される必要があります。実装では次のようなコードを含める必要があリます。
{if not self.open? then
    {throw {new IOException, {format "%s not open", self}}}
}
このメソッドの実装の上部に記述します。

例外のスロー

IOException — ディスクの容量不足などの理由でデータを書き込めない場合。


get-package-locator (メソッド)
public {SerializeOutputStream.get-package-locator
package:Package
}:#String

パッケージの追加位置情報を取得します。

説明

パッケージがシリアル化される時、このメソッドは、パッケージを配置する為の逆シリアル化中に使用されるオプションのロケータを提供するために呼び出されます。そのロケータの値は、パッケージ ロケーションを解決するために SerializeInputStream.import-package によって処理されます。
既定の実装では、常に null を返します。


reopen (メソッド)
public {SerializeOutputStream.reopen
raw-byte-stream:ByteOutputStream,
close-stream-on-close?:bool = true,
known-values:#FastArray = self.known-values,
protocol:SerializeProtocol = self.protocol
}:void

ストリームが閉じられた後に再度開くことができます。

説明

ストリームが閉じられた後に再利用することができます。
引数は、default コンストラクタで使用されるものと同じで、設定された引数で新しいストリームを作成することと同じ意味になります。
protocolknown-values は既存の値を既定値とします。


write-class-version (メソッド)
public {SerializeOutputStream.write-class-version version:int}:void

クラス バージョンを書き出します。

version: 書き込まれるバージョン。

説明

これは、バージョン ナンバーを書き出す object-serialize メソッドで使用されます。そのバージョンナンバーは、object-deserialize コンストラクタでのマッチングによって認識され、クラスにとって古いシリアル化フォーマットをサポートするために使用されます。


write-one (メソッド)
public {SerializeOutputStream.write-one val:any}:void

値をそのストリームにシリアル化します。

説明

指定された値を基本的な raw-byte-stream にシリアル化します。これは、シリアル化された値に続く複数の SerializeCode を書き込むことも含みます。詳細に関しては SerializeCode を参照してください。
このメソッドによって書き込まれた値は、SerializeInputStream.read-one を使用して読み込まれます。
write-one も参照してください。


write-one-compact (メソッド)
public {SerializeOutputStream.write-one-compact
val:any,
compile-time-type:Type
}:void

コンパクトな表現を使用して値を書き出します。

compile-time-type:
val 型のスーパータイプで、一般的に宣言され、関数に渡される変数の型またはフィールドになります。この同じ型は、値を読み込むために SerializeInputStream.read-one-compact に渡されなければなりません。
SerializeOutputStream.protocolversion-4-0 に設定されると、これは write-one と同じ出力を生成します。
導入: バージョン 6.0


write-protocol (メソッド)
public inline {SerializeOutputStream.write-protocol}:void

シリアル化ストリームのヘッダーにプロトコル ナンバーを書き込みます。

説明

これは、まだ書き込まれていない場合に、ストリームを開くと規定される SerializeProtocol の値を書き込みます。
これは、write-onewrite-one-compact によって自動的に書き込まれ、上記のメソッドがまだ呼び出されていない場合に、基本のストリームに書き込むために他のメソッドを使用する時に呼び出される必要があります。
導入: バージョン 6.0