| HH-Unispool-Config documentation | Contained in the HH-Unispool-Config distribution. |
HH::Unispool::Config::File::Token::Numbered::Device - abstract class for device D tokens
Application programmers don't need to use this class and API programmers read code.
abstract class for device D tokens
HH::Unispool::Config::File::Token::Numbered::Device is an abstract class for device D tokens.
Creates a new HH::Unispool::Config::File::Token::Numbered::Device object. OPT_HASH_REF is a hash reference used to pass initialization options. OPT_HASH_REF is mandatory. On error an exception Error::Simple is thrown.
Options for OPT_HASH_REF may include:
block_delayPassed to set_block_delay().
buffer_sizePassed to set_buffer_size().
connect_retryPassed to set_connect_retry().
device_namePassed to set_device_name(). Mandatory option.
device_passwordPassed to set_device_password().
execution_priorityPassed to set_execution_priority().
initially_spooledPassed to set_initially_spooled().
networkwidePassed to set_networkwide().
page_lengthPassed to set_page_length().
page_widthPassed to set_page_width().
remote_device_namePassed to set_remote_device_name().
remote_system_namePassed to set_remote_system_name().
save_printfilePassed to set_save_printfile().
unispool_controlPassed to set_unispool_control().
unispool_headerPassed to set_unispool_header().
Options for OPT_HASH_REF inherited through package HH::Unispool::Config::File::Token may include:
input_line_numberPassed to set_input_line_number().
Options for OPT_HASH_REF inherited through package HH::Unispool::Config::File::Token::Numbered may include:
numberPassed to set_number().
Creates a new object from the specified Unispool config file line string.
Returns the time in seconds UNISPOOL should pause between sending two blocks.
Returns the number of bytes sent to the printer in one write operation.
Returns the number of seconds UNISPOOL should wait if the connection can not be established immediately.
Returns the unique name for the device.
Returns the password required to access the device.
Returns the execution priority of the driver process on MPE hosts.
This method is inherited from package HH::Unispool::Config::File::Token. Returns the line number from from which the token is read.
This method is inherited from package HH::Unispool::Config::File::Token::Numbered. Returns the number of the entry.
Returns the page length (lines) for determining the size of UNISPOOL banners.
Returns the page width (bytes) for determining the size of UNISPOOL banners.
Returns the device on the remote system that will receive the output.
Returns the name of the system to which the output for this device must be routed.
Returns whether an automatic STARTSPOOL must be performed when UNISPOOL is started or not.
Returns whether the device must be made available from each node in the configuration cluster or not.
Returns whether printfiles printed on this device should be saved or not.
Returns whether the UNISPOOL control is on (is not available on development system used) or not.
Returns whether standard UNISPOOL banners pages are printed initially or not.
This method is overloaded from package HH::Unispool::Config::File::Token::Numbered. Reads the Unispool config file token from a line string. LINE is a plain line string. On error an exception Error::Simple is thrown.
Set the time in seconds UNISPOOL should pause between sending two blocks. VALUE is the value. On error an exception Error::Simple is thrown.
Set the number of bytes sent to the printer in one write operation. VALUE is the value. On error an exception Error::Simple is thrown.
Set the number of seconds UNISPOOL should wait if the connection can not be established immediately. VALUE is the value. On error an exception Error::Simple is thrown.
Set the unique name for the device. VALUE is the value. On error an exception Error::Simple is thrown.
Set the password required to access the device. VALUE is the value. On error an exception Error::Simple is thrown.
Set the execution priority of the driver process on MPE hosts. VALUE is the value. On error an exception Error::Simple is thrown.
State that an automatic STARTSPOOL must be performed when UNISPOOL is started. VALUE is the value. On error an exception Error::Simple is thrown.
This method is inherited from package HH::Unispool::Config::File::Token. Set the line number from from which the token is read. VALUE is the value. On error an exception Error::Simple is thrown.
State that the device must be made available from each node in the configuration cluster. VALUE is the value. On error an exception Error::Simple is thrown.
This method is inherited from package HH::Unispool::Config::File::Token::Numbered. Set the number of the entry. VALUE is the value. On error an exception Error::Simple is thrown.
Set the page length (lines) for determining the size of UNISPOOL banners. VALUE is the value. On error an exception Error::Simple is thrown.
Set the page width (bytes) for determining the size of UNISPOOL banners. VALUE is the value. On error an exception Error::Simple is thrown.
Set the device on the remote system that will receive the output. VALUE is the value. On error an exception Error::Simple is thrown.
Set the name of the system to which the output for this device must be routed. VALUE is the value. On error an exception Error::Simple is thrown.
State that printfiles printed on this device should be saved. VALUE is the value. On error an exception Error::Simple is thrown.
State that the UNISPOOL control is on (is not available on development system used). VALUE is the value. On error an exception Error::Simple is thrown.
State that standard UNISPOOL banners pages are printed initially. VALUE is the value. On error an exception Error::Simple is thrown.
This method is overloaded from package HH::Unispool::Config::File::Token::Numbered. Returns a Unispool config file token line string.
HH::Unispool::Config, HH::Unispool::Config::DateFormat, HH::Unispool::Config::Entry, HH::Unispool::Config::Entry::Device, HH::Unispool::Config::Entry::Device::0, HH::Unispool::Config::Entry::Device::1, HH::Unispool::Config::Entry::Device::2, HH::Unispool::Config::Entry::Device::3, HH::Unispool::Config::Entry::Device::4, HH::Unispool::Config::Entry::Device::5, HH::Unispool::Config::Entry::Device::6, HH::Unispool::Config::Entry::Device::7, HH::Unispool::Config::Entry::Filter, HH::Unispool::Config::Entry::Numbered, HH::Unispool::Config::Entry::RemoteSystem, HH::Unispool::Config::Entry::RemoteSystem::3, HH::Unispool::Config::Entry::RemoteSystem::6, HH::Unispool::Config::Entry::RemoteSystem::7, HH::Unispool::Config::Entry::RemoteSystem::8, HH::Unispool::Config::Entry::System, HH::Unispool::Config::ExecPri, HH::Unispool::Config::File::Token, HH::Unispool::Config::File::Token::Comment, HH::Unispool::Config::File::Token::Comment::Cs, HH::Unispool::Config::File::Token::Comment::Date, HH::Unispool::Config::File::Token::Comment::Device, HH::Unispool::Config::File::Token::Comment::Filter, HH::Unispool::Config::File::Token::Comment::Group, HH::Unispool::Config::File::Token::Comment::Head, HH::Unispool::Config::File::Token::Comment::Misc, HH::Unispool::Config::File::Token::Comment::NetDesc, HH::Unispool::Config::File::Token::Comment::RSys, HH::Unispool::Config::File::Token::Comment::Scope, HH::Unispool::Config::File::Token::Comment::Tail, HH::Unispool::Config::File::Token::Factory, HH::Unispool::Config::File::Token::Numbered, HH::Unispool::Config::File::Token::Numbered::Device::0, HH::Unispool::Config::File::Token::Numbered::Device::1, HH::Unispool::Config::File::Token::Numbered::Device::2, HH::Unispool::Config::File::Token::Numbered::Device::3, HH::Unispool::Config::File::Token::Numbered::Device::4, HH::Unispool::Config::File::Token::Numbered::Device::5, HH::Unispool::Config::File::Token::Numbered::Device::6, HH::Unispool::Config::File::Token::Numbered::Device::7, HH::Unispool::Config::File::Token::Numbered::Device::Group, HH::Unispool::Config::File::Token::Numbered::Device::Info, HH::Unispool::Config::File::Token::Numbered::Device::P, HH::Unispool::Config::File::Token::Numbered::Network, HH::Unispool::Config::File::Token::Numbered::System, HH::Unispool::Config::File::Token::Numbered::System::3, HH::Unispool::Config::File::Token::Numbered::System::6, HH::Unispool::Config::File::Token::Numbered::System::7, HH::Unispool::Config::File::Token::Numbered::System::8, HH::Unispool::Config::File::Token::Numbered::System::Info, HH::Unispool::Config::File::Token::Numbered::X, HH::Unispool::Config::File::Token::Unnumbered, HH::Unispool::Config::File::Token::Unnumbered::Bcs, HH::Unispool::Config::File::Token::Unnumbered::CSN, HH::Unispool::Config::File::Token::Unnumbered::Cs, HH::Unispool::Config::File::Token::Unnumbered::CsBcs, HH::Unispool::Config::File::Token::Unnumbered::Filter, HH::Unispool::Config::File::Token::Unnumbered::Host, HH::Unispool::Config::File::Token::Unnumbered::Misc, HH::Unispool::Config::File::Tokenizer, HH::Unispool::Config::FilterType, HH::Unispool::Config::OS, HH::Unispool::Config::Scope
None known (yet.)
First development: February 2003 Last update: September 2003
Vincenzo Zocca
Copyright 2003 by Vincenzo Zocca
This file is part of the HH::Unispool::Config module hierarchy for Perl by
Vincenzo Zocca.
The HH::Unispool::Config module hierarchy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
The HH::Unispool::Config module hierarchy is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with the HH::Unispool::Config module hierarchy; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
| HH-Unispool-Config documentation | Contained in the HH-Unispool-Config distribution. |
package HH::Unispool::Config::File::Token::Numbered::Device; use 5.006; use base qw( HH::Unispool::Config::File::Token::Numbered ); use strict; use warnings; use AutoLoader qw(AUTOLOAD); use Error qw(:try); # Used by _value_is_allowed our %ALLOW_ISA = ( 'execution_priority' => [ 'HH::Unispool::Config::ExecPri' ], ); # Used by _value_is_allowed our %ALLOW_REF = ( ); # Used by _value_is_allowed our %ALLOW_RX = ( 'block_delay' => [ '^\d*$' ], 'buffer_size' => [ '^\d*$' ], 'connect_retry' => [ '^\d*$' ], 'device_name' => [ '^.+$' ], 'device_password' => [ '^.*$' ], 'page_length' => [ '^\d*$' ], 'page_width' => [ '^\d*$' ], 'remote_device_name' => [ '^.*$' ], 'remote_system_name' => [ '^.*$' ], ); # Used by _value_is_allowed our %ALLOW_VALUE = ( ); # Package version our ($VERSION) = '$Revision: 0.3 $' =~ /\$Revision:\s+([^\s]+)/; 1; __END__
sub _initialize { my $self = shift; my $opt = defined($_[0]) ? shift : {}; # Check $opt ref($opt) eq 'HASH' || throw Error::Simple("ERROR: HH::Unispool::Config::File::Token::Numbered::Device::_initialize, first argument must be 'HASH' reference."); # block_delay, SINGLE exists( $opt->{block_delay} ) && $self->set_block_delay( $opt->{block_delay} ); # buffer_size, SINGLE exists( $opt->{buffer_size} ) && $self->set_buffer_size( $opt->{buffer_size} ); # connect_retry, SINGLE exists( $opt->{connect_retry} ) && $self->set_connect_retry( $opt->{connect_retry} ); # device_name, SINGLE, mandatory exists( $opt->{device_name} ) || throw Error::Simple("ERROR: HH::Unispool::Config::File::Token::Numbered::Device::_initialize, option 'device_name' is mandatory."); $self->set_device_name( $opt->{device_name} ); # device_password, SINGLE exists( $opt->{device_password} ) && $self->set_device_password( $opt->{device_password} ); # execution_priority, SINGLE exists( $opt->{execution_priority} ) && $self->set_execution_priority( $opt->{execution_priority} ); # initially_spooled, BOOLEAN exists( $opt->{initially_spooled} ) && $self->set_initially_spooled( $opt->{initially_spooled} ); # networkwide, BOOLEAN exists( $opt->{networkwide} ) && $self->set_networkwide( $opt->{networkwide} ); # page_length, SINGLE exists( $opt->{page_length} ) && $self->set_page_length( $opt->{page_length} ); # page_width, SINGLE exists( $opt->{page_width} ) && $self->set_page_width( $opt->{page_width} ); # remote_device_name, SINGLE exists( $opt->{remote_device_name} ) && $self->set_remote_device_name( $opt->{remote_device_name} ); # remote_system_name, SINGLE exists( $opt->{remote_system_name} ) && $self->set_remote_system_name( $opt->{remote_system_name} ); # save_printfile, BOOLEAN exists( $opt->{save_printfile} ) && $self->set_save_printfile( $opt->{save_printfile} ); # unispool_control, BOOLEAN exists( $opt->{unispool_control} ) && $self->set_unispool_control( $opt->{unispool_control} ); # unispool_header, BOOLEAN exists( $opt->{unispool_header} ) && $self->set_unispool_header( $opt->{unispool_header} ); # Call the superclass' _initialize $self->SUPER::_initialize($opt); # Return $self return($self); } sub _value_is_allowed { my $name = shift; # Value is allowed if no ALLOW clauses exist for the named attribute if ( ! exists( $ALLOW_ISA{$name} ) && ! exists( $ALLOW_REF{$name} ) && ! exists( $ALLOW_RX{$name} ) && ! exists( $ALLOW_VALUE{$name} ) ) { return(1); } # At this point, all values in @_ must to be allowed CHECK_VALUES: foreach my $val (@_) { # Check ALLOW_ISA if ( ref($val) && exists( $ALLOW_ISA{$name} ) ) { foreach my $class ( @{ $ALLOW_ISA{$name} } ) { &UNIVERSAL::isa( $val, $class ) && next CHECK_VALUES; } } # Check ALLOW_REF if ( ref($val) && exists( $ALLOW_REF{$name} ) ) { exists( $ALLOW_REF{$name}{ ref($val) } ) && next CHECK_VALUES; } # Check ALLOW_RX if ( ! ref($val) && exists( $ALLOW_RX{$name} ) ) { foreach my $rx ( @{ $ALLOW_RX{$name} } ) { $val =~ /$rx/ && next CHECK_VALUES; } } # Check ALLOW_VALUE if ( ! ref($val) && exists( $ALLOW_VALUE{$name} ) ) { exists( $ALLOW_VALUE{$name}{$val} ) && next CHECK_VALUES; } # We caught a not allowed value return(0); } # OK, all values are allowed return(1); } sub get_block_delay { my $self = shift; return( $self->{HH_Unispool_Config_File_Token_Numbered_Device}{block_delay} ); } sub get_buffer_size { my $self = shift; return( $self->{HH_Unispool_Config_File_Token_Numbered_Device}{buffer_size} ); } sub get_connect_retry { my $self = shift; return( $self->{HH_Unispool_Config_File_Token_Numbered_Device}{connect_retry} ); } sub get_device_name { my $self = shift; return( $self->{HH_Unispool_Config_File_Token_Numbered_Device}{device_name} ); } sub get_device_password { my $self = shift; return( $self->{HH_Unispool_Config_File_Token_Numbered_Device}{device_password} ); } sub get_execution_priority { my $self = shift; return( $self->{HH_Unispool_Config_File_Token_Numbered_Device}{execution_priority} ); } sub get_page_length { my $self = shift; return( $self->{HH_Unispool_Config_File_Token_Numbered_Device}{page_length} ); } sub get_page_width { my $self = shift; return( $self->{HH_Unispool_Config_File_Token_Numbered_Device}{page_width} ); } sub get_remote_device_name { my $self = shift; return( $self->{HH_Unispool_Config_File_Token_Numbered_Device}{remote_device_name} ); } sub get_remote_system_name { my $self = shift; return( $self->{HH_Unispool_Config_File_Token_Numbered_Device}{remote_system_name} ); } sub is_initially_spooled { my $self = shift; if ( $self->{HH_Unispool_Config_File_Token_Numbered_Device}{initially_spooled} ) { return(1); } else { return(0); } } sub is_networkwide { my $self = shift; if ( $self->{HH_Unispool_Config_File_Token_Numbered_Device}{networkwide} ) { return(1); } else { return(0); } } sub is_save_printfile { my $self = shift; if ( $self->{HH_Unispool_Config_File_Token_Numbered_Device}{save_printfile} ) { return(1); } else { return(0); } } sub is_unispool_control { my $self = shift; if ( $self->{HH_Unispool_Config_File_Token_Numbered_Device}{unispool_control} ) { return(1); } else { return(0); } } sub is_unispool_header { my $self = shift; if ( $self->{HH_Unispool_Config_File_Token_Numbered_Device}{unispool_header} ) { return(1); } else { return(0); } } sub read_string { my $self = shift; $self->SUPER::read_string(@_); } sub set_block_delay { my $self = shift; my $val = shift; # Check if isa/ref/rx/value is allowed &_value_is_allowed( 'block_delay', $val ) || throw Error::Simple("ERROR: HH::Unispool::Config::File::Token::Numbered::Device::set_block_delay, the specified value '$val' is not allowed."); # Assignment $self->{HH_Unispool_Config_File_Token_Numbered_Device}{block_delay} = $val; } sub set_buffer_size { my $self = shift; my $val = shift; # Check if isa/ref/rx/value is allowed &_value_is_allowed( 'buffer_size', $val ) || throw Error::Simple("ERROR: HH::Unispool::Config::File::Token::Numbered::Device::set_buffer_size, the specified value '$val' is not allowed."); # Assignment $self->{HH_Unispool_Config_File_Token_Numbered_Device}{buffer_size} = $val; } sub set_connect_retry { my $self = shift; my $val = shift; # Check if isa/ref/rx/value is allowed &_value_is_allowed( 'connect_retry', $val ) || throw Error::Simple("ERROR: HH::Unispool::Config::File::Token::Numbered::Device::set_connect_retry, the specified value '$val' is not allowed."); # Assignment $self->{HH_Unispool_Config_File_Token_Numbered_Device}{connect_retry} = $val; } sub set_device_name { my $self = shift; my $val = shift; # Check if isa/ref/rx/value is allowed &_value_is_allowed( 'device_name', $val ) || throw Error::Simple("ERROR: HH::Unispool::Config::File::Token::Numbered::Device::set_device_name, the specified value '$val' is not allowed."); # Assignment $self->{HH_Unispool_Config_File_Token_Numbered_Device}{device_name} = $val; } sub set_device_password { my $self = shift; my $val = shift; # Check if isa/ref/rx/value is allowed &_value_is_allowed( 'device_password', $val ) || throw Error::Simple("ERROR: HH::Unispool::Config::File::Token::Numbered::Device::set_device_password, the specified value '$val' is not allowed."); # Assignment $self->{HH_Unispool_Config_File_Token_Numbered_Device}{device_password} = $val; } sub set_execution_priority { my $self = shift; my $val = shift; # Check if isa/ref/rx/value is allowed &_value_is_allowed( 'execution_priority', $val ) || throw Error::Simple("ERROR: HH::Unispool::Config::File::Token::Numbered::Device::set_execution_priority, the specified value '$val' is not allowed."); # Assignment $self->{HH_Unispool_Config_File_Token_Numbered_Device}{execution_priority} = $val; } sub set_initially_spooled { my $self = shift; if (shift) { $self->{HH_Unispool_Config_File_Token_Numbered_Device}{initially_spooled} = 1; } else { $self->{HH_Unispool_Config_File_Token_Numbered_Device}{initially_spooled} = 0; } } sub set_networkwide { my $self = shift; if (shift) { $self->{HH_Unispool_Config_File_Token_Numbered_Device}{networkwide} = 1; } else { $self->{HH_Unispool_Config_File_Token_Numbered_Device}{networkwide} = 0; } } sub set_page_length { my $self = shift; my $val = shift; # Check if isa/ref/rx/value is allowed &_value_is_allowed( 'page_length', $val ) || throw Error::Simple("ERROR: HH::Unispool::Config::File::Token::Numbered::Device::set_page_length, the specified value '$val' is not allowed."); # Assignment $self->{HH_Unispool_Config_File_Token_Numbered_Device}{page_length} = $val; } sub set_page_width { my $self = shift; my $val = shift; # Check if isa/ref/rx/value is allowed &_value_is_allowed( 'page_width', $val ) || throw Error::Simple("ERROR: HH::Unispool::Config::File::Token::Numbered::Device::set_page_width, the specified value '$val' is not allowed."); # Assignment $self->{HH_Unispool_Config_File_Token_Numbered_Device}{page_width} = $val; } sub set_remote_device_name { my $self = shift; my $val = shift; # Check if isa/ref/rx/value is allowed &_value_is_allowed( 'remote_device_name', $val ) || throw Error::Simple("ERROR: HH::Unispool::Config::File::Token::Numbered::Device::set_remote_device_name, the specified value '$val' is not allowed."); # Assignment $self->{HH_Unispool_Config_File_Token_Numbered_Device}{remote_device_name} = $val; } sub set_remote_system_name { my $self = shift; my $val = shift; # Check if isa/ref/rx/value is allowed &_value_is_allowed( 'remote_system_name', $val ) || throw Error::Simple("ERROR: HH::Unispool::Config::File::Token::Numbered::Device::set_remote_system_name, the specified value '$val' is not allowed."); # Assignment $self->{HH_Unispool_Config_File_Token_Numbered_Device}{remote_system_name} = $val; } sub set_save_printfile { my $self = shift; if (shift) { $self->{HH_Unispool_Config_File_Token_Numbered_Device}{save_printfile} = 1; } else { $self->{HH_Unispool_Config_File_Token_Numbered_Device}{save_printfile} = 0; } } sub set_unispool_control { my $self = shift; if (shift) { $self->{HH_Unispool_Config_File_Token_Numbered_Device}{unispool_control} = 1; } else { $self->{HH_Unispool_Config_File_Token_Numbered_Device}{unispool_control} = 0; } } sub set_unispool_header { my $self = shift; if (shift) { $self->{HH_Unispool_Config_File_Token_Numbered_Device}{unispool_header} = 1; } else { $self->{HH_Unispool_Config_File_Token_Numbered_Device}{unispool_header} = 0; } } sub write_string { my $self = shift; $self->SUPER::read_string(@_); }