PDA

View Full Version : [java] introdurre un ritardo per la lettura dei contatti


afsdfdlecosdfsfdcco
23-09-2007, 14:42
Allora, sto realizzando un semplice client jabber in java usando la libreria SMACK ma ho trovato un problemino...

Il codice è questo:

connection = new XMPPConnection(data.getServer());
connection.connect();

connection.login(data.getUsername(), data.getPassword());


roster = connection.getRoster(); // ottengo la lista contatti

System.out.println("numero utenti: " + roster.getEntryCount());

// itero i singoli utenti
Iterator<RosterEntry> iter = roster.getEntries().iterator();
while (iter.hasNext())
{
RosterEntry entry = (RosterEntry) iter.next();

String user = entry.getUser();
Presence presence = roster.getPresence(user);

if (presence.isAvailable())
{
System.out.println(user + " e' online");
}
else
{

System.out.println(user + " e' offline");
}
}

Dopo il login ottengo la lista contatti e controllo uno per uno lo stato. Il problema è che la lista la ottengo subito mentre lo stato arriva dopo!

Mi spiego meglio: con questo codice i contatti jabber li vedo TUTTI OFFLINE (anche se non è vero). Se pero' metto 4 o 5 secondi di sleep subito dopo "roster = connection.getRoster();" i contatti online vengono visti correttamente.

Ora. Come posso fare per "bloccare" il programma mentre aspetto che tutti gli stati dei contatti vengano rilevati correttamente?

Grazie 1000 :)