SOAP::Packager - SOAP internal helper class


NAME

SOAP::Packager - SOAP internal helper class


SUPPORTED PLATFORMS


SYNOPSIS

    use SOAP::Packager;
    my $packager = SOAP::Packager->new('s:', 1, sub { print shift } );
    # some object used as a reference
    my $object = SOAP::Object->new();
    # on a given packager, register() always returns the same id for a given object
    my $id = $packager->register($env, $object);
    unless($id == $packager->register($env, $object)) { die "internal error" }
    # this serializes objectA
    $packager->seal($envelope);
    # note that the package is still valid
    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" }
    # this just serializes objectB - objectA was already serialized before
    $packager->seal($env);
    # this does nothing except waste some cycles enumerating a hash table
    $packager->seal($env=);
    # hash tables shut down at destruction of packager, releasing object references
    $packager = undef;


DESCRIPTION

This is an internal class used by the SOAP/Perl implementation. It is designed to manage a table of object references and XML ids used for serializing object graphs that may contain multiref data (and perhaps even cycles). If you are extending SOAP/Perl, the above synopsis will probably be all you need if you want to reuse this class. Whatever you pass for the $env reference should implement a function called _alloc_id that returns a unique string each time it is called. This is normally implemented by SOAP::Envelope, so you can see a sample implementation there.


AUTHOR

Keith Brown


SEE ALSO

SOAP::Envelope SOAP::OutputStream

 SOAP::Packager - SOAP internal helper class