Salut,
J'ai un problème de conception avec une application.
J'ai un controleur et un objet qui fait l'interface avec le serveur.
Le controleur a une méthode boolean login(); qui permet de se loguer. (Sa signature ne peut pas être changée)
En gros, voici mes classes
	
	1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
   | class controller {
 
  Server s;
 
  boolean login() {
    s.sendMessage(...);
    wait();
    return (connecté ou non)
 }
 
  void receiveMessageFromServer(String message) {
    // Traitement du message
    Si le message a trait avec le login:
    notify();
    // D'autres types de messages peuvent arriver
  }
}
 
class Server {
Socket s....
void sendMessage() {
    s. send(...);
}
 
Server() {
  new Thread([...]);
  // Ce thread lit tout ce qui vient du serveur et appelle controller.receiveMessageFromServer();
}
 
} | 
 
Mon but est donc de bloquer l'execution de login() tant que je n'ai pas reçu de réponse.
Si je lance mon code, j'ai une erreur :
	
	10-05 16:12:22.970: ERROR/AndroidRuntime(842): java.lang.IllegalMonitorStateException: object not locked by thread before wait()
 Comment faire pour bloquer ma methode login() en attendant une réponse ? (et dans l'idéal, les autres messages devraient pouvoir être traités en attendant)
Je développe pour Android, mais je ne pense pas que ça ait un rapport.
Merci pour votre aide.
						
					
Partager