#!/usr/bin/perl -I. -w package CalcAdapter; use base qw(Aw::Adapter); use Aw 'SOAP@active:7449'; use Aw::Event; require Aw::Adapter; my ($false, $true) = (0, 1); sub startup { my $self = shift; return $false if ( $self->newSubscription ( "AdapterDevKit::calcRequest", 0 ) ); $self->addEvent( new Aw::EventType ( "AdapterDevKit::calcRequest" ) ); $self->initStatusSubscriptions; } # # callback to process a request: Adapter DK 6-45 # sub processRequest { my ( $self, $reqEvent, $eventDef ) = @_; my %data = $reqEvent->toHash; my $sum = 0; foreach ( @{$data{numbers}} ) { $sum += $_; } my $reply = $self->createTypedEvent ( "AdapterDevKit::calcReply", { result => $sum } ); $self->deliverReplyEvent ( $reply ) if ( $reply ); $true; } package main; my %properties = ( clientId => 'CalcAdapter', broker => "SOAP\@active:7449", adapterId => 0, debug => 1, clientGroup => 'devkitAdapter', adapterType => 'The Calculator', ); chdir '/opt/active40'; # get message catalogs under your belly my $adapter = new CalcAdapter ( \%properties ); $adapter->isConnectTest and die ( "Adapter Connection Failed. Status = ", $adapter->connectTest, "\n" ); $adapter->createClient and die ( "Adapter Creation Failed." ); $adapter->startup and die ( "Adapter Startup Failed. $!" ); print "Adapter has died from condition: ", $adapter->getEvents, "\n"; __END__ =head1 DESCRIPTION This script is part of the SOAP::Transport::ACTIVEWORKS testing suite. This script is an ActiveWorks adapter that subscribes to and handles 'AdapterDevekit::calcRequest' events. The summation of all digits passed in the 'numbers' integer array field is returned in an 'AdapterDevkit::calcReply'. B SOAP components are employed. =cut