adding loadable module support
authormiker-pines <miker-pines>
Fri, 7 Apr 2006 02:29:56 +0000 (02:29 +0000)
committermiker-pines <miker-pines>
Fri, 7 Apr 2006 02:29:56 +0000 (02:29 +0000)
SIPServer.pm
SIPconfig.xml

index dcf1db5..4105ee5 100644 (file)
@@ -7,6 +7,7 @@ use Sys::Syslog qw(syslog);
 use Net::Server::PreFork;
 use IO::Socket::INET;
 use Data::Dumper;              # For debugging
+require UNIVERSAL::require;
 
 #use Sip qw(readline);
 use Sip::Constants qw(:all);
@@ -218,6 +219,7 @@ sub sip_protocol_loop {
     my $self = shift;
     my $expect;
     my $service = $self->{service};
+    my $config = $self->{config};
     my $input;
 
     local $/ = "\r";           # SIP protocol message terminator
@@ -225,12 +227,24 @@ sub sip_protocol_loop {
     #
     # initialize connection to ILS
     #
-    $self->{ils} = new ILS $self->{account}->{institution};
+    my $module = $config
+                    ->{institutions}
+                   ->{ $self->{account}->{institution} }
+                   ->{implementation};
+    $module->use;
+
+    if ($@) {
+       syslog("LOG_ERR", "%s: Loading ILS implementation '%s' failed, exiting",
+              $self->{service}, $self->{account}->{institution});
+       die("ILS initialization failed");
+    }
+
+    $self->{ils} = $module->new( $self->{institution} );
 
 
     if (!$self->{ils}) {
        syslog("LOG_ERR", "%s: ILS connection to '%s' failed, exiting",
-              $self->{service}, $self->{institution});
+              $self->{service}, $self->{account}->{institution});
        die("ILS initialization failed");
     }
     # Now that the terminal has logged in, the first message
index ddea243..42cc19b 100644 (file)
 <!-- needs to be one institution stanza for each institution -->
 <!-- named in the accounts above. -->
 <institutions>
-    <institution id="UWOLS" >
+    <institution id="UWOLS" implementation="ILS">
           <policy checkin="true" renewal="false"
                  status_update="false" offline="false"
                  timeout="600"
                  retries="3" />
     </institution>
 
-    <institution id="LPL">
+    <institution id="LPL" implementation="ILS">
     </institution>
 </institutions>
-</acsconfig>
\ No newline at end of file
+</acsconfig>