TAP::Parser::Multiplexer - 多重 TAP::Parser
版本 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::Parser 蒐集輸入。內部會呼叫 select 處理這些 parser 的輸入檔案句柄,以等待一個或多個 parser 有可用的輸入。
請參閱 TAP::Harness 以取得使用範例。
new
my $mux = TAP::Parser::Multiplexer->new;
傳回新的 TAP::Parser::Multiplexer
物件。
add
$mux->add( $parser, $stash );
將 TAP::Parser 加入多重處理器。$stash
是可選的不透明參考,將會與 parser 和下一個結果一起從 next
傳回。
parsers
my $count = $mux->parsers;
傳回 parser 數量。當 parser 的輸入用盡時,會從多重處理器中移除該 parser。
next
傳回下一個可用的 parser 的結果。傳回包含結果來源的 parser、對應於該 parser 的 stash 和結果的清單。
my ( $parser, $stash, $result ) = $mux->next;
如果 $result
未定義,表示對應的 parser 已達輸入結尾(且會自動從多重處理器中移除)。
當所有解析器都已用盡時,將會傳回一個空清單。
if ( my ( $parser, $stash, $result ) = $mux->next ) {
if ( ! defined $result ) {
# End of this parser
}
else {
# Process result
}
}
else {
# All parsers finished
}