/[cvs]/joko/TestArea/perl/runtime/POE/rpc/filter-reference/server.pl
ViewVC logotype

Contents of /joko/TestArea/perl/runtime/POE/rpc/filter-reference/server.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations)
Sun May 11 21:48:56 2003 UTC (21 years, 1 month ago) by joko
Branch: MAIN
CVS Tags: HEAD
File MIME type: text/plain
initial commit

1 #!/usr/bin/perl
2
3 #use warnings;
4 #use strict;
5
6 use POE;
7 use POE::Filter::Reference;
8 use POE::Component::Server::TCP;
9 #use POE::Component::Client::TCP;
10 use Data::Dumper;
11
12 ### Create a server that receives and sends Perl data structures. It
13 ### will be referred to by the name "sum-server" when necessary. It
14 ### listens on localhost port 12345. It uses POE::Filter::Reference
15 ### to parse input and format output.
16
17 POE::Component::Server::TCP->new
18 ( Alias => "sum_server",
19 Address => "localhost",
20 Port => 12345,
21 ClientFilter => "POE::Filter::Reference",
22
23 # Handle client requests here.
24
25 ClientInput => sub {
26 my ( $heap, $list ) = @_[ HEAP, ARG0 ];
27 my $sum = 0;
28 my ( @odd, @even, @bad, $status );
29
30 print Dumper ($list);
31
32 # Process the request into buckets for odd, even, and
33 # non-integers. Sum the integers in the request.
34
35 if ( ref($list) eq 'ARRAY' ) {
36 foreach (@$list) {
37 if (/^\d+$/) {
38 if ( $_ % 2 ) { push @odd, $_; }
39 else { push @even, $_; }
40 $sum += $_;
41 }
42 else {
43 push @bad, $_;
44 }
45 }
46 $status = "OK";
47 }
48 else {
49 $status = "Error: Bad request type: " . ref($list);
50 }
51
52 # Build the response hash, then send it to the client.
53
54 my %response =
55 ( sum => $sum,
56 odd => \@odd,
57 even => \@even,
58 bad => \@bad,
59 stat => $status,
60 );
61
62 $heap->{client}->put( \%response );
63 },
64
65 # Since this is a one-shot test program, shut down the server
66 # after the first client has disconnected. This posts "shutdown"
67 # to the server itself. Using yield() here would just shut down
68 # the client connection.
69
70 ClientDisconnected => sub {
71 my $kernel = $_[KERNEL];
72 $kernel->post( sum_server => "shutdown" );
73 },
74 );
75
76
77 ### Run both the client and server. Yes, in the same program.
78
79 $poe_kernel->run();

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