cleaned up debug log a little bit

This commit is contained in:
Daniel Gultsch 2014-04-19 01:14:30 +02:00
parent 7ccbf0008a
commit 5c0873c7ca
7 changed files with 118 additions and 91 deletions

View File

@ -164,7 +164,6 @@ public class Contact extends AbstractEntity implements Serializable {
public void updatePresence(String resource, int status) {
this.presences.updatePresence(resource, status);
Log.d("xmppService","updatingPresence for contact="+this.jid+" resource="+resource+" num="+presences.size());
}
public void removePresence(String resource) {

View File

@ -207,6 +207,10 @@ public class DatabaseBackend extends SQLiteOpenHelper {
ContentValues values = contact.getContentValues();
if (!updatePresences) {
values.remove(Contact.PRESENCES);
} else {
values.remove(Contact.DISPLAYNAME);
values.remove(Contact.PHOTOURI);
values.remove(Contact.SYSTEMACCOUNT);
}
db.update(Contact.TABLENAME, contact.getContentValues(), Contact.UUID
+ "=?", args);
@ -231,7 +235,6 @@ public class DatabaseBackend extends SQLiteOpenHelper {
if (cursor.getCount()>=1) {
cursor.moveToFirst();
contact.setUuid(cursor.getString(0));
//contact.setPresences(Presences.fromJsonString(cursor.getString(1)));
updateContact(contact,false);
} else {
contact.setUuid(UUID.randomUUID().toString());

View File

@ -1,5 +1,6 @@
package eu.siacs.conversations.persistance;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
@ -10,6 +11,7 @@ import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.util.Log;
import android.util.LruCache;
import eu.siacs.conversations.entities.Conversation;
@ -25,7 +27,7 @@ public class FileBackend {
public FileBackend(Context context) {
this.context = context;
int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
int cacheSize = maxMemory / 8;
thumbnailCache = new LruCache<String, Bitmap>(cacheSize) {
@ -45,7 +47,7 @@ public class FileBackend {
String filename = message.getUuid() + ".webp";
return new JingleFile(path + "/" + filename);
}
private Bitmap resize(Bitmap originalBitmap, int size) {
int w = originalBitmap.getWidth();
int h = originalBitmap.getHeight();
@ -59,8 +61,8 @@ public class FileBackend {
scalledW = size;
scalledH = (int) (h / ((double) w / size));
}
Bitmap scalledBitmap = Bitmap.createScaledBitmap(
originalBitmap, scalledW, scalledH, true);
Bitmap scalledBitmap = Bitmap.createScaledBitmap(originalBitmap,
scalledW, scalledH, true);
return scalledBitmap;
} else {
return originalBitmap;
@ -78,9 +80,10 @@ public class FileBackend {
Bitmap originalBitmap = BitmapFactory.decodeStream(is);
is.close();
Bitmap scalledBitmap = resize(originalBitmap, IMAGE_SIZE);
boolean success = scalledBitmap.compress(Bitmap.CompressFormat.WEBP,75,os);
boolean success = scalledBitmap.compress(
Bitmap.CompressFormat.WEBP, 75, os);
if (!success) {
//Log.d("xmppService", "couldnt compress");
// Log.d("xmppService", "couldnt compress");
}
os.close();
return file;
@ -96,16 +99,17 @@ public class FileBackend {
}
public Bitmap getImageFromMessage(Message message) {
return BitmapFactory
.decodeFile(getJingleFile(message).getAbsolutePath());
return BitmapFactory.decodeFile(getJingleFile(message)
.getAbsolutePath());
}
public Bitmap getThumbnailFromMessage(Message message, int size) throws FileNotFoundException {
public Bitmap getThumbnailFromMessage(Message message, int size)
throws FileNotFoundException {
Bitmap thumbnail = thumbnailCache.get(message.getUuid());
if (thumbnail==null) {
if (thumbnail == null) {
Bitmap fullsize = BitmapFactory.decodeFile(getJingleFile(message)
.getAbsolutePath());
if (fullsize==null) {
if (fullsize == null) {
throw new FileNotFoundException();
}
thumbnail = resize(fullsize, size);
@ -113,4 +117,25 @@ public class FileBackend {
}
return thumbnail;
}
public void removeFiles(Conversation conversation) {
String prefix = context.getFilesDir().getAbsolutePath();
String path = prefix + "/" + conversation.getAccount().getJid() + "/"
+ conversation.getContactJid();
File file = new File(path);
try {
this.deleteFile(file);
} catch (IOException e) {
Log.d("xmppService",
"error deleting file: " + file.getAbsolutePath());
}
}
private void deleteFile(File f) throws IOException {
if (f.isDirectory()) {
for (File c : f.listFiles())
deleteFile(c);
}
f.delete();
}
}

View File

@ -290,7 +290,7 @@ public class XmppConnectionService extends Service {
if ("subscribe".equals(type)) {
account.getXmppConnection().addPendingSubscription(fromParts[0]);
} else {
Log.d(LOGTAG,packet.getFrom()+ " could not be found");
//Log.d(LOGTAG,packet.getFrom()+ " could not be found");
}
return;
}
@ -667,7 +667,6 @@ public class XmppConnectionService extends Service {
@Override
public void onBind(Account account) {
Log.d("xmppService","bount. cleaning presences");
databaseBackend.clearPresences(account);
account.clearPresences(); // self presences
if (account.getXmppConnection().hasFeatureRosterManagment()) {

View File

@ -186,8 +186,7 @@ public class JingleConnection {
this.transportId = this.mJingleConnectionManager.nextRandomId();
content.setCandidates(this.transportId,getCandidatesAsElements());
packet.setContent(content);
Log.d("xmppService",packet.toString());
account.getXmppConnection().sendIqPacket(packet, this.responseListener);
this.sendJinglePacket(packet);
this.status = STATUS_INITIATED;
}
}
@ -219,7 +218,7 @@ public class JingleConnection {
public void failed() {
content.setCandidates(transportId, getCandidatesAsElements());
packet.setContent(content);
account.getXmppConnection().sendIqPacket(packet,responseListener);
sendJinglePacket(packet);
}
@Override
@ -227,13 +226,13 @@ public class JingleConnection {
mergeCandidate(candidate);
content.setCandidates(transportId, getCandidatesAsElements());
packet.setContent(content);
account.getXmppConnection().sendIqPacket(packet,responseListener);
sendJinglePacket(packet);
}
});
} else {
content.setCandidates(transportId, getCandidatesAsElements());
packet.setContent(content);
account.getXmppConnection().sendIqPacket(packet,responseListener);
sendJinglePacket(packet);
}
}
});
@ -250,8 +249,12 @@ public class JingleConnection {
return packet;
}
private void sendJinglePacket(JinglePacket packet) {
Log.d("xmppService",packet.toPrettyString());
account.getXmppConnection().sendIqPacket(packet,responseListener);
}
private void accept(JinglePacket packet) {
Log.d("xmppService","session-accept: "+packet.toString());
Content content = packet.getJingleContent();
mergeCandidates(JingleCandidate.parse(content.getCanditates()));
this.status = STATUS_ACCEPTED;
@ -286,66 +289,72 @@ public class JingleConnection {
private void connect() {
final SocksConnection connection = chooseConnection();
this.status = STATUS_TRANSMITTING;
final OnFileTransmitted callback = new OnFileTransmitted() {
@Override
public void onFileTransmitted(JingleFile file) {
if (responder.equals(account.getFullJid())) {
sendSuccess();
mXmppConnectionService.markMessage(message, Message.STATUS_SEND);
}
Log.d("xmppService","sucessfully transmitted file. sha1:"+file.getSha1Sum());
}
};
if (connection.isProxy()&&(connection.getCandidate().isOurs())) {
Log.d("xmppService","candidate "+connection.getCandidate().getCid()+" was our proxy and needs activation");
IqPacket activation = new IqPacket(IqPacket.TYPE_SET);
activation.setTo(connection.getCandidate().getJid());
activation.query("http://jabber.org/protocol/bytestreams").setAttribute("sid", this.getSessionId());
activation.query().addChild("activate").setContent(this.getCounterPart());
this.account.getXmppConnection().sendIqPacket(activation, new OnIqPacketReceived() {
if (connection==null) {
Log.d("xmppService","could not find suitable candidate");
this.disconnect();
this.status = STATUS_FAILED;
this.mXmppConnectionService.markMessage(this.message, Message.STATUS_SEND_FAILED);
} else {
this.status = STATUS_TRANSMITTING;
final OnFileTransmitted callback = new OnFileTransmitted() {
@Override
public void onIqPacketReceived(Account account, IqPacket packet) {
Log.d("xmppService","activation result: "+packet.toString());
if (initiator.equals(account.getFullJid())) {
Log.d("xmppService","we were initiating. sending file");
connection.send(file,callback);
} else {
connection.receive(file,callback);
Log.d("xmppService","we were responding. receiving file");
public void onFileTransmitted(JingleFile file) {
if (responder.equals(account.getFullJid())) {
sendSuccess();
mXmppConnectionService.markMessage(message, Message.STATUS_SEND);
}
Log.d("xmppService","sucessfully transmitted file. sha1:"+file.getSha1Sum());
}
});
} else {
if (initiator.equals(account.getFullJid())) {
Log.d("xmppService","we were initiating. sending file");
connection.send(file,callback);
};
if (connection.isProxy()&&(connection.getCandidate().isOurs())) {
Log.d("xmppService","candidate "+connection.getCandidate().getCid()+" was our proxy and needs activation");
IqPacket activation = new IqPacket(IqPacket.TYPE_SET);
activation.setTo(connection.getCandidate().getJid());
activation.query("http://jabber.org/protocol/bytestreams").setAttribute("sid", this.getSessionId());
activation.query().addChild("activate").setContent(this.getCounterPart());
this.account.getXmppConnection().sendIqPacket(activation, new OnIqPacketReceived() {
@Override
public void onIqPacketReceived(Account account, IqPacket packet) {
Log.d("xmppService","activation result: "+packet.toString());
if (initiator.equals(account.getFullJid())) {
Log.d("xmppService","we were initiating. sending file");
connection.send(file,callback);
} else {
connection.receive(file,callback);
Log.d("xmppService","we were responding. receiving file");
}
}
});
} else {
Log.d("xmppService","we were responding. receiving file");
connection.receive(file,callback);
if (initiator.equals(account.getFullJid())) {
Log.d("xmppService","we were initiating. sending file");
connection.send(file,callback);
} else {
Log.d("xmppService","we were responding. receiving file");
connection.receive(file,callback);
}
}
}
}
private SocksConnection chooseConnection() {
Log.d("xmppService","choosing connection from "+this.connections.size()+" possibilties");
SocksConnection connection = null;
Iterator<Entry<String, SocksConnection>> it = this.connections.entrySet().iterator();
while (it.hasNext()) {
Entry<String, SocksConnection> pairs = it.next();
SocksConnection currentConnection = pairs.getValue();
Log.d("xmppService","comparing candidate: "+currentConnection.getCandidate().toString());
//Log.d("xmppService","comparing candidate: "+currentConnection.getCandidate().toString());
if (currentConnection.isEstablished()&&(currentConnection.getCandidate().isUsedByCounterpart()||(!currentConnection.getCandidate().isOurs()))) {
Log.d("xmppService","is usable");
//Log.d("xmppService","is usable");
if (connection==null) {
connection = currentConnection;
} else {
if (connection.getCandidate().getPriority()<currentConnection.getCandidate().getPriority()) {
connection = currentConnection;
} else if (connection.getCandidate().getPriority()==currentConnection.getCandidate().getPriority()) {
Log.d("xmppService","found two candidates with same priority");
//Log.d("xmppService","found two candidates with same priority");
if (initiator.equals(account.getFullJid())) {
if (currentConnection.getCandidate().isOurs()) {
connection = currentConnection;
@ -359,11 +368,6 @@ public class JingleConnection {
}
}
it.remove();
}
if (connection!=null) {
Log.d("xmppService","chose candidate: "+connection.getCandidate().getHost());
} else {
Log.d("xmppService","couldn't find candidate");
}
return connection;
}
@ -373,8 +377,7 @@ public class JingleConnection {
Reason reason = new Reason();
reason.addChild("success");
packet.setReason(reason);
Log.d("xmppService","sending success. "+packet.toString());
this.account.getXmppConnection().sendIqPacket(packet, responseListener);
this.sendJinglePacket(packet);
this.disconnect();
this.status = STATUS_FINISHED;
this.mXmppConnectionService.markMessage(this.message, Message.STATUS_RECIEVED);
@ -391,28 +394,7 @@ public class JingleConnection {
this.status = STATUS_CANCELED;
this.mXmppConnectionService.markMessage(this.message, Message.STATUS_SEND_REJECTED);
}
/*private void openOurCandidates() {
for(JingleCandidate candidate : this.candidates) {
if (candidate.isOurs()) {
final SocksConnection socksConnection = new SocksConnection(this,candidate);
connections.put(candidate.getCid(), socksConnection);
socksConnection.connect(new OnSocksConnection() {
@Override
public void failed() {
Log.d("xmppService","connection to our candidate failed");
}
@Override
public void established() {
Log.d("xmppService","connection to our candidate was successful");
}
});
}
}
}*/
private void connectNextCandidate() {
for(JingleCandidate candidate : this.candidates) {
if ((!connections.containsKey(candidate.getCid())&&(!candidate.isOurs()))) {
@ -430,11 +412,13 @@ public class JingleConnection {
@Override
public void failed() {
Log.d("xmppService", "connection failed with "+candidate.getHost()+":"+candidate.getPort());
connectNextCandidate();
}
@Override
public void established() {
Log.d("xmppService", "established connection with "+candidate.getHost()+":"+candidate.getPort());
sendCandidateUsed(candidate.getCid());
if ((receivedCandidate)&&(status == STATUS_ACCEPTED)) {
connect();
@ -461,7 +445,7 @@ public class JingleConnection {
content.setUsedCandidate(this.transportId, cid);
packet.setContent(content);
Log.d("xmppService","send using candidate: "+cid);
this.account.getXmppConnection().sendIqPacket(packet,responseListener);
this.sendJinglePacket(packet);
this.sentCandidate = true;
}
@ -474,7 +458,7 @@ public class JingleConnection {
content.setCandidateError(this.transportId);
packet.setContent(content);
Log.d("xmppService","send candidate error");
this.account.getXmppConnection().sendIqPacket(packet,responseListener);
this.sendJinglePacket(packet);
this.sentCandidate = true;
}

View File

@ -69,7 +69,6 @@ public class SocksConnection {
inputStream.read(result);
int status = result[1];
if (status == 0) {
Log.d("xmppService", "established connection with "+candidate.getHost()+":"+candidate.getPort()+ "/" + destination);
isEstablished = true;
callback.established();
} else {

View File

@ -92,4 +92,22 @@ public class JinglePacket extends IqPacket {
public boolean isAction(String action) {
return action.equalsIgnoreCase(this.getAction());
}
public String toPrettyString() {
StringBuilder output = new StringBuilder();
output.append("["+getAction()+ " to:"+getTo()+" ");
if (this.content!=null) {
if (this.content.getUsedCandidate()!=null) {
output.append("used-candidate="+this.content.getUsedCandidate());
} else if (this.content.hasCandidateError()) {
output.append("candidate-error");
} else {
for(Element c : this.content.getCanditates()) {
output.append("["+c.getAttribute("host")+":"+c.getAttribute("port")+"]");
}
}
}
output.append("]");
return output.toString();
}
}