/[cvs]/joko/Scripts/psh/lib/POE/Component/Terminal_ReadLine.pm
ViewVC logotype

Annotation of /joko/Scripts/psh/lib/POE/Component/Terminal_ReadLine.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (hide annotations) (vendor branch)
Fri Jun 14 21:22:10 2002 UTC (22 years, 3 months ago) by cvsjoko
Branch: nfo, MAIN
CVS Tags: r001, HEAD
Changes since 1.1: +0 -0 lines
first import

1 cvsjoko 1.1 package MJAM::Connector::Console;
2    
3     use strict;
4     #use strict qw ( vars refs );
5     use warnings;
6    
7     #sub POE::Kernel::ASSERT_DEFAULT () { 1 }
8     #sub POE::Kernel::TRACE_DEFAULT () { 1 }
9     #sub POE::Kernel::TRACE_SIGNALS () { 1 }
10     use POE qw ( Session Wheel::Run Filter::Line Filter::Stream );
11    
12     use Term::ReadLine;
13     use Data::Dumper;
14    
15     my $term;
16     my $term_meta;
17    
18     my $term_prompt = "abc #> ";
19     my $term_prompt_inlay = "";
20    
21     my $poe_alias;
22    
23     sub getPrompt {
24     my $prompt;
25     $prompt = $term_meta->{PromptPrefix} . ' ' . $term_meta->{PromptPostfix} . ' ';
26     return $prompt;
27     }
28    
29    
30    
31     # ================ POE stuff
32    
33     my $session;
34    
35     sub term_work {
36    
37     if (!$term) {
38     $term = new Term::ReadLine 'jash';
39     }
40    
41     my $prompt = "#> ";
42     #my $OUT = $term->OUT || STDOUT;
43    
44     while ( defined ($_ = $term->readline(getPrompt())) ) {
45    
46     my $res;
47    
48     #$res = execCmd($_);
49     #$res = "issued: $_";
50    
51     #warn $@ if $@;
52     #print $OUT $res, "\n" unless $@;
53    
54     #$res && print $OUT $res, "\n";
55     #$res && print $res, "\n";
56    
57     print $_;
58    
59     $term->addhistory($_) if /\S/;
60    
61     }
62    
63     }
64    
65    
66    
67    
68     sub term_error {
69     my ($heap, $session, $input, $param) = @_[HEAP, SESSION, ARG0, ARG1 ];
70     print "error: $input, $param", "\n";
71     }
72     sub term_stdout {
73     my ($kernel, $heap, $input, $wheel_id) = @_[KERNEL, HEAP, ARG0, ARG1];
74     #print "Child process in wheel $wheel_id wrote to STDOUT: $input\n";
75     #print "stdout: ", $input, "\n";
76     #$kernel->post('ce', 'routecmd', $input, \%conn);
77     $kernel->post( $heap->{meta}{RequestSession} => $heap->{meta}{RequestState} => $input);
78     }
79     sub term_stderr {
80     my ($heap, $session, $input) = @_[HEAP, SESSION, ARG0];
81     print "stderr: $input", "\n";
82     }
83     sub term_start {
84     my ($kernel, $heap, $session, $meta) = @_[KERNEL, HEAP, SESSION, ARG0];
85     my $program = \&term_work;
86    
87     # store entries from meta-hash to heap
88     map { $heap->{meta}{$_} = $meta->{$_}; } keys %{$meta};
89    
90     # store entries from meta-hash to global
91     $term_meta = $meta;
92    
93     $kernel->alias_set($heap->{meta}{Alias});
94    
95     $heap->{wheel} = POE::Wheel::Run->new(
96     Program => $program,
97     ErrorEvent => 'term_error',
98    
99     #StdinEvent => 'stdin',
100     StdoutEvent => 'term_stdout',
101     StderrEvent => 'term_stderr',
102    
103     #Filter => POE::Filter::Line->new(),
104     Filter => POE::Filter::Stream->new(),
105     );
106    
107     }
108    
109     sub response {
110     my ($kernel, $heap, $session, $response) = @_[KERNEL, HEAP, SESSION, ARG0];
111     #print "console-response: ", $response, "\n";
112     if ($response) { print $response, "\n"; }
113     #if ($response) { $term->put($response); }
114     }
115    
116     sub start {
117     my $poe_meta = shift;
118     $poe_alias = $poe_meta->{Alias};
119     POE::Session->create(
120     inline_states => {
121     _start => \&term_start,
122     term_start => \&term_start,
123     term_error => \&term_error,
124     term_stderr => \&term_stderr,
125     term_stdout => \&term_stdout,
126     response => \&response,
127     promptchange => \&promptchange,
128     getprompt => \&getPrompt,
129     },
130     args => [ $poe_meta ]
131     );
132     }
133    
134     sub stop {
135     my $alias = shift;
136     $poe_kernel->signal($alias, "TERM");
137     }
138    
139     1;

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed