home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _e6879c70ffcbb8cc088f43dfe2ba3796 < prev    next >
Text File  |  2000-03-23  |  6KB  |  144 lines

  1.  
  2. <HTML>
  3. <HEAD>
  4. <TITLE>POE::Filter::Reference - POE Freeze/Thaw Protocol Abstraction</TITLE>
  5. <LINK REL="stylesheet" HREF="../../../../Active.css" TYPE="text/css">
  6. <LINK REV="made" HREF="mailto:">
  7. </HEAD>
  8.  
  9. <BODY>
  10. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  11. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  12. <STRONG><P CLASS=block> POE::Filter::Reference - POE Freeze/Thaw Protocol Abstraction</P></STRONG>
  13. </TD></TR>
  14. </TABLE>
  15.  
  16. <A NAME="__index__"></A>
  17. <!-- INDEX BEGIN -->
  18.  
  19. <UL>
  20.  
  21.     <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
  22.  
  23.     <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
  24.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  25.     <LI><A HREF="#public filter methods">PUBLIC FILTER METHODS</A></LI>
  26.     <LI><A HREF="#see also">SEE ALSO</A></LI>
  27.     <LI><A HREF="#bugs">BUGS</A></LI>
  28.     <LI><A HREF="#authors & copyrights">AUTHORS & COPYRIGHTS</A></LI>
  29. </UL>
  30. <!-- INDEX END -->
  31.  
  32. <HR>
  33. <P>
  34. <H1><A NAME="name">NAME</A></H1>
  35. <P>POE::Filter::Reference - POE Freeze/Thaw Protocol Abstraction</P>
  36. <P>
  37. <HR>
  38. <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
  39. <UL>
  40. <LI>Linux</LI>
  41. <LI>Solaris</LI>
  42. <LI>Windows</LI>
  43. </UL>
  44. <HR>
  45. <H1><A NAME="synopsis">SYNOPSIS</A></H1>
  46. <PRE>
  47.   $filter = new POE::Filter::Reference();
  48.   $arrayref_of_perl_references =
  49.     $filter->get($arrayref_of_raw_chunks_from_driver);
  50.   $arrayref_of_serialized_perl_references =
  51.      $filter->put($arrayref_of_perl_references);</PRE>
  52. <P>
  53. <HR>
  54. <H1><A NAME="description">DESCRIPTION</A></H1>
  55. <P>The ``put'' half of this filter freezes referenced Perl structures into
  56. serialized versions for sending.  The ``get'' half of this filter thaws
  57. serialized Perl structures back into references.  This provides a
  58. handy way to ship data between processes and systems.</P>
  59. <P>Serializers should recognize that POE::Filter::Reference is used to
  60. ship data between systems with different byte orders.</P>
  61. <P>
  62. <HR>
  63. <H1><A NAME="public filter methods">PUBLIC FILTER METHODS</A></H1>
  64. <UL>
  65. <LI>
  66. POE::Filter::Reference::new( ... )
  67. <P>The <CODE>new()</CODE> method creates and initializes the reference filter.  It
  68. accepts optional parameters to specify a serializer and the use of
  69. compression.  The serializer may be a package or an object; the
  70. compression flag is a Perl ``boolean'' value.</P>
  71. <P>A package serializer must have a <CODE>thaw()</CODE> function, and it must have
  72. either a <CODE>freeze()</CODE> or <CODE>nfreeze()</CODE> function.  If it has both <CODE>freeze()</CODE> and
  73. nfreeze(), then Filter::Reference will use <CODE>nfreeze()</CODE> for portability.
  74. These functions match Storable and FreezeThaw's call signatures.</P>
  75. <P>An object serializer must have a <CODE>thaw()</CODE> method.  It also must have
  76. either a <CODE>freeze()</CODE> or <CODE>nfreeze()</CODE> method.  If it has both <CODE>freeze()</CODE> and
  77. nfreeze(), then Filter::Reference will use <CODE>nfreeze()</CODE> for portability.
  78. The <CODE>thaw()</CODE> method accepts $self and a scalar; it should return a
  79. reference to the reconstituted data.  The <CODE>freeze()</CODE> and <CODE>nfreeze()</CODE>
  80. methods receive $self and a reference; they should return a scalar
  81. with the reference's serialized representation.</P>
  82. <P>If the serializer parameter is undef, a default one will be used.
  83. This lets programs specify compression without having to worry about
  84. naming a serializer.</P>
  85. <P>For example:</P>
  86. <PRE>
  87.   # Use the default filter (either Storable or FreezeThaw).
  88.   my $filter = new POE::Filter::Reference();</PRE>
  89. <PRE>
  90.   # Use Storable explicitly, specified by package name.
  91.   my $filter = new POE::Filter::Reference('Storable');</PRE>
  92. <PRE>
  93.   # Use an object.
  94.   my $filter = new POE::Filter::Reference($object);</PRE>
  95. <PRE>
  96.   # Use an object, with compression.
  97.   my $filter = new POE::Filter::Reference($object, 1);</PRE>
  98. <PRE>
  99.   # Use the default serializer, with compression.
  100.   my $filter = new POE::Filter::Reference(undef, 1);</PRE>
  101. <P>The <CODE>new()</CODE> method will try to require any packages it needs.</P>
  102. <P>The default behavior is to try Storable first, FreezeThaw second, and
  103. fail if neither is present.  This is rapidly becoming moot because of
  104. the PM_PREREQ entry in Makefile.PL, which makes CPAN and ``make'' carp
  105. about requirements even when they aren't required.</P>
  106. <P></P>
  107. <LI>
  108. POE::Filter::Reference::get($frozen_data)
  109. <P>The <CODE>get()</CODE> method thaws streamed, frozen data into references.
  110. References will be blessed, if necessary.  If the reference points to
  111. an object, be sure the receiving end has use'd it before calling its
  112. methods.</P>
  113. <P></P>
  114. <LI>
  115. POE::Filter::Reference::put($reference)
  116. <P>The <CODE>put()</CODE> method freezes references and returns their serialized,
  117. streamable representations.</P>
  118. <P></P></UL>
  119. <P>
  120. <HR>
  121. <H1><A NAME="see also">SEE ALSO</A></H1>
  122. <P>POE::Filter; POE::Filter::HTTPD; POE::Filter::Line;
  123. POE::Filter::Stream</P>
  124. <P>
  125. <HR>
  126. <H1><A NAME="bugs">BUGS</A></H1>
  127. <P>Oh, probably some.</P>
  128. <P>
  129. <HR>
  130. <H1><A NAME="authors & copyrights">AUTHORS & COPYRIGHTS</A></H1>
  131. <P>The Reference filter was contributed by Arturn Bergman, with changes
  132. by Philip Gwyn.</P>
  133. <P>Please see the POE manpage for more information about authors and
  134. contributors.</P>
  135. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  136. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  137. <STRONG><P CLASS=block> POE::Filter::Reference - POE Freeze/Thaw Protocol Abstraction</P></STRONG>
  138. </TD></TR>
  139. </TABLE>
  140.  
  141. </BODY>
  142.  
  143. </HTML>
  144.