Move architecture.md in rapport
This commit is contained in:
parent
1f8462b7c6
commit
5b367eafe8
2 changed files with 71 additions and 14 deletions
|
@ -1,14 +0,0 @@
|
|||
# Architecture fonctionnelle de l'application
|
||||
|
||||
```
|
||||
Client 1 Serveur
|
||||
-------- send ------- push pop
|
||||
Sender ---------------> ClientListener_1 --------> MessageBuffer <------- Dispatcher
|
||||
Listener parse : - get client_n
|
||||
| - get message
|
||||
|
|
||||
Client n | push
|
||||
-------- |
|
||||
Sender send pop v
|
||||
Listener <------------- ClientSender_n ----------------------------------> ClientPipe_n
|
||||
```
|
71
rapport.tex
71
rapport.tex
|
@ -22,5 +22,76 @@
|
|||
\tableofcontents
|
||||
\clearpage
|
||||
|
||||
\section{Description du projet, objectifs}
|
||||
|
||||
Cette application multitâches, codée en C, est une illustration sur un cas concret des problématiques liées à~:
|
||||
|
||||
\begin{itemize}
|
||||
\item la synchronisation d'une application client/serveur
|
||||
\item l'exclusion mutuelle
|
||||
\item l'interblocage de processus
|
||||
\end{itemize}
|
||||
|
||||
Il s'agit d'une application de messagerie instantanée qui permet à plusieurs utilisateurs de communiquer par l'intermédiaire d'un serveur.
|
||||
|
||||
\section{Architecture fonctionnelle}
|
||||
|
||||
Le projet est composé de deux exécutables~:
|
||||
|
||||
\begin{enumerate}
|
||||
|
||||
\item \texttt{server}, qui utilise plusieurs threads~:
|
||||
|
||||
\begin{itemize}
|
||||
\item \texttt{Dispatcher}~: gère le parsing des messages et le routage vers les bonnes fonctions et les bons clients.
|
||||
\item \texttt{ClientListener}~: est à l'écoute des messages entrants.
|
||||
\item \texttt{ClientSender}~: envoie les messages au client.
|
||||
\end{itemize}
|
||||
|
||||
Le serveur crée une instance de \texttt{ClientListener} et une instance de \texttt{ClientSender} par client connecté.
|
||||
|
||||
\item \texttt{client}, composé de deux processus~:
|
||||
|
||||
\begin{itemize}
|
||||
\item \texttt{Listener}~: est à l'écoute des messages en provenance du serveur, les imprime sur la sortie standard.
|
||||
\item \texttt{Sender}~: lit les messages sur l'entrée standard et les envoie au serveur.
|
||||
\end{itemize}
|
||||
|
||||
\end{enumerate}
|
||||
|
||||
Les fonctionnalités de haut niveau peuvent être schématisées de la manière suivante~:
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
\node[rectangle,fill=purple!20,thick,text depth=2cm,text width=2cm] (client1) at (-5,1) {\large Client$_1$};
|
||||
\node[text width=2cm,align=right] (sender1) at (-5,0.5) {Sender};
|
||||
\node[text width=2cm,align=right] (listener1) at (-5,0) {Listener};
|
||||
|
||||
\node[rectangle,fill=purple!20,thick,text depth=2cm,text width=2cm] (clientn) at (-5,-3) {\large Client$_n$};
|
||||
\node[text width=2cm,align=right] (sendern) at (-5,-3.5) {Sender};
|
||||
\node[text width=2cm,align=right] (listenern) at (-5,-4) {Listener};
|
||||
|
||||
\node[rectangle,fill=blue!20,thick,text depth=7cm,text width=8.8cm] (server) at (3,-1) {\large Serveur};
|
||||
\node (clientlistener1) at (0,0.5) {ClientListener$_1$};
|
||||
\node (clientsendern) at (0,-4) {ClientSender$_n$};
|
||||
|
||||
\node[rectangle,draw] (messagebuffer) at (5,0.5) {MessageBuffer};
|
||||
\node[rectangle,draw] (dispatcher) at (5,-1.5) {\parbox{4cm}{%
|
||||
Dispatcher
|
||||
\begin{itemize}
|
||||
\item parse message
|
||||
\item get client$_n$
|
||||
\end{itemize}
|
||||
}};
|
||||
\node[rectangle,draw] (clientpipen) at (5,-4) {ClientPipe$_n$};
|
||||
|
||||
\draw[-latex] (sender1) -- (clientlistener1) node[above,midway]{\small send};
|
||||
\draw[-latex] (clientlistener1) -- (messagebuffer) node[above,midway]{\small push};
|
||||
\draw[-latex] (dispatcher) -- (messagebuffer) node[right,midway]{\small pop};
|
||||
\draw[-latex] (dispatcher) -- (clientpipen) node[right,midway]{\small push};
|
||||
\draw[-latex] (clientsendern) -- (clientpipen) node[above,midway]{\small pop};
|
||||
\draw[-latex] (clientsendern) -- (listenern) node[above,midway]{\small send};
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
\end{document}
|
||||
|
|
Loading…
Reference in a new issue