\hypertarget{classsrc_1_1usbDisk2_1_1UDisksBackend}{}\section{Référence de la classe src.\+usb\+Disk2.\+U\+Disks\+Backend}
\label{classsrc_1_1usbDisk2_1_1UDisksBackend}\index{src.\+usb\+Disk2.\+U\+Disks\+Backend@{src.\+usb\+Disk2.\+U\+Disks\+Backend}}


Cette classe a été inspirée par le projet U\+S\+Bcreator.  




Graphe d\textquotesingle{}héritage de src.\+usb\+Disk2.\+U\+Disks\+Backend\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=226pt]{classsrc_1_1usbDisk2_1_1UDisksBackend__inherit__graph}
\end{center}
\end{figure}
\subsection*{Fonctions membres publiques}
\begin{DoxyCompactItemize}
\item 
def \hyperlink{classsrc_1_1usbDisk2_1_1UDisksBackend_a7418c9a516194d6f7e7d75360639e732}{\+\_\+\+\_\+init\+\_\+\+\_\+}
\begin{DoxyCompactList}\small\item\em Le constructeur. \end{DoxyCompactList}\item 
def \hyperlink{classsrc_1_1usbDisk2_1_1UDisksBackend_aa0f2a8758b367e492a6dd45a5b2d76b1}{add\+Hook} (self, signal, func)
\begin{DoxyCompactList}\small\item\em ajoute une fonction à appeler pour un signal nommé, et enregistre cette fonction dans self.\+cb\+Hooks, après vérification de sa liste de paramètres. \end{DoxyCompactList}\item 
def \hyperlink{classsrc_1_1usbDisk2_1_1UDisksBackend_a7e8d9b8c420f8c842c99e1bdd28ea3b2}{retry\+\_\+mount}
\begin{DoxyCompactList}\small\item\em Essaie de monter un système de fichier jusqu\textquotesingle{}à ce qu\textquotesingle{}il cesse d\textquotesingle{}échouer avec \char`\"{}\+Busy\char`\"{}, ou que l\textquotesingle{}erreur soit \char`\"{}déjà monté\char`\"{}. \end{DoxyCompactList}\item 
def \hyperlink{classsrc_1_1usbDisk2_1_1UDisksBackend_a256f370a58ed5033b6a0822193195f4a}{detect\+\_\+devices} (self)
\begin{DoxyCompactList}\small\item\em Fait un inventaire des disques. \end{DoxyCompactList}\item 
def \hyperlink{classsrc_1_1usbDisk2_1_1UDisksBackend_aedd2fa479eee462059ad71ebbacfd62d}{obj\+Is\+Usb} (self, obj)
\begin{DoxyCompactList}\small\item\em détermine si un périphérique est de type U\+S\+B \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Attributs publics}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classsrc_1_1usbDisk2_1_1UDisksBackend_a14cb1c0251d039fad1d6e7b581f67274}{install\+\_\+thread}
\item 
\hyperlink{classsrc_1_1usbDisk2_1_1UDisksBackend_abe286670c6eb19d2c7dd4be21f59ec9c}{logger}
\item 
\hyperlink{classsrc_1_1usbDisk2_1_1UDisksBackend_a10a0c45f41280268bfb07b86005617ca}{disk\+Class}
\begin{DoxyCompactList}\small\item\em self.\+targets est un dictionnaire des disques détectés les clés sont les paths et les contenus des instances de disk\+Class \end{DoxyCompactList}\item 
\hyperlink{classsrc_1_1usbDisk2_1_1UDisksBackend_a3fbecb7bcc1d55c1c2046ffd53d47411}{targets}
\item 
\hyperlink{classsrc_1_1usbDisk2_1_1UDisksBackend_a1639654ad7f2c983d019425be09a093a}{modified}
\begin{DoxyCompactList}\small\item\em self.\+modified signifie une modification récente, à prendre en compte par une application au niveau utilisateur \end{DoxyCompactList}\item 
\hyperlink{classsrc_1_1usbDisk2_1_1UDisksBackend_a2216db504e9ef0fb0bd6fded1a90a897}{bus}
\item 
\hyperlink{classsrc_1_1usbDisk2_1_1UDisksBackend_abc6ccd9b12a51dccc1fbbb7e7468d39f}{udisks}
\item 
\hyperlink{classsrc_1_1usbDisk2_1_1UDisksBackend_a3ccdea24c9c226d0479e8c8b7bef84a1}{manager}
\item 
\hyperlink{classsrc_1_1usbDisk2_1_1UDisksBackend_a931d5db608afa59df65219803f51d013}{cb\+Hooks}
\end{DoxyCompactItemize}


\subsection{Description détaillée}
Cette classe a été inspirée par le projet U\+S\+Bcreator. 

