/[cvs]/joko/Scripts/psh/lib/MJAM/Connector/TcpRpcXml/Server.pm
ViewVC logotype

Annotation of /joko/Scripts/psh/lib/MJAM/Connector/TcpRpcXml/Server.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (hide annotations) (vendor branch)
Fri Jun 14 21:22:09 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::TcpRpcXml::Server;
2    
3     use strict;
4     use warnings;
5    
6     use Data::Dumper qw( Dumper );
7    
8     use RPC::XML ();
9     use RPC::XML::Parser ();
10    
11     BEGIN {
12     foreach( qw( array int struct ) ) {
13     my $f = substr( $_, 0, 1 );
14     eval qq{
15     {
16     package R::X::$f;
17     sub new { shift; RPC::XML::$_->new( \@_ ) }
18     }
19     };
20     }
21     }
22    
23     use POE qw( Session Component::RPCXML::Server );
24    
25     use constant DEFAULT_PORT => 7777;
26    
27     my $port = shift || DEFAULT_PORT;
28    
29     my $debug = 1;
30    
31     sub _start {
32     my( $kernel, $heap ) = @_[ KERNEL, HEAP ];
33    
34     print STDERR "## main::start\n";
35    
36     POE::Component::RPCXML::Server->new(
37     Alias => 'rpcxml-server',
38     Port => $port,
39     DispatchEvent => 'response',
40     );
41    
42     return
43     }
44    
45     ##
46     ## stop -- Shutdown state
47     ##
48     sub _stop {
49     my( $kernel, $heap ) = @_[ KERNEL, HEAP ];
50    
51     ## Just pipe up if we're debugging
52     print STDERR "## main::stop\r\n" if $debug;
53    
54     return
55     }
56    
57     ##
58     ## signal -- Handle any signals received
59     ##
60     sub _signal {
61     my( $heap, $signal ) = @_[ HEAP, ARG0 ];
62    
63     print STDERR "## main::signal: ", $signal, "\r\n" if $debug;
64    
65     ## Shut things down on TERM, QUIT, or INT
66     if( $signal =~ /^TERM|QUIT|INT/ ) {
67     }
68    
69     return
70     }
71    
72     ##
73     ## default -- Catch any unhandled events for debugging
74     ##
75     sub _default {
76     my( $heap, $event ) = @_[ HEAP, ARG0 ];
77     print STDERR "## main::default: $event\r\n" if $debug;
78    
79     return
80     }
81    
82     sub response {
83     my( $heap, $req, $wheel ) = @_[ HEAP, ARG0..ARG1 ];
84    
85     print STDERR "## main::response: call for ", $req->name, "\n"
86     if $debug;
87    
88     my $resp
89     = RPC::XML::response->new( "OK: " . scalar localtime() );
90    
91     POE::Component::RPCXML::Server->send_resp( $wheel, $resp->as_string );
92    
93     return
94     }
95    
96     my $session;
97     sub start {
98     my $states = {
99     _start => \&_start,
100     _stop => \&_stop,
101     _signal => \&_signal,
102     _default => \&_default,
103     response => \&response,
104     };
105     $session = POE::Session->create( inline_states => $states, );
106     }
107    
108     sub stop {
109     $poe_kernel->signal('rpcxml-server', 'TERM');
110     $poe_kernel->signal($session, 'TERM');
111     }
112    
113     1;

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