1 package OpenSRF::Transport::SlimJabber::Client;
7 use OpenSRF::Utils::Config;
8 use OpenSRF::Utils::Logger qw/$logger/;
9 use OpenSRF::Transport::SlimJabber::XMPPReader;
10 use OpenSRF::Transport::SlimJabber::XMPPMessage;
12 use FreezeThaw qw/freeze/;
20 OpenSRF::Transport::SlimJabber::Client
39 my( $class, %params ) = @_;
40 my $self = bless({}, ref($class) || $class);
41 $self->params(\%params);
50 my($self, $reader) = @_;
51 $self->{reader} = $reader if $reader;
52 return $self->{reader};
60 my($self, $params) = @_;
61 $self->{params} = $params if $params;
62 return $self->{params};
70 my($self, $socket) = @_;
71 $self->{socket} = $socket if $socket;
72 return $self->{socket};
81 $self->reader->disconnect if $self->reader;
94 # -------------------------------------------------
102 return $self->reader->tcp_connected if $self->reader;
114 my $msg = OpenSRF::Transport::SlimJabber::XMPPMessage->new(@_);
115 $msg->osrf_xid($logger->get_osrf_xid);
116 $self->reader->send($msg->to_xml);
127 my $host = $self->params->{host};
128 my $port = $self->params->{port};
129 my $username = $self->params->{username};
130 my $resource = $self->params->{resource};
131 my $password = $self->params->{password};
133 my $jid = "$username\@$host/$resource";
135 my $conf = OpenSRF::Utils::Config->current;
138 $tail = "" if !$conf->bootstrap->router_name and $username eq "router";
139 $resource = "$resource$tail";
141 my $socket = IO::Socket::INET->new(
143 PeerPort => int($port),
146 throw OpenSRF::EX::Jabber("Could not open TCP socket to Jabber server: $@")
147 unless ( $socket and $socket->connected );
149 $self->socket($socket);
150 $self->reader(OpenSRF::Transport::SlimJabber::XMPPReader->new($socket));
151 $self->reader->connect($host, $username, $password, $resource);
153 throw OpenSRF::EX::Jabber("Could not authenticate with Jabber server: $@")
154 unless ( $self->reader->connected );
165 my( $class, $app ) = @_;
166 $class->peer_handle($class->new( $app )->initialize());
175 my($self, $timeout) = @_;
178 $timeout = int($timeout);
180 unless( $self->reader and $self->reader->connected ) {
181 throw OpenSRF::EX::JabberDisconnected
182 ("This JabberClient instance is no longer connected to the server ");
185 return $self->reader->wait_msg($timeout);
191 Sets the socket to O_NONBLOCK, reads all of the data off of the
192 socket, the restores the sockets flags. Returns 1 on success, 0 if
193 the socket isn't connected.
199 return $self->reader->flush_socket;