File Coverage

blib/lib/XAS/Lib/Pipe.pm
Criterion Covered Total %
statement 10 51 19.6
branch n/a
condition n/a
subroutine 4 11 36.3
pod 5 5 100.0
total 19 67 28.3


line stmt bran cond sub pod time code
1             package XAS::Lib::Pipe;
2              
3             our $VERSION = '0.01';
4              
5             my $mixin;
6              
7             BEGIN {
8 1     1   1461 $mixin = 'XAS::Lib::Pipe::Unix';
9             };
10              
11 1     1   5 use POE;
  1         1  
  1         5  
12 1     1   537 use XAS::Lib::POE::PubSub;
  1         2  
  1         54  
13            
14             use XAS::Class
15 1         8 debug => 0,
16             version => $VERSION,
17             base => 'XAS::Lib::POE::Session',
18             mixin => $mixin,
19             accessors => 'pipe event',
20             utils => ':validation trim dotid',
21             vars => {
22             PARAMS => {
23             -fifo => { isa => 'Badger::Filesystem::File' },
24             -filter => { optional => 1, default => undef },
25             -eol => { optional => 1, default => "\n" },
26             }
27             }
28 1     1   4 ;
  1         1  
29              
30             #use Data::Dumper;
31              
32             # ----------------------------------------------------------------------
33             # Public Methods
34             # ----------------------------------------------------------------------
35              
36             sub session_initialize {
37 0     0 1   my $self = shift;
38              
39 0           my $alias = $self->alias;
40              
41 0           $self->log->debug("$alias: entering session_initialize()");
42              
43             # public events
44              
45             # private events
46              
47 0           $poe_kernel->state('pipe_error', $self, '_pipe_error');
48 0           $poe_kernel->state('pipe_input', $self, '_pipe_input');
49 0           $poe_kernel->state('pipe_output', $self, '_pipe_output');
50 0           $poe_kernel->state('pipe_connect', $self, '_pipe_connect');
51 0           $poe_kernel->state('process_error', $self, '_process_error');
52 0           $poe_kernel->state('process_input', $self, '_process_input');
53              
54             # walk the chain
55              
56 0           $self->SUPER::session_initialize();
57              
58 0           $self->log->debug("$alias: leaving session_initialize()");
59              
60             }
61              
62             sub process_input {
63 0     0 1   my $self = shift;
64 0           my ($input) = validate_params(\@_, [1]);
65              
66 0           my $alias = $self->alias;
67              
68 0           $self->log->debug("$alias: process_input()");
69              
70 0           $self->process_output($input);
71              
72             }
73              
74             sub process_error {
75 0     0 1   my $self = shift;
76 0           my ($syscall, $errnum, $errstr) = validate_params(\@_, [1,1,1]);
77              
78 0           my $alias = $self->alias;
79              
80 0           $self->log->debug("$alias: process_error()");
81              
82 0           $self->log->error_msg('net_client_error', $alias, $errnum, $errstr);
83              
84             }
85              
86             sub process_output {
87 0     0 1   my $self = shift;
88 0           my ($output) = validate_params(\@_, [1]);
89              
90 0           my $alias = $self->alias;
91              
92 0           $self->log->debug("$alias: process_output()");
93 0           $poe_kernel->post($alias, 'pipe_output', $output);
94              
95             }
96              
97             # ----------------------------------------------------------------------
98             # Public Events
99             # ----------------------------------------------------------------------
100              
101             # ----------------------------------------------------------------------
102             # Private Events
103             # ----------------------------------------------------------------------
104              
105             sub _process_input {
106 0     0     my ($self, $input) = @_[OBJECT,ARG0];
107              
108 0           my $alias = $self->alias;
109              
110 0           $self->log->debug("$alias: _process_input()");
111              
112 0           $self->process_input($input);
113              
114             }
115              
116             sub _process_error {
117 0     0     my ($self, $syscall, $errnum, $errstr) = @_[OBJECT,ARG0..ARG2];
118              
119 0           my $alias = $self->alias;
120              
121 0           $self->log->debug("$alias: _process_error()");
122              
123 0           $self->process_error($syscall, $errnum, $errstr);
124              
125             }
126              
127             # ----------------------------------------------------------------------
128             # Private Methods
129             # ----------------------------------------------------------------------
130              
131             sub init {
132 0     0 1   my $class = shift;
133              
134 0           my $self = $class->SUPER::init(@_);
135 0           my $alias = $self->alias;
136              
137 0           $self->{'event'} = XAS::Lib::POE::PubSub->new();
138 0           $self->event->subscribe($alias);
139              
140 0           $self->init_pipe();
141              
142 0           return $self;
143              
144             }
145              
146             1;
147              
148             __END__