]> git.evergreen-ils.org Git - OpenSRF.git/blob - src/perl/lib/OpenSRF/System.pm
1f11f6f6a102669b9cdd1e323e71ffab1f6385f5
[OpenSRF.git] / src / perl / lib / OpenSRF / System.pm
1 package OpenSRF::System;
2 use strict; use warnings;
3 use OpenSRF;
4 use base 'OpenSRF';
5 use OpenSRF::Utils::Logger qw(:level);
6 use OpenSRF::Transport::Listener;
7 use OpenSRF::Transport;
8 use OpenSRF::UnixServer;
9 use OpenSRF::Utils;
10 use OpenSRF::Utils::LogServer;
11 use OpenSRF::EX qw/:try/;
12 use POSIX qw/setsid :sys_wait_h/;
13 use OpenSRF::Utils::Config; 
14 use OpenSRF::Utils::SettingsParser;
15 use OpenSRF::Utils::SettingsClient;
16 use OpenSRF::Application;
17 use Net::Server::PreFork;
18
19 my $bootstrap_config_file;
20 sub import {
21         my( $self, $config ) = @_;
22         $bootstrap_config_file = $config;
23 }
24
25 $| = 1;
26
27 sub DESTROY {}
28
29 sub load_bootstrap_config {
30         return if OpenSRF::Utils::Config->current;
31
32     die "Please provide a bootstrap config file to OpenSRF::System\n"
33         unless $bootstrap_config_file;
34
35         OpenSRF::Utils::Config->load(config_file => $bootstrap_config_file);
36         OpenSRF::Utils::JSON->register_class_hint(name => "OpenSRF::Application", hint => "method", type => "hash");
37         OpenSRF::Transport->message_envelope("OpenSRF::Transport::SlimJabber::MessageWrapper");
38         OpenSRF::Transport::PeerHandle->set_peer_client("OpenSRF::Transport::SlimJabber::PeerConnection");
39         OpenSRF::Transport::Listener->set_listener("OpenSRF::Transport::SlimJabber::Inbound");
40         OpenSRF::Application->server_class('client');
41 }
42
43 # ----------------------------------------------
44 # Bootstraps a single client connection.  
45 # named params are 'config_file' and 'client_name'
46 sub bootstrap_client {
47         my $self = shift;
48
49         my $con = OpenSRF::Transport::PeerHandle->retrieve;
50     return if $con and $con->tcp_connected;
51
52         my %params = @_;
53
54         $bootstrap_config_file = 
55                 $params{config_file} || $bootstrap_config_file;
56
57         my $app = $params{client_name} || "client";
58
59         load_bootstrap_config();
60         OpenSRF::Utils::Logger::set_config();
61         OpenSRF::Transport::PeerHandle->construct($app);
62 }
63
64 sub connected {
65         if (my $con = OpenSRF::Transport::PeerHandle->retrieve) {
66                 return 1 if $con->tcp_connected;
67         }
68         return 0;
69 }
70
71 1;