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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show 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 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