private void initConnection ( ) throws XMPPException { boolean isFirstInitialization = packetReader == null || packetWriter == null ; compressionHandler = null ; serverAckdCompression = false ; // Set the reader and writer instance variables initReaderAndWriter ( ) ; try { if ( isFirstInitialization ) { packetWriter = new PacketWriter ( this ) ; packetReader = new PacketReader ( this ) ; // If debugging is enabled, we should start the thread that will // listen for // all packets and then log them. if ( config . isDebuggerEnabled ( ) ) { addPacketListener ( debugger . getReaderListener ( ) , null ) ; if ( debugger . getWriterListener ( ) != null ) { addPacketSendingListener ( debugger . getWriterListener ( ) , null ) ; } } } else { packetWriter . init ( ) ; packetReader . init ( ) ; } // Start the packet writer. This will open a XMPP stream to the // server packetWriter . startup ( ) ; // Start the packet reader. The startup() method will block until we // get an opening stream packet back from server. packetReader . startup ( ) ; // Make note of the fact that we're now connected. connected = true ; if ( isFirstInitialization ) { // Notify listeners that a new connection has been established for ( ConnectionCreationListener listener : getConnectionCreationListeners ( ) ) { listener . connectionCreated ( this ) ; } } } catch ( XMPPException ex ) { // An exception occurred in setting up the connection. Make sure we // shut down the // readers and writers and close the socket. if ( packetWriter != null ) { try { packetWriter . shutdown ( ) ; } catch ( Throwable ignore ) { /* ignore */ } packetWriter = null ; } if ( packetReader != null ) { try { packetReader . shutdown ( ) ; } catch ( Throwable ignore ) { /* ignore */ } packetReader = null ; } if ( reader != null ) { try { reader . close ( ) ; } catch ( Throwable ignore ) { /* ignore */ } reader = null ; } if ( writer != null ) { try { writer . close ( ) ; } catch ( Throwable ignore ) { /* ignore */ } writer = null ; } if ( socket != null ) { try { socket . close ( ) ; } catch ( Exception e ) { /* ignore */ } socket = null ; } this . setWasAuthenticated ( authenticated ) ; authenticated = false ; connected = false ; throw ex ; // Everything stoppped. Now throw the exception. } }
Initializes the connection by creating a packet reader and writer and opening a XMPP stream to the server .