Plusieurs modifications ont été faites au code original. Les fonctions de rappel ne tiennent compte que des périphériques U\+S\+B 

Définition à la ligne 111 du fichier usb\+Disk2.\+py.



\subsection{Documentation des constructeurs et destructeur}
\hypertarget{classsrc_1_1usbDisk2_1_1UDisksBackend_a7418c9a516194d6f7e7d75360639e732}{}\index{src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}!\+\_\+\+\_\+init\+\_\+\+\_\+@{\+\_\+\+\_\+init\+\_\+\+\_\+}}
\index{\+\_\+\+\_\+init\+\_\+\+\_\+@{\+\_\+\+\_\+init\+\_\+\+\_\+}!src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}}
\subsubsection[{\+\_\+\+\_\+init\+\_\+\+\_\+}]{\setlength{\rightskip}{0pt plus 5cm}def src.\+usb\+Disk2.\+U\+Disks\+Backend.\+\_\+\+\_\+init\+\_\+\+\_\+ (
\begin{DoxyParamCaption}
\item[{}]{self, }
\item[{}]{logger = {\ttfamily logging}, }
\item[{}]{disk\+Class = {\ttfamily object}}
\end{DoxyParamCaption}
)}\label{classsrc_1_1usbDisk2_1_1UDisksBackend_a7418c9a516194d6f7e7d75360639e732}


Le constructeur. 


\begin{DoxyParams}{Paramètres}
{\em logger} & un objet permettant de journaliser les messages ; par défaut il se confond avec le module logging \\
\hline
{\em disk\+Class} & la classe à utiliser pour créer des instances de disques \\
\hline
\end{DoxyParams}


Définition à la ligne 119 du fichier usb\+Disk2.\+py.



\subsection{Documentation des fonctions membres}
\hypertarget{classsrc_1_1usbDisk2_1_1UDisksBackend_aa0f2a8758b367e492a6dd45a5b2d76b1}{}\index{src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}!add\+Hook@{add\+Hook}}
\index{add\+Hook@{add\+Hook}!src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}}
\subsubsection[{add\+Hook}]{\setlength{\rightskip}{0pt plus 5cm}def src.\+usb\+Disk2.\+U\+Disks\+Backend.\+add\+Hook (
\begin{DoxyParamCaption}
\item[{}]{self, }
\item[{}]{signal, }
\item[{}]{func}
\end{DoxyParamCaption}
)}\label{classsrc_1_1usbDisk2_1_1UDisksBackend_aa0f2a8758b367e492a6dd45a5b2d76b1}


ajoute une fonction à appeler pour un signal nommé, et enregistre cette fonction dans self.\+cb\+Hooks, après vérification de sa liste de paramètres. 


\begin{DoxyParams}{Paramètres}
{\em signal} & une chaîne \\
\hline
{\em func} & une fonction \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Renvoie}
le résultat de l\textquotesingle{}appel à self.\+manager.\+connect(signal,func) 
\end{DoxyReturn}


Définition à la ligne 177 du fichier usb\+Disk2.\+py.

\hypertarget{classsrc_1_1usbDisk2_1_1UDisksBackend_a256f370a58ed5033b6a0822193195f4a}{}\index{src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}!detect\+\_\+devices@{detect\+\_\+devices}}
\index{detect\+\_\+devices@{detect\+\_\+devices}!src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}}
\subsubsection[{detect\+\_\+devices}]{\setlength{\rightskip}{0pt plus 5cm}def src.\+usb\+Disk2.\+U\+Disks\+Backend.\+detect\+\_\+devices (
\begin{DoxyParamCaption}
\item[{}]{self}
\end{DoxyParamCaption}
)}\label{classsrc_1_1usbDisk2_1_1UDisksBackend_a256f370a58ed5033b6a0822193195f4a}


Fait un inventaire des disques. 



Définition à la ligne 214 du fichier usb\+Disk2.\+py.



Voici le graphe d\textquotesingle{}appel pour cette fonction \+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classsrc_1_1usbDisk2_1_1UDisksBackend_a256f370a58ed5033b6a0822193195f4a_cgraph}
\end{center}
\end{figure}


\hypertarget{classsrc_1_1usbDisk2_1_1UDisksBackend_aedd2fa479eee462059ad71ebbacfd62d}{}\index{src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}!obj\+Is\+Usb@{obj\+Is\+Usb}}
\index{obj\+Is\+Usb@{obj\+Is\+Usb}!src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}}
\subsubsection[{obj\+Is\+Usb}]{\setlength{\rightskip}{0pt plus 5cm}def src.\+usb\+Disk2.\+U\+Disks\+Backend.\+obj\+Is\+Usb (
\begin{DoxyParamCaption}
\item[{}]{self, }
\item[{}]{obj}
\end{DoxyParamCaption}
)}\label{classsrc_1_1usbDisk2_1_1UDisksBackend_aedd2fa479eee462059ad71ebbacfd62d}


