内容

名称

TAP::Parser::Multiplexer - 多路复用多个 TAP::Parsers

版本

版本 3.44

概要

use TAP::Parser::Multiplexer;

my $mux = TAP::Parser::Multiplexer->new;
$mux->add( $parser1, $stash1 );
$mux->add( $parser2, $stash2 );
while ( my ( $parser, $stash, $result ) = $mux->next ) {
    # do stuff
}

描述

TAP::Parser::Multiplexer 从多个 TAP::Parsers 收集输入。在内部,它调用 select 函数,对这些解析器的输入文件句柄进行等待,直到其中一个或多个解析器有输入可用。

参见 TAP::Harness 以了解其用法的示例。

方法

类方法

new

my $mux = TAP::Parser::Multiplexer->new;

返回一个新的 TAP::Parser::Multiplexer 对象。

实例方法

add

$mux->add( $parser, $stash );

将一个 TAP::Parser 添加到多路复用器中。$stash 是一个可选的不透明引用,它将与解析器和下一个结果一起从 next 返回。

parsers

my $count   = $mux->parsers;

返回解析器的数量。当解析器的输入耗尽时,解析器将从多路复用器中移除。

next

从下一个可用的解析器返回结果。返回一个列表,其中包含结果来自的解析器、与该解析器对应的存储区以及结果。

my ( $parser, $stash, $result ) = $mux->next;

如果$result未定义,则相应的解析器已到达其输入的末尾(并将自动从多路复用器中移除)。

当所有解析器都耗尽时,将返回一个空列表。

if ( my ( $parser, $stash, $result ) = $mux->next ) {
    if ( ! defined $result ) {
        # End of this parser
    }
    else {
        # Process result
    }
}
else {
    # All parsers finished
}

另请参阅

TAP::Parser

TAP::Harness