annotate variant_effect_predictor/Bio/Tools/StateMachine/IOStateMachine.pm @ 2:a5976b2dce6f

changing defualt values for ensembl database
author mahtabm
date Thu, 11 Apr 2013 17:15:42 +1000
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 #-----------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 # $Id: IOStateMachine.pm,v 1.6 2002/10/22 07:38:49 lapp Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 # BioPerl module Bio::Tools::StateMachine::IOStateMachine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 # Cared for by Steve Chervitz <sac@bioperl.org>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 #-----------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Bio::Tools::StateMachine::IOStateMachine - IO-based implementation of AbstractStateMachine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 use Bio::Tools::StateMachine::IOStateMachine;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 # A state machine that reads input from a file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 my $sm = Bio::Tools::StateMachine::IOStateMachine->new( -file => 'data.txt' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 # A state machine that reads input from a STDIN
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 my $sm = Bio::Tools::StateMachine::IOStateMachine->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 # A state machine that reads input from a STDIN
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 # and times out if input doesn't arrive within 30 seconds.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 my $sm = Bio::Tools::StateMachine::IOStateMachine->new( -timeout_sec => 30 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 An implementation of AbstractStateMachine that samples an input stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 to determine whether a state change has occurred.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 =head1 EXAMPLES
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 To get a feel for how to use this, have look at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 Bio::SearchIO::psiblast which subclasses IOStateMachine.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 Bioperl modules. Send your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 of the Bioperl mailing lists. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 http://bio.perl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 the bugs and their resolution. Bug reports can be submitted via email
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 =head1 AUTHOR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 Steve Chervitz, E<lt>sac@bioperl.orgE<gt>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 See the L<FEEDBACK | FEEDBACK> section for where to send bug reports and comments.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 =head1 COPYRIGHT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 Copyright (c) 2001 Steve Chervitz. All Rights Reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 This library is free software; you can redistribute it and/or modify
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 it under the same terms as Perl itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 =head1 DISCLAIMER
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 This software is provided "as is" without warranty of any kind.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 The rest of the documentation details each of the object methods.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 package Bio::Tools::StateMachine::IOStateMachine;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 use vars qw( @ISA @EXPORT_OK );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 use Bio::Root::IO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 use Bio::Tools::StateMachine::AbstractStateMachine qw($INITIAL_STATE $FINAL_STATE);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 @ISA = qw( Bio::Root::IO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 Bio::Tools::StateMachine::AbstractStateMachine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 # Propagating the initial and final states from AbstractStateMachine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 @EXPORT_OK = qw( $INITIAL_STATE $FINAL_STATE );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 =head2 _init_state_machine()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 Argument : Named parameter -TIMEOUT_SEC => seconds,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 to specify the number of seconds to allow before throwing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 an exception if input fails to arrive within that amount of time.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 sub _init_state_machine {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 my($self, @args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 $self->SUPER::_init_state_machine(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 my ($timeout) = $self->_rearrange( [qw(TIMEOUT_SECS)], @args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 if( defined $timeout ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 if($timeout =~ /^\d+$/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 $self->{'_timeout_secs'} = $timeout;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 $self->throw(-class =>'Bio::Root::BadParameter',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 -text => "TIMEOUT_SECS must be a number: $timeout",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 -value => $timeout
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 =head2 check_for_new_state()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 Purpose : Obtains data from the input stream to be checked
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 for the existence of a new state.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 Usage : check_for_new_state( [$ignore_blank_lines] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 Argument : boolean: true if you want to ignore blank lines
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 Returns : the next chunk of input ($/ is not altered)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 If there is no more input, returns undef.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 Subclasses should override this method and call it to obtain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 the chunk of data for new state testing.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 sub check_for_new_state {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 my ($self, $ignore_blank_lines) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 $self->verbose and print STDERR "Checking for new state...\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 my $chunk = $self->next_input_chunk();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 # Determine if we're supposed to ignore blanks and if so, loop
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 # until we're either out of input or hit a non-blank line.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 if( defined $chunk &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 $ignore_blank_lines and $chunk =~ /^\s*$/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 while( $chunk = $self->next_input_chunk()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 last unless not $chunk or $chunk =~ /^\s*$/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 $self->verbose and print STDERR " Input chunk: " . $chunk, "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 return $chunk;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 =head2 next_input_chunk()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 Argument : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 Returns : The next chunk of input data from the IO stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 To be used in determining what state the machine should be in.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 sub next_input_chunk {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 $self->verbose and print STDERR "Getting next input chunk...\n", ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 if(not defined $self->{'_alarm_available'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 $self->_check_if_alarm_available();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 $SIG{ALRM} = sub { die "Timed out!"; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 my $chunk;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 if( $self->{'_alarm_available'} and defined $self->{'_timeout_secs'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 alarm($self->{'_timeout_secs'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 $chunk = $self->_readline();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 if($@ =~ /Timed out!/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 $self->throw(-class => 'Bio::Root::IOException',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 -text => "Timed out while waiting for input (timeout=$self->{'_timeout_secs'}s).");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 } elsif($@ =~ /\S/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 my $err = $@;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 $self->throw(-class => 'Bio::Root::IOException',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 -text => "Unexpected error during readline: $err");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 return $chunk;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 # alarm() not available (ActiveState perl for win32 doesn't have it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 # See jitterbug PR#98)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 sub _check_if_alarm_available {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 alarm(0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 if($@) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 $self->{'_alarm_available'} = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 $self->{'_alarm_available'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 sub append_input_cache {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 my ($self, $data) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 push( @{$self->{'_input_cache'}}, $data) if defined $data;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 sub get_input_cache {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 my @cache = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 if( ref $self->{'_input_cache'} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 @cache = @{$self->{'_input_cache'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 return @cache;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 sub clear_input_cache {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 @{$self->{'_input_cache'}} = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249