Strumenti Utente

Strumenti Sito


lpr-b-2007-2008:esercizi

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisione Revisione precedente
Prossima revisione
Revisione precedente
lpr-b-2007-2008:esercizi [04/12/2007 alle 22:20 (17 anni fa)]
Marco Danelutto
lpr-b-2007-2008:esercizi [19/09/2008 alle 14:08 (16 anni fa)] (versione attuale)
Linea 281: Linea 281:
   * codice della classe [[datagrampacket|DatagramPacket]]   * codice della classe [[datagrampacket|DatagramPacket]]
      
 +
 +
 +
  
  
Linea 298: Linea 301:
  
 Si faccia in modo che ciascuna delle operazioni dell'oggetto conto corrente prenda un certo tempo (per esempio 20 secondi) e si controlli, lanciando piu' clienti contemporaneamente che le operazioni avvengano effettivamente in mutua esclusione e rispettando la semantica propria di un contocorrente.  Si faccia in modo che ciascuna delle operazioni dell'oggetto conto corrente prenda un certo tempo (per esempio 20 secondi) e si controlli, lanciando piu' clienti contemporaneamente che le operazioni avvengano effettivamente in mutua esclusione e rispettando la semantica propria di un contocorrente. 
 +
 +
 +=== Soluzione proposta === 
 +  * Codice dell'[[interfacciaCC|interfaccia CC remoto]]
 +  * Codice del [[CCremoto|CC remoto]]
 +  * Codice del [[mainCCremote|main]] che pubblica l'oggetto remoto
 +  * Codice del [[clienteCC|cliente]]
 +
  
 ==== Asta RMI ==== ==== Asta RMI ====
 +Si realizzi un server che implementa il battitore di un'asta. Il server deve permettere la registrazione di un cliente   e l'esecuzione di un'offerta.  La registrazione del cliente comporta la registrazione di una callback che il battitore usa per comunicare una nuova offerta al cliente. 
 +Il cliente esegue un'offerta iniziale (per esempio prendendo il valore dell'offerta dalla riga di comando). Successivamente si mette in attesa. La callback scrive a schermo le offerte, man mano che queste avvengono. L'utente che decide di fare una nuova offerta la batte a terminale e di conseguenza il cliente la invia al battitore. 
 +
 +In particolare, si consideri che la callback deve essere rappresentata da un oggetto che implementa l'interfaccia:
 +<code java>
 +public interface ClientInterface extends Remote {
 + public void offertaAvvenuta(int howMuch) throws RemoteException; 
 +}
 +</code>
 +e l'oggetto battitore deve implementare l'interfaccia:
 +<code java>
 +public interface InterfacciaBattitore extends Remote {
 +
 + /** 
 + * used to make an offer. 
 + * @param name the name of who makes the offer
 + * @param howMuch the amount of the offer
 + * @return the current amount offered, 0 if the offer made is the currently accepted one
 + * @throws RemoteException
 + */
 + public int offer(String name, int howMuch) throws RemoteException;
 +
 + /**
 + * this is used to register the callback;
 + * @param name the name of who makes the offer
 + * @param cif
 + */
 + public void register(String name, ClientInterface cif) throws RemoteException; 
 +
 +}
 +</code>
 +Purchè il meccanismo delle callback venga implementato correttamente, si può trascurare di trattare la terminazione dell'asta.
 +
 +Il dettaglio del comportamento di client e server, nonchè del metodo che sull'oggetto remoto registra una nuova offerta, è dato dai flow chart che seguono.
 +
 +{{lpr-b:astarmi.jpg?600|}}
 +
 +=== Soluzione proposta === 
 +  * Interfaccia per l'[[callbackAsta|oggetto callback]]
 +  * Interfaccia del [[interfacciaBattitoreAsta|battitore]]
 +  * Codice del [[clienteAsta|cliente]] (//fa offerte random iniziali finchè una non risulta vincente, poi aspetta notifiche dal battitore (tramite la callback) e nuove offerte da effettuare dal terminale//)
 +  * Codice del [[battitoreAsta|battitore]]
 +  * Codice del [[mainBattitore|main]] che pubblica il battitore
 +
  
  ===============================  ===============================
 [[lpr-b:start|Torna alla pagina principale del corso]] [[lpr-b:start|Torna alla pagina principale del corso]]
lpr-b-2007-2008/esercizi.1196806854.txt.gz · Ultima modifica: 19/09/2008 alle 14:08 (16 anni fa) (modifica esterna)