public Message(MessageSujet sujet, Connection source, int id, bool enReception) { this.sujetMsg = sujet; this.connSource = source; this.typeMsg = MessageSujetToMessageType(sujetMsg); this.repondu = false; this.id = id; this.estEnvoyer = false; this.enReception = enReception; this.reponse = null; }
private void handleRequete(Message msg) { handler.onRequestReceived(msg); }
private void handleReponse(Message msg) { lock (reponses) { reponses.Add(msg.id, msg); } }
private void handleNotif(Message msg) { handler.onNotifReceived(msg); }
public Message creerMessage(Message.MessageSujet sujet) { switch(sujet) { case Message.MessageSujet.RequeteVolerJoueur: return new RequeteVoleur(sujet, this, generateId(), false); case Message.MessageSujet.RequeteConstructionColonie: case Message.MessageSujet.RequeteConstructionRoute: case Message.MessageSujet.RequeteConstructionVille: case Message.MessageSujet.RequeteDeplacerVoleur: return new RequetePosition(sujet, this, generateId(), false); case Message.MessageSujet.RequeteRejoindrePartie: return new RequeteRejoindrePartie(sujet, this, generateId(), false); case Message.MessageSujet.ReponseVoleur: case Message.MessageSujet.ReponseRes: return new ReponseRes(sujet, this, generateId(), false); case Message.MessageSujet.ReponseDe: return new ReponseDe(sujet, this, generateId(), false); case Message.MessageSujet.ReponseCarteDev: return new ReponseCarteDev(sujet, this, generateId(), false); case Message.MessageSujet.NotifMessage: return new NotifMessage(sujet, this, generateId(), false); case Message.MessageSujet.NotifJoueurAssigne: return new NotifJoueurAssigne(sujet, this, generateId(), false); case Message.MessageSujet.NotifPartieCreer: return new NotifPartieCreer(sujet, this, generateId(), false); case Message.MessageSujet.NotifColoniePlace: case Message.MessageSujet.NotifRoutePlace: case Message.MessageSujet.NotifVillePlace: case Message.MessageSujet.NotifVoleurDeplace: return new NotifAjoutElement(sujet, this, generateId(), false); case Message.MessageSujet.NotifPerteCarte: return new NotifPerteCarte(sujet, this, generateId(), false); case Message.MessageSujet.NotifDebutTour: return new NotifDebutTour(sujet, this, generateId(), false); default: return new Message(sujet, this, generateId(), false); } }
public Message attendreReponse(Message msg) { return listener.getReponse(msg.id); }
public void envoyer(Message msg) { //todo catch exception et call onConnectionClose(this) getSerializer().Serialize(strm, msg); }
public Message creerReponse(Message.MessageSujet sujet, Message msg) { /* todo Creer reponse du type aproprie */ Message reponse = creerMessage(sujet); reponse.setAsReponse(msg); return reponse; }
public void sendPosition(Message.MessageSujet sujet, Joueur j, int position) { NotifAjoutElement msg = (NotifAjoutElement)conn.creerMessage(sujet); msg.joueur = j; msg.position = position; msg.envoyer(); }
public void setAsReponse(Message request) { this.repondu = false; this.estEnvoyer = false; this.enReception = false; id = request.id; }
public void setAsReceived(Connection conn) { repondu = false; estEnvoyer = false; enReception = true; connSource = conn; reponse = null; }
/* * getReponse : Attend la reponse au messge et la retourne. Cache la reponse permettant ainsi d'etre appeler a plusieurs reprises. */ public Message getReponse() { if (typeMsg == MessageType.Notif || this.enReception ) { throw new InvalidOperationException("Attente de reponse sur une notification!"); } if (reponse == null) reponse = connSource.attendreReponse(this); return reponse; }
/* * repondre : Methode servant a envoyer le message par le biais de la connection qui l'a creer. */ public Message creerReponse(MessageSujet sujet) { if (reponse != null || !isStateValidForResponse()) { throw new InvalidOperationException("Etat invalide du message pour la reponse."); } reponse = connSource.creerReponse(sujet, this); return reponse; }
private void sendAllPosition(Message.MessageSujet sujet, Joueur j, int position) { foreach (ServeurJoueur sj in joueursEnAttente) { sj.sendPosition(sujet, j, position); } }