détermine si un périphérique est de type U\+S\+B 


\begin{DoxyParams}{Paramètres}
{\em obj} & un objet U\+Disks\+Object\+Proxy \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Renvoie}
vrai si c\textquotesingle{}est un périphérique U\+S\+B 
\end{DoxyReturn}


Définition à la ligne 276 du fichier usb\+Disk2.\+py.



Voici le graphe d\textquotesingle{}appel pour cette fonction \+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classsrc_1_1usbDisk2_1_1UDisksBackend_aedd2fa479eee462059ad71ebbacfd62d_cgraph}
\end{center}
\end{figure}




Voici le graphe des appelants de cette fonction \+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=241pt]{classsrc_1_1usbDisk2_1_1UDisksBackend_aedd2fa479eee462059ad71ebbacfd62d_icgraph}
\end{center}
\end{figure}


\hypertarget{classsrc_1_1usbDisk2_1_1UDisksBackend_a7e8d9b8c420f8c842c99e1bdd28ea3b2}{}\index{src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}!retry\+\_\+mount@{retry\+\_\+mount}}
\index{retry\+\_\+mount@{retry\+\_\+mount}!src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}}
\subsubsection[{retry\+\_\+mount}]{\setlength{\rightskip}{0pt plus 5cm}def src.\+usb\+Disk2.\+U\+Disks\+Backend.\+retry\+\_\+mount (
\begin{DoxyParamCaption}
\item[{}]{self, }
\item[{}]{fs, }
\item[{}]{timeout = {\ttfamily 5}, }
\item[{}]{retry\+Delay = {\ttfamily 0.3}}
\end{DoxyParamCaption}
)}\label{classsrc_1_1usbDisk2_1_1UDisksBackend_a7e8d9b8c420f8c842c99e1bdd28ea3b2}


Essaie de monter un système de fichier jusqu\textquotesingle{}à ce qu\textquotesingle{}il cesse d\textquotesingle{}échouer avec \char`\"{}\+Busy\char`\"{}, ou que l\textquotesingle{}erreur soit \char`\"{}déjà monté\char`\"{}. 

Échoue si l\textquotesingle{}erreur est autre que les deux précédentes. 
\begin{DoxyParams}{Paramètres}
{\em fs} & un système de fichier à monter \\
\hline
{\em timeout} & nombre de secondes d\textquotesingle{}attente au maximum \\
\hline
{\em retry\+Delay} & délai entre deux essais \\
\hline
\end{DoxyParams}


Définition à la ligne 194 du fichier usb\+Disk2.\+py.



Voici le graphe des appelants de cette fonction \+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classsrc_1_1usbDisk2_1_1UDisksBackend_a7e8d9b8c420f8c842c99e1bdd28ea3b2_icgraph}
\end{center}
\end{figure}




\subsection{Documentation des données membres}
\hypertarget{classsrc_1_1usbDisk2_1_1UDisksBackend_a2216db504e9ef0fb0bd6fded1a90a897}{}\index{src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}!bus@{bus}}
\index{bus@{bus}!src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}}
\subsubsection[{bus}]{\setlength{\rightskip}{0pt plus 5cm}src.\+usb\+Disk2.\+U\+Disks\+Backend.\+bus}\label{classsrc_1_1usbDisk2_1_1UDisksBackend_a2216db504e9ef0fb0bd6fded1a90a897}


Définition à la ligne 131 du fichier usb\+Disk2.\+py.

\hypertarget{classsrc_1_1usbDisk2_1_1UDisksBackend_a931d5db608afa59df65219803f51d013}{}\index{src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}!cb\+Hooks@{cb\+Hooks}}
\index{cb\+Hooks@{cb\+Hooks}!src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}}
\subsubsection[{cb\+Hooks}]{\setlength{\rightskip}{0pt plus 5cm}src.\+usb\+Disk2.\+U\+Disks\+Backend.\+cb\+Hooks}\label{classsrc_1_1usbDisk2_1_1UDisksBackend_a931d5db608afa59df65219803f51d013}


Définition à la ligne 134 du fichier usb\+Disk2.\+py.

\hypertarget{classsrc_1_1usbDisk2_1_1UDisksBackend_a10a0c45f41280268bfb07b86005617ca}{}\index{src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}!disk\+Class@{disk\+Class}}
\index{disk\+Class@{disk\+Class}!src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}}
\subsubsection[{disk\+Class}]{\setlength{\rightskip}{0pt plus 5cm}src.\+usb\+Disk2.\+U\+Disks\+Backend.\+disk\+Class}\label{classsrc_1_1usbDisk2_1_1UDisksBackend_a10a0c45f41280268bfb07b86005617ca}


