4 use Net::Z3950::SimpleServer;
13 foreach $key (keys %$href) {
14 printf("%10s => %s\n", $key, $href->{$key});
23 $args->{IMP_NAME} = "DemoServer";
24 $args->{IMP_VER} = "3.14159";
25 $args->{ERR_CODE} = 0;
26 $args->{HANDLE} = $session;
29 sub my_search_handler {
32 name => "Peter Dornan",
34 collaboration => "ATLAS"
36 name => "Jorn Dines Hansen",
38 collaboration => "HERA-B"
40 name => "Alain Blondel",
41 title => "Head of coll.",
42 collaboration => "ALEPH"
45 my $session = $args->{HANDLE};
46 my $set_id = $args->{SETNAME};
47 my @database_list = @{ $args->{DATABASES} };
48 my $query = $args->{QUERY};
51 print "------------------------------------------------------------\n";
52 print "Processing query : $query\n";
53 printf("Database set : %s\n", join(" ", @database_list));
54 print "Setname : $set_id\n";
55 print "------------------------------------------------------------\n";
57 $args->{HITS} = $hits;
58 $session->{$set_id} = $data;
59 $session->{__HITS} = $hits;
63 sub my_fetch_handler {
65 my $session = $args->{HANDLE};
66 my $set_id = $args->{SETNAME};
67 my $data = $session->{$set_id};
68 my $offset = $args->{OFFSET};
71 my $hits = $session->{__HITS};
72 my $href = $data->[$offset - 1];
74 $args->{REP_FORM} = Net::Z3950::OID::xml;
75 foreach $field (keys %$href) {
76 $record .= "<" . $field . ">" . $href->{$field} . "</" . $field . ">";
80 $args->{RECORD} = $record;
81 if ($offset == $session->{__HITS}) {
87 my $handler = Net::Z3950::SimpleServer->new({
88 INIT => \&my_init_handler,
89 SEARCH => \&my_search_handler,
90 FETCH => \&my_fetch_handler });
92 $handler->launch_server("ztest.pl", @ARGV);