ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/eg/event
Revision: 1.8
Committed: Fri Jul 27 02:51:33 2001 UTC (22 years, 10 months ago) by root
Branch: MAIN
Changes since 1.7: +1 -1 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 #!/usr/bin/perl
2
3 # this crap is an asynchroneous finger client. it's rather idiotic ;)
4
5 use Coro;
6 use Coro::Event;
7 use Coro::Socket;
8
9 # this gets started everytime a user enters a finger command
10 sub finger {
11 my $user = shift;
12 my $host = shift;
13
14 my $fh = new Coro::Socket PeerHost => $host, PeerPort => "finger"
15 or die;
16
17 print $fh "$user\n";
18
19 print "$user\@$host: $_" while <$fh>;
20 print "$user\@$host: done\n";
21 }
22
23 my $stdin = new_from_fh Coro::Handle \*STDIN;
24
25 # this is the main task
26 sub keyboard : Coro {
27 $|=1;
28 while() {
29 print "cmd> "; my $cmd = <$stdin>; chomp $cmd;
30 if ($cmd eq "finger") {
31 print "user> "; my $user = <$stdin>; chomp $user;
32 print "host> "; my $host = <$stdin>; chomp $host;
33 async { finger($user, $host) };
34 } elsif ($cmd eq "quit") {
35 unloop(777);
36 terminate;
37 } else {
38 print "unknown command '$cmd', either 'finger' or 'quit'\n";
39 }
40 }
41 }
42
43 # display the time or garble the display, YMMV.
44 sub timer : Coro {
45 my $w = Coro::Event->timer(interval => 0.001, hard => 1);
46 use Time::HiRes qw(time);
47 while () {
48 $w->next;
49 print "\e7\e[C\e[C\e[C\e[C\e[C\e[C\e[C\e[C <time ",time,"> \e8";
50 };
51 }
52
53 print "unlooped with value: ",loop(),"\n";
54