Class Client

java.lang.Object
  |
  +--Client

class Client
extends java.lang.Object

Realizza l'interfacciamento con l'utente implementando il protocollo Client-FrontEnd lato client.

Author:
Matteo Albini

Field Summary
private static int CLOSE
          Rappresenta l'intero corrispondente al comando relativo ad una chiusura volontaria dell'applicazione da parte dell'utente.
(package private)  java.io.ObjectInputStream inFeStream
          "ingresso" della socket, canale di comunicazione con il server FrontEnd.
(package private)  MsgHeader[] intestazioni
          Insieme delle intestazioni scaricate dal FE.
(package private)  java.io.BufferedReader inUserStream
          canale di comunicazione con l'utente.
(package private)  java.lang.String nome_utente
          Usata nel metodo interfacciaUtente(), contiene il nome inserito dall'utente come mittente dell'ultimo messaggio inviato.
(package private)  java.io.ObjectOutputStream outFeStream
          "uscita" della socket, canale di comunicazione con il server FrontEnd.
static int PORT
          Numero di porta per la comunicazione con il server FrontEnd.
 
Constructor Summary
(package private) Client()
           
 
Method Summary
(package private)  void closeAction()
          Invocato in caso di chiusura volontaria da parte dell'utente dell'applicazione.
(package private)  void errorAction(int errorType)
          Gestisce i casi d'errore.
(package private) static void FrontEndCaduto()
          Invocato in seguito a problemi di connessione verso il Front End.
(package private)  void getAction(MsgHeader header)
          Realizza la parte di protocollo Client-FrontEnd relativa ad una operazione di tipo GET.
(package private)  int inputGetAction()
          Interfaccia a caratteri, relativa al comando GET.
(package private)  int interfacciaUtente()
          Interfaccia a caratteri.
(package private)  void listAction()
          Realizza la parte di protocollo Client-FrontEnd relativa ad una operazione di tipo LIST.
static void main(java.lang.String[] args)
          Vengono aperti gli stream di connessione da\verso il FrontEnd, invocato il metodo interfacciaUtente() e quelli corrispondenti al comando inserito dall'utente.
(package private)  void putAction()
          Realizza la parte di protocollo Client-FrontEnd relativa ad una operazione di tipo PUT.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

PORT

public static final int PORT
Numero di porta per la comunicazione con il server FrontEnd.

outFeStream

java.io.ObjectOutputStream outFeStream
"uscita" della socket, canale di comunicazione con il server FrontEnd.

inFeStream

java.io.ObjectInputStream inFeStream
"ingresso" della socket, canale di comunicazione con il server FrontEnd.

inUserStream

java.io.BufferedReader inUserStream
canale di comunicazione con l'utente.

intestazioni

MsgHeader[] intestazioni
Insieme delle intestazioni scaricate dal FE.

nome_utente

java.lang.String nome_utente
Usata nel metodo interfacciaUtente(), contiene il nome inserito dall'utente come mittente dell'ultimo messaggio inviato.

CLOSE

private static final int CLOSE
Rappresenta l'intero corrispondente al comando relativo ad una chiusura volontaria dell'applicazione da parte dell'utente. Affinche' ad ogni comando corrisponda univocamente un intero, il suo valore fa riferimento al numero di comandi presenti nella classe Comando.
Constructor Detail

Client

Client()
Method Detail

listAction

void listAction()
Realizza la parte di protocollo Client-FrontEnd relativa ad una operazione di tipo LIST. In seguito ad una richiesta di tale servizio, vengono visualizzate su standard-output le intestazioni dei messaggi MsgHeader presenti nel sistema, rispettando l'ordine con cui essi sono stati postati. Tali intestazioni vengone presentate all'utente una alla volta (il protocollo Client-FrontEnd e' stato realizzato per soddisfare tale requisito), affinche' non debba rimanere troppo in attesa della lista totale.
See Also:
interfacciaUtente()

getAction

void getAction(MsgHeader header)
Realizza la parte di protocollo Client-FrontEnd relativa ad una operazione di tipo GET. Tale servizio, permette all'utente di ottenere (stampata su standard-output)il corpo di un messaggio MsgBodyla cui intestazione (con il corrispondente numero identificativo) deve essere stata visualizzata in almeno una precente richiesta (in seguito alla richiesta di una LIST listAction().
See Also:
inputGetAction()

putAction

void putAction()
Realizza la parte di protocollo Client-FrontEnd relativa ad una operazione di tipo PUT. Tale servizio, permette all'utente di "postare" un messaggio, il quale puo' comprendere il nome del mittente e l'oggetto del messaggio. Queste ultime informazioni fanno parte dell'intestazione MsgHeader, che accompagna il "corpo" del messaggio stesso. L'operazione si considera terminata con successo non appena il FrontEnd comunica al Client che il messaggio e' stato postato con successo. L'utente in attesa viene quindi informato di eventuali problemi e invitato a ritentare l'operazione. Interfacciamento con l'utente per la realizzazione di un oggetto Messaggio da inviare al FrontEnd.

closeAction

void closeAction()
Invocato in caso di chiusura volontaria da parte dell'utente dell'applicazione.

errorAction

void errorAction(int errorType)
Gestisce i casi d'errore.
Parameters:
errorType - identifica il tipo di errore che si è verificato.

FrontEndCaduto

static void FrontEndCaduto()
Invocato in seguito a problemi di connessione verso il Front End. Provoca la terminazione dell'applicazione.

interfacciaUtente

int interfacciaUtente()
Interfaccia a caratteri. Acquisisce da standard input una stringa corrispondente al comando richiesto dall'utente. Nel caso in cui non venga riconosciuto un comando, l'utente viene invitato a reinserire una stringa adeguata. In seguito all'inserimento di un <?> si fornisce nuovamente all'utente la lista dei comandi disponibili. Come nome comando l'utente puo' inserire una delle stringhe suggerite o la corrispondente lettera iniziale (indifferentemente in maiuscolo o minuscolo).
Returns:
un intero corrispondente ad un comando fornito dal sitema Comando.

inputGetAction

int inputGetAction()
Interfaccia a caratteri, relativa al comando GET. Acquisisce da standard input un intero che identifica il messaggio da visualizzare. Per ottenere tale servizio, l'utente viene invitato (nel caso non l'abbia gia' fatto almeno una volta) a richiedere la lista nelle intestazioni dei messaggi presenti. Una volta accettato tale comando, viene visualizzata nuovamente la lista delle intestazioni (gia' presente sul lato client) in modo tale che l'utente possa digitare il numero corrispondente al messaggio da scaricare.
Returns:
un intero che identifica il messaggio da visualizzare.

main

public static void main(java.lang.String[] args)
                 throws java.io.IOException
Vengono aperti gli stream di connessione da\verso il FrontEnd, invocato il metodo interfacciaUtente() e quelli corrispondenti al comando inserito dall'utente. L'interazione con l'utente (e quindi l'applicazione) termina in caso di problemi di connessione verso il FrontEnd o a valle del FrontEnd, o in caso di terminazione volontaria da parte dell'utente. Quest'ultima puo' avvenire in seguito alla richiesta di una CLOSE o all'inserimento di un <CTRL+C>.