4 use Net::Z3950::SimpleServer;
12 $args->{IMP_NAME} = "DemoServer";
13 $args->{IMP_VER} = "3.14159";
14 $args->{ERR_CODE} = 0;
15 $args->{HANDLE} = $session;
18 sub my_search_handler {
21 name => "Peter Dornan",
23 collaboration => "ATLAS"
25 name => "Jorn Dines Hansen",
27 collaboration => "HERA-B"
29 name => "Alain Blondel",
30 title => "Head of coll.",
31 collaboration => "ALEPH"
34 my $session = $args->{HANDLE};
35 my $set_id = $args->{SETNAME};
36 my @database_list = @{ $args->{DATABASES} };
37 my $query = $args->{QUERY};
40 print "------------------------------------------------------------\n";
41 print "Processing query : $query\n";
42 printf("Database set : %s\n", join(" ", @database_list));
43 print "Setname : $set_id\n";
44 print "------------------------------------------------------------\n";
46 $args->{HITS} = $hits;
47 $session->{$set_id} = $data;
48 $session->{__HITS} = $hits;
52 sub my_fetch_handler {
54 my $session = $args->{HANDLE};
55 my $set_id = $args->{SETNAME};
56 my $data = $session->{$set_id};
57 my $offset = $args->{OFFSET};
60 my $hits = $session->{__HITS};
61 my $href = $data->[$offset - 1];
63 $args->{REP_FORM} = Net::Z3950::OID::xml;
65 foreach $field (keys %$href) {
66 $record .= "<" . $field . ">" . $href->{$field} . "</" . $field . ">";
70 $args->{RECORD} = $record;
71 if ($offset == $session->{__HITS}) {
77 my $handler = Net::Z3950::SimpleServer->new({
78 INIT => \&my_init_handler,
79 SEARCH => \&my_search_handler,
80 FETCH => \&my_fetch_handler });
82 $handler->launch_server("ztest.pl", @ARGV);