<!--
   $FML: IO::Adapter.sgml,v 1.1 2001/09/30 23:08:59 fukachan Exp $
-->

<chapter id="module.io.adapter">
	<title>
	IO::Adapter
	</title>

<sect1>
	<title>
	IO へのアダプター層 (IO::Adapter)
	</title>

<para>
fml 5.0 でのメンバーリストの読み書きは 
IO::Adapter という抽象クラスを通じて、
アドレスの登録/削除を行なうようになっています。
</para>

<para>
例えば次のように使っています。
<screen>
use IO::Adapter;
$obj = new IO::Adapter ($map, $map_params);
$obj->open || croak("cannot open $map");
while ($x = $obj->getline) { ... }
$obj->close;
</screen>
ここで $map は次のようなものが使えます。
<screen>
file:/var/spool/ml/elena/actives
unix.group:root
nis.group:root
mysql:id
postgresql:id  (未実装)
ldap:id        (未実装)
</screen>
</para>

<para>
file: は通常のファイルです。
unix.group:root は /etc/group の root のエントリにあるユーザのリストを、
nis.group:root は NIS の root のエントリにあるユーザのリストです。
</para>

<para>
mysql:id は MySQL へのアクセスです。
mysql:id で指定されたパラメータを用います。
このパラメータは new() を実行する際に別途与える必要があります。
<screen>
my $map        = 'mysql:toymodel';
my $map_params = {
    $map => {
     sql_server    => 'localhost',
     user          => 'fukachan',
     user_password => 'uja',
     database      => 'fml',
     table         => 'ml',
     params        => {
         ml_name   => 'elena',
         file      => 'members',
     },
    },
};

my $obj = new IO::Adapter ($map, $map_params);
$obj->open();
$obj->add( 'rudo@nuinui.net' );
$obj->close();
</screen>
</para>

</sect1>


</chapter>
