move SIP2::send into package
[Biblio-SIP2.git] / SIP2.pm
1 package SIP2;
2
3 use Data::Dump qw();
4
5 our $sock;
6
7 sub connect {
8         $sock = IO::Socket::INET->new( @_ ) || die "can't connect to ", dump(@_), ": $!";
9 }
10
11
12 my $message_codes;
13 foreach ( <DATA> ) {
14         my ($code,$description) = split(/\t/,$_,2);
15         $message_codes->{$code} = $description;
16 }
17 warn "# message_codes ", Data::Dump::dump $message_codes;
18
19 sub dump_message {
20         my ( $prefix, $message ) = @_;
21         my $code = substr($message,0,2);
22         warn $prefix, " ", $message_codes->{$code}, Data::Dump::dump($message), "\n";
23 }
24
25
26 sub send {
27         my ( $send ) = @_;
28         SIP2::dump_message '>>>>', $send;
29         print $sock "$send\r\n";
30         $sock->flush;
31
32 #       local $/ = "\r";
33
34         my $expect = substr($send,0,2) | 0x01;
35
36         my $in = <$sock>;
37         SIP2::dump_message '<<<<', $in;
38         die "expected $expect" unless substr($in,0,2) != $expect;
39 }
40
41
42 1;
43
44 __DATA__
45 09      Checkin
46 10      Checkin Response
47 11      Checkout
48 12      Checkout Response
49 35      End Patron Session
50 36      End Session Response
51 63      Patron Information
52 64      Patron Information Response
53 93      Login
54 94      Login Response
55 98      ACS Status
56 99      SC Status