SOAP::Packager

Hippo2000 (2000/7/19)


目次


名前

SOAP::Packager - SOAP 内部ヘルパクラス


概要

    use SOAP::Packager;
    my $packager = SOAP::Packager->new('s:', 1, sub { print shift } );
    # リファレンスとして使われるオブジェクト
    my $object = SOAP::Object->new();
    # 与えられたパッケージについて、register()は常に与えられたオブジェクトのための同じ識別子を返します
    my $id = $packager->register($env, $object);
    unless($id == $packager->register($env, $object)) { die "internal error" }
    # これはオブジェクト(objectA)をシリアライズします
    $packager->seal($envelope);
    # パッケージがまだ有効であることに注意
    unless($id == $packager->register($env, $object)) { die "internal error" }
    my $objectB = SOAP::Object->new();
    my $idB = $packager->register($env, $objectB);
    unless($idB == $packager->register($env, $objectB)) { die "internal error" }
    # これはobjectBをシリアライズします - objectAは以前に既にシリアライズされています
    $packager->seal($env);
    # これはハッシュテーブルの循環エミュレーションを浪費する以外は何もしません。
    $packager->seal($env=);
    # packagerの破壊時点でハッシュテーブルはシャットダウンされ、オブジェクト・リファレンスを解放します
    $packager = undef;

説明

これはSOAP/Perl実装により使われる内部クラスです。これは、複数のリファレンス・データ(そして多分循環も)が入っているかもしれないオブジェクト・グラフをシリアル化するために使われるオブジェクト・リファレンスのテーブルとXML識別子を管理します。SOAP/Perlを拡張するのであれば、このクラスを再利用するのであれば、上記の概要はおそらくあなたが必要とするすべてになるでしょう。$envリファレンスのために渡すものは何なんでも、呼ばれた時々にユニークな文字列を返す_alloc_idと呼ばれる関数を実装しなければなりません。これは通常、SOAP::Envelopeにより実装されます。そのためそこでサンプルの実装を見ることができます。


作者

Keith Brown


参考資料

SOAP::Envelope SOAP::OutputStream


ホーム Perlの小技  SOAP

ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。