我很难找到一个如何使用POE Wheel或其他异步进程创建和写入文件的示例。我希望能够以非阻塞的方式写入大文件。我正在寻找示例,但不知道从哪里开始。
发布于 2013-05-07 02:17:08
所以,我真的没有找到文件io的简单示例。但是,我设法从我找到的示例中找出了这个工作代码。我想这就是我想要的。我在这里添加它,所以如果任何人有任何意见,它可能会帮助我或其他人改进它。或者,如果其他人正在寻找一个示例,他们可以看到这个示例。
$self->{FILEIO_SESSION} = POE::Session->create(
inline_states => {
_start => sub {
my ( $kernel, $heap ) = @_[ KERNEL, HEAP ];
$kernel->alias_set($fileio_uuid);
$heap->{wheels}->{$fileio_uuid} = POE::Wheel::ReadWrite->new(
InputHandle => $infile_fh ,
OutputHandle => $outfile_fh,
Driver => POE::Driver::SysRW->new(),
Filter => POE::Filter::Line->new(),
InputEvent => 'readLineEvent',
ErrorEvent => 'errorEvent'
);
},
_stop => sub {
my ( $kernel, $heap ) = @_[ KERNEL, HEAP ];
print "Removing fileio session\n";
$kernel->alias_remove($fileio_uuid);
},
readLineEvent => sub {
my ( $kernel, $heap, $input ) = @_[ KERNEL, HEAP, ARG0 ];
print "read a line...writing to file...\n";
$heap->{wheels}->{$fileio_uuid}->put($input);
},
errorEvent => sub {
my ( $kernel, $heap ) = @_[ KERNEL, HEAP ];
print "Everything either went to hell or we got to the end. Shutting down...\n";
delete $heap->{wheels}->{$fileio_uuid};
$kernel->yield("_stop");
}
}
);https://stackoverflow.com/questions/16368310
复制相似问题