Quantcast
Channel: Ignite Realtime : Discussion List - All Communities
Viewing all articles
Browse latest Browse all 10742

unable to handle exception if connection lost while transferring long file

$
0
0

#0down vote  favorite

 

 

in my chat application using asmack-jse-buddycloud-2010 library. i am able to do chat and file transfer but in testing 1 scenario occur's , while transferring file(suppose file size > 1MBs or anysize) either server goes down or we loose internet connection in that case application get crashes by throwing  an exception

error log.

07-0213:09:05.983: E/AndroidRuntime(12913): FATAL EXCEPTION:FileTransfer jsi_555743874184501198
07-0213:09:05.983: E/AndroidRuntime(12913):Process: com.example.chat_demo, PID:12913
07-0213:09:05.983: E/AndroidRuntime(12913): java.lang.IllegalStateException:Not connected to server.
07-0213:09:05.983: E/AndroidRuntime(12913):    at org.jivesoftware.smack.XMPPConnection.sendPacket(XMPPConnection.java:488)
07-0213:09:05.983: E/AndroidRuntime(12913):    at org.jivesoftware.smackx.packet.SyncPacketSend.getReply(SyncPacketSend.java:41)
07-0213:09:05.983: E/AndroidRuntime(12913):    at org.jivesoftware.smackx.packet.SyncPacketSend.getReply(SyncPacketSend.java:61)
07-0213:09:05.983: E/AndroidRuntime(12913):    at org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamSession$IQIBBOutputStream.writeToXML(InBandBytestreamSession.java:763)
07-0213:09:05.983: E/AndroidRuntime(12913):    at org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamSession$IBBOutputStream.flushBuffer(InBandBytestreamSession.java:707)
07-0213:09:05.983: E/AndroidRuntime(12913):    at org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamSession$IBBOutputStream.closeInternal(InBandBytestreamSession.java:737)
07-0213:09:05.983: E/AndroidRuntime(12913):    at org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamSession.closeByLocal(InBandBytestreamSession.java:191)
07-0213:09:05.983: E/AndroidRuntime(12913):    at org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamSession.close(InBandBytestreamSession.java:153)
07-0213:09:05.983: E/AndroidRuntime(12913):    at org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamSession$IQIBBOutputStream.writeToXML(InBandBytestreamSession.java:768)
07-0213:09:05.983: E/AndroidRuntime(12913):    at org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamSession$IBBOutputStream.flushBuffer(InBandBytestreamSession.java:707)
07-0213:09:05.983: E/AndroidRuntime(12913):    at org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamSession$IBBOutputStream.writeOut(InBandBytestreamSession.java:679)
07-0213:09:05.983: E/AndroidRuntime(12913):    at org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamSession$IBBOutputStream.write(InBandBytestreamSession.java:641)
07-0213:09:05.983: E/AndroidRuntime(12913):    at org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamSession$IBBOutputStream.write(InBandBytestreamSession.java:644)
07-0213:09:05.983: E/AndroidRuntime(12913):    at org.jivesoftware.smackx.filetransfer.FileTransfer.writeToStream(FileTransfer.java:217)
07-0213:09:05.983: E/AndroidRuntime(12913):    at org.jivesoftware.smackx.filetransfer.OutgoingFileTransfer$2.run(OutgoingFileTransfer.java:231)

 

 

 

 

source code...

 

 

 

File file ;

    configureProviderManager
(connection);

   
FileTransferNegotiator.setServiceEnabled(connection,true);
   
FileTransferManager manager =newFileTransferManager(connection);




String to = connection.getRoster().getPresence(to).getFrom();


                         transfer
= manager.createOutgoingFileTransfer(to);

                
try{

                            configureProviderManager
(connection);
           
//here file trasfer occur's .parameters are file and filename(has nothing to do with transfer)

                           transfer
.sendFile(file,file.getName().tostring());

                   
}catch(IllegalStateException e){

                           
Log.i("illegal state exception","caught  ");
                           
//transfer.cancel();
                       
}catch(XMPPException e){

                               e
.printStackTrace();
                              
}

                
while(!transfer.isDone()){
                           
if(transfer.getStatus()==Status.error){

                                    transfer
.cancel();
                           
}


                           
if(transfer.getStatus().equals(Status.refused))
                           
System.out.println("refused  "+ transfer.getError());
                           
elseif( transfer.getStatus().equals(Status.error))

                                
System.out.println(" error "+ transfer.getError());
                                
}
                           
if(transfer.getStatus().equals(Status.cancelled)){

                            
System.out.println(" cancelled  "+ transfer.getError());
                            
}

                           
else


                           
System.out.println("Success");

                           
}


                       
}

   
}


Viewing all articles
Browse latest Browse all 10742

Trending Articles