Package chatapp.Protocol

# Class SessionClavardage

java.lang.Object
java.lang.Thread
chatapp.Protocol.SessionClavardage

All Implemented Interfaces:
  `java.lang.Runnable`

    public class SessionClavardage
    extends java.lang.Thread

Classe représentant une session de clavardage.
La classe hérite de la classe Thread et dispose de 2 constructeurs selon que l'on initie une demande de session ou que l'on recoit une demande.
Elle possède en attribut:
- link: la socket associée à la session de clavardage
- u2: l'utilisateur avec lequel on communique
- out: le flux de donnees sortant
- in: le flux de donnees entrant
- pcs: Le PropertyChangeSupport permettant d'envoyer les notifications de MessageRecu et de FindeSession
- derniersMsg: la liste temporaire des derniers messages recus

## Nested Class Summary

## Nested classes/interfaces inherited from class java.lang.Thread

`java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler`

## Field Summary

### Fields inherited from class java.lang.Thread

`MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY`

## Constructor Summary

Constructors
Constructor | Description
--- | ---
`SessionClavardage​(Utilisateur u2, ChatApp app)` | Le constructeur associe a l'envoi d'une requete TCP, lorsque que l'on veut initier une session de clavardage avec un utilisateur connecte
`SessionClavardage​(java.net.Socket link, ChatApp app)` | Ce constructeur crée une session de clavardage quand on recoit une requete

## Method Summary

Modifier and Type | Method | Description
--- | --- | ---
`void` | `addPropertyChangeListener​(java.beans.PropertyChangeListener pcl)` | Permet aux PropertyChangeListener de s'abonner aux notifications des evenements
`void` | `arretSession()` | Methode permettant d'arreter cette session de clavardage et de prevenir l'autre utilisateur de la fin de la session
`void` | `envoiMsg​(java.lang.String msg)` | Methode transformant prenant un string pour le transmettre sous la forme d'un message horodate a l'utilisateur distant
`ChatApp` | `getApp()` | Getter : chatApp
`MessageHorodate` | `getDernierMsg()` | Methode permettant de recuperer le dernier message recu qui a ete mis dans la liste des messages recus.
`java.io.ObjectInputStream` | `getIn()` | Getter : In
`java.io.ObjectOutputStream` | `getOut()` | Getter : Out
`int` | `getSessionID()` | Getter : SessionID
`Utilisateur` | `getU2()` | Getter : Utilisateur 2
`void` | `initierSession()` | Methode permettant d'initier une session de clavardage et de prevenir l'autre utilisateur du debut de la session
`void` | `run()` | Methode lancee par le thread, permet de receptionner les messages horodates recus et d'agir en conséquence selon le type de message recu
`void` | `setApp​(ChatApp app)` | Setter : chatApp
`void` | `setIn​(java.io.ObjectInputStream in)` | Setter : In
`void` | `setLink​(java.net.Socket link)` | Setter : Link
`void` | `setOut​(java.io.ObjectOutputStream out)` | Setter : Out
`void` | `setU2​(Utilisateur u2)` | Setter : Utilisateur 2

### Methods inherited from class java.lang.Thread

`activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield`

### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### SessionClavardage

public SessionClavardage​(java.net.Socket link, ChatApp app)

Ce constructeur crée une session de clavardage quand on recoit une requete

Parameters:
  `link` - La socket associee a la requete TCP que l'on a recu
  `app` - L'instance de chatapp

### SessionClavardage

public SessionClavardage​(Utilisateur u2, ChatApp app)

Le constructeur associe a l'envoi d'une requete TCP, lorsque que l'on veut initier une session de clavardage avec un utilisateur connecte

Parameters:
  `u2` - L'utilisateur avec qui l'on souhaite démarrer une session de clavardage
  `app` - L'instance de chataap associee

## Method Details

### addPropertyChangeListener

public void addPropertyChangeListener​(java.beans.PropertyChangeListener pcl)
Permet aux PropertyChangeListener de s'abonner aux notifications des evenements

Parameters:
  `pcl` - Le PropertyListener qui souhaite s'abonner sur ce PropertyChangeSupport

### arretSession

public void arretSession()

Methode permettant d'arreter cette session de clavardage et de prevenir l'autre utilisateur de la fin de la session

### initierSession

public void initierSession()

Methode permettant d'initier une session de clavardage et de prevenir l'autre utilisateur du debut de la session

### envoiMsg

public void envoiMsg​(java.lang.String msg)
Methode transformant prenant un string pour le transmettre sous la forme d'un message horodate a l'utilisateur distant

Parameters:
  `msg` - Le texte du message à envoyer

### getDernierMsg

public MessageHorodate getDernierMsg()

Methode permettant de recuperer le dernier message recu qui a ete mis dans la liste des messages recus.
Utilisée par l'interface graphique qui a ete avertie grace au PropertyChangeSupport

Returns:
  Le dernier message horodate recu

### run

public void run()

Methode lancee par le thread, permet de receptionner les messages horodates recus et d'agir en conséquence selon le type de message recu

Specified by:
  `run` in interface `java.lang.Runnable`
Overrides:
  `run` in class `java.lang.Thread`

### getOut

public java.io.ObjectOutputStream getOut()
Getter : Out

Returns:
  Le flux d'ecriture des messages sortant

### setOut

public void setOut​(java.io.ObjectOutputStream out)
Setter : Out

Parameters:
  `out` - Le flux d'ecriture des messages sortant

### getIn

public java.io.ObjectInputStream getIn()
Getter : In

Returns:
  Le flux de lecture des messages entrant

### setIn

public void setIn​(java.io.ObjectInputStream in)
Setter : In

Parameters:
  `in` - Le flux de lecture des messages entrant

### setLink

public void setLink​(java.net.Socket link)
Setter : Link

Parameters:
  `link` - La Socket asscciee a la connexion TCP et donc a la session

### getApp

public ChatApp getApp()
Getter : chatApp

Returns:
  L'instance de chatApp

### setApp

public void setApp​(ChatApp app)
Setter : chatApp

Parameters:
  `app` - L'instance de chatApp

### getU2

public Utilisateur getU2()
Getter : Utilisateur 2

Returns:
  L'utilisateur avec lequel on communique

### setU2

public void setU2​(Utilisateur u2)
Setter : Utilisateur 2

Parameters:
  `u2` - L'utilisateur avec lequel on communique

### getSessionID

public int getSessionID()
Getter : SessionID

Returns:
  SessionID