}
public void run() {
try {
while(running) {
PacketWrapper wrapper = writeQueue.take();
Packet packet = wrapper.packet;
if(packet instanceof IQ) continue; // Ignore IQ packets ...
String logtarget = packet.getFrom();
if(wrapper.type == PacketWrapper.TYPE_SENT)
logtarget = packet.getTo();
PrintWriterWrapper stream = null;
if(logtarget != null) {
logtarget = StringUtils.parseBareAddress(logtarget);
Roster roster = conn.getRoster();
RosterEntry entry = null;
if(roster != null)
entry = roster.getEntry(logtarget);
if(entry == null)
stream = getPrintWriterForNoEntry(logtarget);
else
stream = getPrintWriterForEntry(logtarget);
} else {
stream = getPrintWriterFromMainHistory();
}
if(wrapper.type == PacketWrapper.TYPE_RECEIVED)
stream.print("<packet type=\"received\" date=\"");
else
stream.print("<packet type=\"sent\" date=\"");
stream.print(dateFormat.format(wrapper.date));
stream.print("\">");
stream.println(packet.toXML());
stream.println("</packet>");
}
} catch(InterruptedException e) {
e.printStackTrace();
closeAllWriter();