next up previous
Next: Parte IX: un server Up: Descrizione del laboratorio Previous: Parte VII: creiamo un


Parte VIII: un server per più chat room

Si estenda il server realizzato sino ad ora in modo da permettere la gestionee più di chat room. L'utente durante attraverso il comando GetIntoRoomCRC specifica la stanza in cui vuole entrare, a tal fine si aggiunga un opportuno campo al suo costruttore.

Un modo semplice per realizare questa parte è quella di sostituire la definizione del campo chatRoom di tipo ChatRoom nella classe CharRoomServer (si veda la Sezione 2.6.2) con un campo chatRoom di tipo ChatRoom[]. All'avvio il server crea un certo numero definito di chat alle quali gli utenti potranno collegarsi. Si può quindi sostituire il prototipo del metodo execCRC dell'interfaccia ChatRoomCommand con questo nuovo:

public Message execCRC(ChatRoom[] chatRoom, Object opt_param);
e modificare di conseguenza le implementazioni del metodo execCRC neii vari comandi. Per esempio, la classe Send2AllCRC potrebbe essere modificata nel seguente modo:
public class Send2AllCRC implements ChatRoomCommand {
    private Message2All message;
    ...
    public Send2AllCRC(Message4All message) {
       this.message = message;
    }
    public ... get...
    public void set...
    public Message execCRC(ChatRoom[] chatRoom, Object opt_param) {
       Message answer = new Message();
       answer.setFrom(chatRoom.chatRoomName());
       try {
           // `i' e` inizializzato con la chat room a cui l'utente e` collegato
           chatRoom[i].send2All(message);
           answer.setMessageText(``Send2AllCRC done!'');
       } catch (ChatRoomException err) {
           answer.setMessageText(``Send2AllCRC failed: '' + err.getMessage());
       }           
       return answer;
    }
}
Ed in modo analogo tutti gli altri comandi. Per inizializzare la variabile `i' si può procedere in due modi:
  1. o cerco a quale stanza è iscritto all'utente;
  2. o passo tale informazione direttamente al comando quando l'utente lo crea (passandogli il nome della chat room) e quindi vedo sul server a quale numero corrisponde.
Altre soluzioni sono le benvenute.


next up previous
Next: Parte IX: un server Up: Descrizione del laboratorio Previous: Parte VII: creiamo un
Baldoni Matteo 2003-05-08