Browse Source

doc pour le dév

Citnop 3 years ago
parent
commit
523d384cfd
1 changed files with 82 additions and 4 deletions
  1. 82 4
      doc/user_manual_dev_handbook.tex

+ 82 - 4
doc/user_manual_dev_handbook.tex

@@ -724,16 +724,55 @@ utilisateur créé, installer les logiciels suivant :\\
724 724
 Télécharger nfdump :\\
725 725
 \ad{wget -c "https://sourceforge.net/projects/nfdump/files/stable/nfdump-1.6.13/\textbackslash{}\\nfdump-1.6.13.tar.gz/download" -O nfdump-1.6.13.tar.gz}\\
726 726
 Compiler nfdump :\\
727
-\ad{./configure \&\& make}
727
+\ad{./configure \&\& make}\\
728 728
 Installer nfdump :\\
729 729
 \su{make install}
730 730
 
731 731
 
732 732
 
733
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
734 733
 
734
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
735
+\part{Architecture du projet}
736
+\setcounter{section}{0}
737
+\renewcommand*{\theHsection}{chX.\the\value{section}}
738
+
739
+\section{Architecture générale}
740
+
741
+Le projet YaPLog est composé de plusieurs parties réalisant chacune une étape 
742
+du processus de transformation de la donnée telle que fournie par l'opérateur
743
+au résultat final (graph, CSV, saturations...) :
744
+\begin{enumerate}
745
+    \item La première étape consiste à extraire l'archive. On utilise \texttt{unzip}.
746
+    \item La seconde partie consiste transformer les fichiers binaires de 
747
+        l'archive en texte \ski{}. On utilise \texttt{nfdump}.
748
+    \item La troisième partie consiste à réunir les fichiers \ski{} en un seul 
749
+        (temps de traintement de 96 fichiers légèrement plus long que celui 
750
+        d'un seul résultat). On utilise \texttt{/bin/cat}.
751
+\end{enumerate}
752
+
753
+On réalise ensuite les étapes suivantes :
754
+
755
+\section{Pré-parser \texttt{acsvify}}
756
+
757
+\subsection{Principe}
735 758
 
759
+On pré-parse le fichier \ski{} généré et concaténé pour le rendre plus léger, 
760
+et plus normalisé, pour être plus facilement lisible par un programme.
736 761
 
762
+Le pré-parser est une spécification flex très rapide qui effectue des 
763
+substitutions et des suppressions. Le fichier sortie au format CSV 
764
+fait environ 70\% du fichier \ski{} initial.
765
+
766
+\subsection{Code}
767
+
768
+\begingroup
769
+\lstinputlisting[language=C,caption={Spécification Flex pour le pré-parser --- \texttt{acsvify.flex}}]{../preparser/acsvify.l}
770
+\endgroup
771
+
772
+
773
+\section{Parser \texttt{graphEchantTabl}}
774
+
775
+\subsection{Schéma de principe}
737 776
 
738 777
 \begin{center}
739 778
     \begin{figure}[!ht]
@@ -746,10 +785,10 @@ Installer nfdump :\\
746 785
             \node[bblock, right of=disque1, node distance=4cm](lecteur){Thread \\ lecteur};
747 786
             \node[bblock, below of=lecteur](worker2){Thread \\ worker 2};
748 787
             \node[bblock, left of=worker2, node distance=2.5cm](worker1){Thread \\ worker 1};
749
-            \node[bblock, right of=worker2, node distance=4cm](worker3){Thread \\ worker i};
788
+            \node[bblock, right of=worker2, node distance=4cm](worker3){Thread \\ worker \texttt{i}};
750 789
             \node[bblock, below of=worker2](ecrivain){Thread \\ écrivain};
751 790
             \node[wblock, right of=ecrivain, node distance=4cm](disque2){Disque};
752
-            \node[bblock, right of=worker3, node distance=4cm](worker4){Thread \\ worker n};
791
+            \node[bblock, right of=worker3, node distance=4cm](worker4){Thread \\ worker \texttt{n}};
753 792
             %
754 793
             \path[line](disque1)-- node{stdin}(lecteur);
755 794
             \path[line](lecteur)-- node {\texttt{fileQ} : file de lignes}(worker2);
@@ -767,13 +806,52 @@ Installer nfdump :\\
767 806
     \end{figure}
768 807
 \end{center}
769 808
 
809
+\subsection{Description}
770 810
 
811
+La parser possède un thread lecteur qui va lire les entrée du fichier CSV 
812
+dans la \texttt{std::queue<std::string> fileQ} protégée par le mutex 
813
+\texttt{pthread\_mutex\_t fileQmutex}.
771 814
 
815
+Le parser admet un paramètre \texttt{int nbWorkerThread} qui correspond au 
816
+nombre \texttt{n} de thread travaillant. sur la donnée dans la \texttt{fileQ}.
772 817
 
818
+Enfin le thread écrivain finalise les travail des threads workers avec leurs 
819
+résultats, puis écrit un CSV résultat sur disque.
773 820
 
821
+\subsection{Codes}
774 822
 
823
+\begingroup
824
+\lstinputlisting[language={[gnu] make},caption={Le Makefile --- \texttt{Makefile}}]{../cpp/Makefile}
825
+\endgroup
775 826
 
776 827
 
828
+\begingroup
829
+\lstinputlisting[language=C++,caption={programme principal --- \texttt{main.cpp}}]{../cpp/main.cpp}
830
+\endgroup
831
+
832
+
833
+\begingroup
834
+\lstinputlisting[language=C++,caption={\texttt{Data.hpp} --- Journée échantillonée}]{../cpp/Data.hpp}
835
+\endgroup
836
+
837
+
838
+\begingroup
839
+\lstinputlisting[language=C++,caption={\texttt{Packet.hpp} --- Représentation d'un Flow}]{../cpp/Packet.hpp}
840
+\endgroup
841
+
842
+
843
+\begingroup
844
+\lstinputlisting[language=C++,caption={\texttt{Traffic.hpp} --- Liste de Flow selon un critère source ou destination}]{../cpp/Traffic.hpp}
845
+\endgroup
846
+
847
+
848
+
849
+
850
+
851
+
852
+
853
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
854
+
777 855
 
778 856
 
779 857
 \end{document}