# ============================================================================== # SERVER IMPLEMENTATION # exec: perl src.pl # ============================================================================== #!/usr/bin/perl -w # ============================================================================== use strict; use POE qw(Session); use POE::Component::IKC::Server; use POE::Component::IKC::Specifier; use threads; # ============================================================================== my $port = '32032'; my $ip = '127.0.0.1'; my $name = 'ThreadTest'; my $alias = 'TT'; # === INTER KERNEL COMMUNICATION =============================================== create_ikc_server( ip => $ip, port => $port, name => $name ); POE::Session -> new ( # --- general states --------------------------------------------------- _start => \&start, # session start # --- service requests ------------------------------------------------- 'call' => \&call, # ---------------------------------------------------------------------- ); $poe_kernel->run(); # === IKC STATES =============================================================== sub start { my($kernel, $heap) = @_[KERNEL, HEAP]; print "State [start]\n"; $kernel -> alias_set( $alias ); $kernel -> call( 'IKC', 'publish', $alias, [ qw( call ) ] ); } # ============================================================================== sub call { my($kernel, $heap, $param) = @_[KERNEL, HEAP, ARG0]; print "State [call]\n"; async { } -> detach; return [ ]; } # ============================================================================== __END__