sub get_app_targets {
my $app = shift;
- my $targets;
- my $config_client = OpenSRF::Utils::SettingsClient->new();
+# my $config_client = OpenSRF::Utils::SettingsClient->new();
+
+ my $conf = OpenSRF::Utils::Config->current;
+ my $router_name = $conf->bootstrap->router_name;
+ my $routers = $conf->bootstrap->domains;
+
+ unless($router_name and $routers) {
+ throw OpenSRF::EX::Config
+ ("Missing router config information 'router_name' and 'routers'");
+ }
+ my @targets;
+ for my $router (@$routers) {
+ push @targets, "$router_name\@$router/$app";
+ }
+
+ return @targets;
+
+=head comment
if( $app eq "settings" ) { # we have to load from the bootstrap config file
- my $conf = OpenSRF::Utils::Config->current;
if(!$conf) { die("No transport target for $app!"); }
$targets = $conf->targets->$app || die("No transport target for $app!");
}
return @$targets;
+=cut
}
# When we're a client and we want to connect to a remote service
$class = ref( $class ) || $class;
if( ! $instance ) {
- my $client = OpenSRF::Utils::SettingsClient->new();
-
- my $transport_info = $client->config_value(
- "apps", $app, "transport_hosts", "transport_host" );
-
- if( !ref($transport_info) eq "ARRAY" ) {
- $transport_info = [$transport_info];
- }
-
+ my $conf = OpenSRF::Utils::Config->current;
+ my $domains = $conf->bootstrap->domains;
- # XXX for now, we just try the first host...
-
- my $username = $transport_info->[0]->{username};
- my $password = $transport_info->[0]->{password};
- my $resource = 'system';
- my $host = $transport_info->[0]->{host};
- my $port = $transport_info->[0]->{port};
-
- if (defined $client->config_value("router_targets")) {
- my $h = OpenSRF::Utils::Config->current->env->hostname;
- $resource .= "_$h";
- }
+ my $username = $conf->bootstrap->username;
+ my $password = $conf->bootstrap->passwd;
+ my $port = $conf->bootstrap->port;
+ my $host = $domains->[0]; # XXX for now...
+ my $resource = $app . '_listener_at_' . $conf->env->hostname;
OpenSRF::Utils::Logger->transport("Inbound as $username, $password, $resource, $host, $port\n", INTERNAL );
$self->{app} = $app;
+ my $client = OpenSRF::Utils::SettingsClient->new();
my $f = $client->config_value("dirs", "sock");
$unix_sock = join( "/", $f,
$client->config_value("apps", $app, "unix_config", "unix_sock" ));
sub listen {
my $self = shift;
- my $client = OpenSRF::Utils::SettingsClient->new();
my $routers;
- try {
-
- $routers = $client->config_value("router_targets","router_target");
- $logger->transport( $self->{app} . " connecting to router $routers", INFO );
-
- if (defined $routers) {
- if( !ref($routers) || !(ref($routers) eq "ARRAY") ) {
- $routers = [$routers];
- }
+ try {
- for my $router (@$routers) {
- $logger->transport( $self->{app} . " connecting to router $router", INFO );
- $self->send( to => $router,
- body => "registering", router_command => "register" , router_class => $self->{app} );
- }
- $logger->transport( $self->{app} . " :routers connected", INFO );
+ my $conf = OpenSRF::Utils::Config->current;
+ my $router_name = $conf->bootstrap->router_name;
+ my $routers = $conf->bootstrap->domains;
+
+ unless($router_name and $routers) {
+ throw OpenSRF::EX::Config
+ ("Missing router config information 'router_name' and 'routers'");
+ }
+
+ my @targets;
+ for my $router (@$routers) {
+ push @targets, "$router_name\@$router/router";
+ }
+ for my $router (@targets) {
+ $logger->transport( $self->{app} . " connecting to router $router", INFO );
+ $self->send( to => $router,
+ body => "registering", router_command => "register" , router_class => $self->{app} );
}
+ $logger->transport( $self->{app} . " :routers connected", INFO );
+
+
} catch OpenSRF::EX::Config with {
$logger->transport( $self->{app} . ": No routers defined" , WARN );
# no routers defined
my( $class, $app ) = @_;
return $_singleton_connection;
# my @keys = keys %apps_hash;
-#OpenSRF::Utils::Logger->transport(
+# OpenSRF::Utils::Logger->transport(
# "Requesting peer for $app and we have @keys", INFO );
# return $apps_hash{$app};
}
throw OpenSRF::EX::Config( "No suitable config found for PeerConnection" );
}
- my $trans_list = $config->bootstrap->transport;
- unless( $trans_list && $trans_list->[0] ) {
- throw OpenSRF::EX::Config ("Peer Connection needs transport info");
- }
-
- # For now we just use the first in the list...
- my $trans = $trans_list->[0];
-
- my $username;
- if( $app eq "system_client" ) {
- $username = $config->$trans->username;
- } else {
- $username = $app;
- }
+ my $conf = OpenSRF::Utils::Config->current;
+ my $domains = $conf->bootstrap->domains;
+ my $h = $conf->env->hostname;
+ my $username = $conf->bootstrap->username;
+ my $password = $conf->bootstrap->passwd;
+ my $port = $conf->bootstrap->port;
+ my $resource = "${app}_drone_at_$h";
+ my $host = $domains->[0]; # XXX for now...
+ if( $app eq "client" ) { $resource = "client_at_$h"; }
- my $password = $config->$trans->password;
- OpenSRF::Utils::Logger->transport( "Building Peer with " .$config->$trans->password, INTERNAL );
- my $h = $config->env->hostname;
- my $resource = $h;
- my $server = $config->$trans->server;
- OpenSRF::Utils::Logger->transport( "Building Peer with " .$config->$trans->server, INTERNAL );
- my $port = $config->$trans->port;
- OpenSRF::Utils::Logger->transport( "Building Peer with " .$config->$trans->port, INTERNAL );
OpenSRF::EX::Config->throw( "JPeer could not load all necesarry values from config" )
- unless ( $username and $password and $resource and $server and $port );
+ unless ( $username and $password and $resource and $host and $port );
OpenSRF::Utils::Logger->transport( "Built Peer with", INTERNAL );
username => $username,
resource => $resource,
password => $password,
- host => $server,
+ host => $host,
port => $port,
);
}
sub process {
+
my $self = shift;
my $val = $self->SUPER::process(@_);
return 0 unless $val;
+
OpenSRF::Utils::Logger->transport( "Calling transport handler for ".$self->app." with: $val", INTERNAL );
my $t;
-#try {
$t = OpenSRF::Transport->handler($self->app, $val);
-# } catch OpenSRF::EX with {
-# my $e = shift;
-# $e->throw();
-
-# } catch Error with { return undef; }
-
return $t;
}