self.\+targets est un dictionnaire des disques détectés les clés sont les paths et les contenus des instances de disk\+Class 



Définition à la ligne 124 du fichier usb\+Disk2.\+py.

\hypertarget{classsrc_1_1usbDisk2_1_1UDisksBackend_a14cb1c0251d039fad1d6e7b581f67274}{}\index{src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}!install\+\_\+thread@{install\+\_\+thread}}
\index{install\+\_\+thread@{install\+\_\+thread}!src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}}
\subsubsection[{install\+\_\+thread}]{\setlength{\rightskip}{0pt plus 5cm}src.\+usb\+Disk2.\+U\+Disks\+Backend.\+install\+\_\+thread}\label{classsrc_1_1usbDisk2_1_1UDisksBackend_a14cb1c0251d039fad1d6e7b581f67274}


Définition à la ligne 120 du fichier usb\+Disk2.\+py.

\hypertarget{classsrc_1_1usbDisk2_1_1UDisksBackend_abe286670c6eb19d2c7dd4be21f59ec9c}{}\index{src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}!logger@{logger}}
\index{logger@{logger}!src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}}
\subsubsection[{logger}]{\setlength{\rightskip}{0pt plus 5cm}src.\+usb\+Disk2.\+U\+Disks\+Backend.\+logger}\label{classsrc_1_1usbDisk2_1_1UDisksBackend_abe286670c6eb19d2c7dd4be21f59ec9c}


Définition à la ligne 121 du fichier usb\+Disk2.\+py.

\hypertarget{classsrc_1_1usbDisk2_1_1UDisksBackend_a3ccdea24c9c226d0479e8c8b7bef84a1}{}\index{src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}!manager@{manager}}
\index{manager@{manager}!src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}}
\subsubsection[{manager}]{\setlength{\rightskip}{0pt plus 5cm}src.\+usb\+Disk2.\+U\+Disks\+Backend.\+manager}\label{classsrc_1_1usbDisk2_1_1UDisksBackend_a3ccdea24c9c226d0479e8c8b7bef84a1}


Définition à la ligne 133 du fichier usb\+Disk2.\+py.

\hypertarget{classsrc_1_1usbDisk2_1_1UDisksBackend_a1639654ad7f2c983d019425be09a093a}{}\index{src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}!modified@{modified}}
\index{modified@{modified}!src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}}
\subsubsection[{modified}]{\setlength{\rightskip}{0pt plus 5cm}src.\+usb\+Disk2.\+U\+Disks\+Backend.\+modified}\label{classsrc_1_1usbDisk2_1_1UDisksBackend_a1639654ad7f2c983d019425be09a093a}


self.\+modified signifie une modification récente, à prendre en compte par une application au niveau utilisateur 

désactivé, quelquefois drive.\+get\+\_\+cached\+\_\+property(\textquotesingle{}Size\textquotesingle{}).get\+\_\+uint64() renvoie des résultats erronés juste après le branchement 

Définition à la ligne 128 du fichier usb\+Disk2.\+py.

\hypertarget{classsrc_1_1usbDisk2_1_1UDisksBackend_a3fbecb7bcc1d55c1c2046ffd53d47411}{}\index{src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}!targets@{targets}}
\index{targets@{targets}!src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}}
\subsubsection[{targets}]{\setlength{\rightskip}{0pt plus 5cm}src.\+usb\+Disk2.\+U\+Disks\+Backend.\+targets}\label{classsrc_1_1usbDisk2_1_1UDisksBackend_a3fbecb7bcc1d55c1c2046ffd53d47411}


Définition à la ligne 125 du fichier usb\+Disk2.\+py.

\hypertarget{classsrc_1_1usbDisk2_1_1UDisksBackend_abc6ccd9b12a51dccc1fbbb7e7468d39f}{}\index{src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}!udisks@{udisks}}
\index{udisks@{udisks}!src\+::usb\+Disk2\+::\+U\+Disks\+Backend@{src\+::usb\+Disk2\+::\+U\+Disks\+Backend}}
\subsubsection[{udisks}]{\setlength{\rightskip}{0pt plus 5cm}src.\+usb\+Disk2.\+U\+Disks\+Backend.\+udisks}\label{classsrc_1_1usbDisk2_1_1UDisksBackend_abc6ccd9b12a51dccc1fbbb7e7468d39f}


Définition à la ligne 132 du fichier usb\+Disk2.\+py.



La documentation de cette classe a été générée à partir du fichier suivant \+:\begin{DoxyCompactItemize}
\item 
src/\hyperlink{usbDisk2_8py}{usb\+Disk2.\+py}\end{DoxyCompactItemize}
