# Copyrights 2011 by Mark Overmeer. # For other contributors see ChangeLog. # See the manual pages for details on the licensing terms. # Pod stripped from pm file by OODoc 1.07. use warnings; use strict; package IOMux::Open; use vars '$VERSION'; $VERSION = '0.12'; use Log::Report 'iomux'; my %modes = ( '-|' => 'IOMux::Pipe::Read' , '|-' => 'IOMux::Pipe::Write' , '|-|' => 'IOMux::IPC' , '|=|' => 'IOMux::IPC' , '>' => 'IOMux::File::Write' , '>>' => 'IOMux::File::Write' , '<' => 'IOMux::File::Read' , tcp => 'IOMux::Net::TCP' ); sub import(@) { my $class = shift; foreach my $mode (@_) { my $impl = $modes{$mode} or error __x"unknown mode {mode} in use {pkg}" , mode => $mode, pkg => $class; eval "require $impl"; panic $@ if $@; } } sub new($@) { my ($class, $mode) = (shift, shift); my $real = $modes{$mode} or error __x"unknown mode '{mode}' to open() on mux", mode => $mode; $real->can('open') or error __x"package {pkg} for mode '{mode}' not required by {me}" , pkg => $real, mode => $mode, me => $class; $real->open($mode, @_); } #-------------- 1;