\hypertarget{mw__srvc__ft_8h}{
\section{mw\_\-srvc\_\-ft.h File Reference}
\label{mw__srvc__ft_8h}\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}}
}


\subsection{Detailed Description}
A file transfer is a simple way to get large chunks of binary data from one client to another. 



{\tt \#include \char`\"{}mw\_\-common.h\char`\"{}}\par
\subsection*{Data Structures}
\begin{CompactItemize}
\item 
struct \hyperlink{structmwFileTransferHandler}{mwFileTransferHandler}
\end{CompactItemize}
\subsection*{Defines}
\begin{CompactItemize}
\item 
\#define \hyperlink{mw__srvc__ft_8h_9546cfa89e4e7842d510024ca00acf6f}{mwFileTransfer\_\-cancel}(ft)~mwFileTransfer\_\-close((ft), mwFileTransfer\_\-SUCCESS);
\begin{CompactList}\small\item\em cancel an open file transfer \item\end{CompactList}\item 
\#define \hyperlink{mw__srvc__ft_8h_eb93cb4ce77fea1c88e0da9cdeb530c7}{mwFileTransfer\_\-getSent}(ft)~(mwFileTransfer\_\-getFileSize(ft) - mwFileTransfer\_\-getRemaining(ft))
\begin{CompactList}\small\item\em count of bytes sent/received over this file transfer so far \item\end{CompactList}\item 
\#define \hyperlink{mw__srvc__ft_8h_136432fd1b7ce18c2538302a3155a545}{mwFileTransfer\_\-isCancelLocal}(ft)~mwFileTransfer\_\-isState((ft), mwFileTransfer\_\-CANCEL\_\-LOCAL)
\item 
\#define \hyperlink{mw__srvc__ft_8h_f5454a7c88d60cee0d33a3ae0fad9e7f}{mwFileTransfer\_\-isCancelRemote}(ft)~mwFileTransfer\_\-isState((ft), mwFileTransfer\_\-CANCEL\_\-REMOTE)
\item 
\#define \hyperlink{mw__srvc__ft_8h_1402a81bc5446a5bd07a5e84eff1b966}{mwFileTransfer\_\-isDone}(ft)~mwFileTransfer\_\-isState((ft), mwFileTransfer\_\-DONE)
\item 
\#define \hyperlink{mw__srvc__ft_8h_d1a67cc3e86ddecab2d252427e5e5a03}{mwFileTransfer\_\-isNew}(ft)~mwFileTransfer\_\-isState((ft), mwFileTransfer\_\-NEW)
\item 
\#define \hyperlink{mw__srvc__ft_8h_18bcede407a34ade87fcb1d5466a05ee}{mwFileTransfer\_\-isOpen}(ft)~mwFileTransfer\_\-isState((ft), mwFileTransfer\_\-OPEN)
\item 
\#define \hyperlink{mw__srvc__ft_8h_9afa7586b1aabab66cd8d2091bca4da7}{mwFileTransfer\_\-isPending}(ft)~mwFileTransfer\_\-isState((ft), mwFileTransfer\_\-PENDING)
\item 
\#define \hyperlink{mw__srvc__ft_8h_e704530c78547cee3181bf56ab7bcb91}{mwFileTransfer\_\-isState}(ft, \hyperlink{structmwService_b5adc0f5a0cbeddaece7a4512ec66099}{state})~(mwFileTransfer\_\-getState(ft) == (\hyperlink{structmwService_b5adc0f5a0cbeddaece7a4512ec66099}{state}))
\item 
\#define \hyperlink{mw__srvc__ft_8h_7d44f8414c67a8dd5472a01c56432bf2}{mwFileTransfer\_\-reject}(ft)~mwFileTransfer\_\-close((ft), mwFileTransfer\_\-REJECTED)
\begin{CompactList}\small\item\em reject an incoming file transfer \item\end{CompactList}\item 
\#define \hyperlink{mw__srvc__ft_8h_85c063258700af8dc22871d051e4e101}{mwService\_\-FILE\_\-TRANSFER}~0x00000038
\end{CompactItemize}
\subsection*{Enumerations}
\begin{CompactItemize}
\item 
enum \hyperlink{mw__srvc__ft_8h_8af13a1733efdb6ce88f035ed3dbeb8d}{mwFileTranferCode} \{ \par
\hyperlink{mw__srvc__ft_8h_8af13a1733efdb6ce88f035ed3dbeb8d65dff6000a1cbdeff12811e203bfaafc}{mwFileTransfer\_\-SUCCESS} =  0x00000000, 
\par
\hyperlink{mw__srvc__ft_8h_8af13a1733efdb6ce88f035ed3dbeb8d5c61a5dcbd92e60f515ad9fa3a2a9829}{mwFileTransfer\_\-REJECTED} =  0x08000606
 \}
\item 
enum \hyperlink{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc}{mwFileTransferState} \{ \par
\hyperlink{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc26679daf78859740399f8a6425c596c6}{mwFileTransfer\_\-NEW}, 
\par
\hyperlink{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc0955a56b3ea99e5e074c57bd68837550}{mwFileTransfer\_\-PENDING}, 
\par
\hyperlink{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc52a2582eaf7b494571b1e59bb4286f4d}{mwFileTransfer\_\-OPEN}, 
\par
\hyperlink{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc4c7bd39dfdb511ca044efed6ed07c7e0}{mwFileTransfer\_\-CANCEL\_\-LOCAL}, 
\par
\hyperlink{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfcbe34026724b799516305d7debebb5436}{mwFileTransfer\_\-CANCEL\_\-REMOTE}, 
\par
\hyperlink{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc895e247fd66dcbbb8b8e4ea7f383bc0c}{mwFileTransfer\_\-DONE}, 
\par
\hyperlink{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc9bce3d3b93e78978898757c377e3cc17}{mwFileTransfer\_\-ERROR}, 
\par
\hyperlink{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc00c61a63716a529570533ff6c40e67e4}{mwFileTransfer\_\-UNKNOWN}
 \}
\end{CompactItemize}
\subsection*{Functions}
\begin{CompactItemize}
\item 
int \hyperlink{mw__srvc__ft_8h_306ca7b808d11d01a777a7d2daaad865}{mwFileTransfer\_\-accept} (struct \hyperlink{structmwFileTransfer}{mwFileTransfer} $\ast$ft)
\begin{CompactList}\small\item\em accept an incoming file transfer \item\end{CompactList}\item 
int \hyperlink{mw__srvc__ft_8h_859819c4aa699fbf78ae563ab2559b04}{mwFileTransfer\_\-ack} (struct \hyperlink{structmwFileTransfer}{mwFileTransfer} $\ast$ft)
\begin{CompactList}\small\item\em acknowledge the receipt of a chunk of data from an inbound file transfer. \item\end{CompactList}\item 
int \hyperlink{mw__srvc__ft_8h_dc7a5ebdbffd7dc3421c127ef052ff15}{mwFileTransfer\_\-close} (struct \hyperlink{structmwFileTransfer}{mwFileTransfer} $\ast$ft, guint32 code)
\begin{CompactList}\small\item\em Close a file transfer. \item\end{CompactList}\item 
void \hyperlink{mw__srvc__ft_8h_ecbc5a6ed545d960c19883397ca786af}{mwFileTransfer\_\-free} (struct \hyperlink{structmwFileTransfer}{mwFileTransfer} $\ast$ft)
\begin{CompactList}\small\item\em deallocate a file transfer. \item\end{CompactList}\item 
gpointer \hyperlink{mw__srvc__ft_8h_696299ead4906360fec8eb1ce99e0889}{mwFileTransfer\_\-getClientData} (struct \hyperlink{structmwFileTransfer}{mwFileTransfer} $\ast$ft)
\item 
const char $\ast$ \hyperlink{mw__srvc__ft_8h_dc8153089707277a37d53078bb43f48c}{mwFileTransfer\_\-getFileName} (struct \hyperlink{structmwFileTransfer}{mwFileTransfer} $\ast$ft)
\begin{CompactList}\small\item\em the publicized file name. \item\end{CompactList}\item 
guint32 \hyperlink{mw__srvc__ft_8h_b8a3d6ad13859e7432e42c0655e97858}{mwFileTransfer\_\-getFileSize} (struct \hyperlink{structmwFileTransfer}{mwFileTransfer} $\ast$ft)
\begin{CompactList}\small\item\em total bytes intended to be sent/received \item\end{CompactList}\item 
const char $\ast$ \hyperlink{mw__srvc__ft_8h_f1f8e2c7533657755225df99a3324553}{mwFileTransfer\_\-getMessage} (struct \hyperlink{structmwFileTransfer}{mwFileTransfer} $\ast$ft)
\begin{CompactList}\small\item\em the message sent along with an offered file transfer \item\end{CompactList}\item 
guint32 \hyperlink{mw__srvc__ft_8h_37ced6b64ea923ecd5e81c06ecde7d6b}{mwFileTransfer\_\-getRemaining} (struct \hyperlink{structmwFileTransfer}{mwFileTransfer} $\ast$ft)
\begin{CompactList}\small\item\em bytes remaining to be received/send \item\end{CompactList}\item 
struct \hyperlink{structmwServiceFileTransfer}{mwServiceFileTransfer} $\ast$ \hyperlink{mw__srvc__ft_8h_d7bbc883e853aff5eeafa4463869ff0f}{mwFileTransfer\_\-getService} (struct \hyperlink{structmwFileTransfer}{mwFileTransfer} $\ast$ft)
\item 
enum \hyperlink{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc}{mwFileTransferState} \hyperlink{mw__srvc__ft_8h_7fdc5f33c32098117bb9f2ad44529cc6}{mwFileTransfer\_\-getState} (struct \hyperlink{structmwFileTransfer}{mwFileTransfer} $\ast$ft)
\begin{CompactList}\small\item\em the status of this file transfer \item\end{CompactList}\item 
struct \hyperlink{structmwIdBlock}{mwIdBlock} $\ast$ \hyperlink{mw__srvc__ft_8h_2940ab5e57a1b96be6746ebc89a35694}{mwFileTransfer\_\-getUser} (struct \hyperlink{structmwFileTransfer}{mwFileTransfer} $\ast$ft)
\begin{CompactList}\small\item\em the user on the other end of the file transfer \item\end{CompactList}\item 
struct \hyperlink{structmwFileTransfer}{mwFileTransfer} $\ast$ \hyperlink{mw__srvc__ft_8h_861faffb34c023732a23145a2f36305e}{mwFileTransfer\_\-new} (struct \hyperlink{structmwServiceFileTransfer}{mwServiceFileTransfer} $\ast$srvc, const struct \hyperlink{structmwIdBlock}{mwIdBlock} $\ast$who, const char $\ast$msg, const char $\ast$filename, guint32 filesize)
\item 
int \hyperlink{mw__srvc__ft_8h_e7e01388fbff11eed5d88291b5be1ff3}{mwFileTransfer\_\-offer} (struct \hyperlink{structmwFileTransfer}{mwFileTransfer} $\ast$ft)
\begin{CompactList}\small\item\em initiate an outgoing file transfer \item\end{CompactList}\item 
void \hyperlink{mw__srvc__ft_8h_136843f3dc890557cac78e380f8581ea}{mwFileTransfer\_\-removeClientData} (struct \hyperlink{structmwFileTransfer}{mwFileTransfer} $\ast$ft)
\item 
int \hyperlink{mw__srvc__ft_8h_3469419f94157a12c7ad44ea9ecf89ed}{mwFileTransfer\_\-send} (struct \hyperlink{structmwFileTransfer}{mwFileTransfer} $\ast$ft, struct \hyperlink{structmwOpaque}{mwOpaque} $\ast$data)
\begin{CompactList}\small\item\em send a chunk of data over an outbound file transfer. \item\end{CompactList}\item 
void \hyperlink{mw__srvc__ft_8h_d0843c80a90a136605b65a25ae00e221}{mwFileTransfer\_\-setClientData} (struct \hyperlink{structmwFileTransfer}{mwFileTransfer} $\ast$ft, gpointer data, GDestroyNotify clean)
\item 
struct \hyperlink{structmwFileTransferHandler}{mwFileTransferHandler} $\ast$ \hyperlink{mw__srvc__ft_8h_7cc673697699025ac11938f5ec089d4a}{mwServiceFileTransfer\_\-getHandler} (struct \hyperlink{structmwServiceFileTransfer}{mwServiceFileTransfer} $\ast$srvc)
\item 
const GList $\ast$ \hyperlink{mw__srvc__ft_8h_ca9de96736ebad280db71c4f475e80e1}{mwServiceFileTransfer\_\-getTransfers} (struct \hyperlink{structmwServiceFileTransfer}{mwServiceFileTransfer} $\ast$srvc)
\item 
struct \hyperlink{structmwServiceFileTransfer}{mwServiceFileTransfer} $\ast$ \hyperlink{mw__srvc__ft_8h_4eb6d60f4f3de185ade36f8d9cb21959}{mwServiceFileTransfer\_\-new} (struct \hyperlink{structmwSession}{mwSession} $\ast$\hyperlink{structmwService_0c2badd2256155b2bee149fa4b57b7d6}{session}, struct \hyperlink{structmwFileTransferHandler}{mwFileTransferHandler} $\ast$handler)
\end{CompactItemize}


\subsection{Define Documentation}
\hypertarget{mw__srvc__ft_8h_9546cfa89e4e7842d510024ca00acf6f}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-cancel@{mwFileTransfer\_\-cancel}}
\index{mwFileTransfer\_\-cancel@{mwFileTransfer\_\-cancel}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define mwFileTransfer\_\-cancel(ft)~mwFileTransfer\_\-close((ft), mwFileTransfer\_\-SUCCESS);}}
\label{mw__srvc__ft_8h_9546cfa89e4e7842d510024ca00acf6f}


cancel an open file transfer 

\hypertarget{mw__srvc__ft_8h_eb93cb4ce77fea1c88e0da9cdeb530c7}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-getSent@{mwFileTransfer\_\-getSent}}
\index{mwFileTransfer\_\-getSent@{mwFileTransfer\_\-getSent}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define mwFileTransfer\_\-getSent(ft)~(mwFileTransfer\_\-getFileSize(ft) - mwFileTransfer\_\-getRemaining(ft))}}
\label{mw__srvc__ft_8h_eb93cb4ce77fea1c88e0da9cdeb530c7}


count of bytes sent/received over this file transfer so far 

\hypertarget{mw__srvc__ft_8h_136432fd1b7ce18c2538302a3155a545}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-isCancelLocal@{mwFileTransfer\_\-isCancelLocal}}
\index{mwFileTransfer\_\-isCancelLocal@{mwFileTransfer\_\-isCancelLocal}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define mwFileTransfer\_\-isCancelLocal(ft)~mwFileTransfer\_\-isState((ft), mwFileTransfer\_\-CANCEL\_\-LOCAL)}}
\label{mw__srvc__ft_8h_136432fd1b7ce18c2538302a3155a545}


\hypertarget{mw__srvc__ft_8h_f5454a7c88d60cee0d33a3ae0fad9e7f}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-isCancelRemote@{mwFileTransfer\_\-isCancelRemote}}
\index{mwFileTransfer\_\-isCancelRemote@{mwFileTransfer\_\-isCancelRemote}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define mwFileTransfer\_\-isCancelRemote(ft)~mwFileTransfer\_\-isState((ft), mwFileTransfer\_\-CANCEL\_\-REMOTE)}}
\label{mw__srvc__ft_8h_f5454a7c88d60cee0d33a3ae0fad9e7f}


\hypertarget{mw__srvc__ft_8h_1402a81bc5446a5bd07a5e84eff1b966}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-isDone@{mwFileTransfer\_\-isDone}}
\index{mwFileTransfer\_\-isDone@{mwFileTransfer\_\-isDone}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define mwFileTransfer\_\-isDone(ft)~mwFileTransfer\_\-isState((ft), mwFileTransfer\_\-DONE)}}
\label{mw__srvc__ft_8h_1402a81bc5446a5bd07a5e84eff1b966}


\hypertarget{mw__srvc__ft_8h_d1a67cc3e86ddecab2d252427e5e5a03}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-isNew@{mwFileTransfer\_\-isNew}}
\index{mwFileTransfer\_\-isNew@{mwFileTransfer\_\-isNew}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define mwFileTransfer\_\-isNew(ft)~mwFileTransfer\_\-isState((ft), mwFileTransfer\_\-NEW)}}
\label{mw__srvc__ft_8h_d1a67cc3e86ddecab2d252427e5e5a03}


\hypertarget{mw__srvc__ft_8h_18bcede407a34ade87fcb1d5466a05ee}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-isOpen@{mwFileTransfer\_\-isOpen}}
\index{mwFileTransfer\_\-isOpen@{mwFileTransfer\_\-isOpen}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define mwFileTransfer\_\-isOpen(ft)~mwFileTransfer\_\-isState((ft), mwFileTransfer\_\-OPEN)}}
\label{mw__srvc__ft_8h_18bcede407a34ade87fcb1d5466a05ee}


\hypertarget{mw__srvc__ft_8h_9afa7586b1aabab66cd8d2091bca4da7}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-isPending@{mwFileTransfer\_\-isPending}}
\index{mwFileTransfer\_\-isPending@{mwFileTransfer\_\-isPending}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define mwFileTransfer\_\-isPending(ft)~mwFileTransfer\_\-isState((ft), mwFileTransfer\_\-PENDING)}}
\label{mw__srvc__ft_8h_9afa7586b1aabab66cd8d2091bca4da7}


\hypertarget{mw__srvc__ft_8h_e704530c78547cee3181bf56ab7bcb91}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-isState@{mwFileTransfer\_\-isState}}
\index{mwFileTransfer\_\-isState@{mwFileTransfer\_\-isState}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define mwFileTransfer\_\-isState(ft, \/  {\bf state})~(mwFileTransfer\_\-getState(ft) == ({\bf state}))}}
\label{mw__srvc__ft_8h_e704530c78547cee3181bf56ab7bcb91}


\hypertarget{mw__srvc__ft_8h_7d44f8414c67a8dd5472a01c56432bf2}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-reject@{mwFileTransfer\_\-reject}}
\index{mwFileTransfer\_\-reject@{mwFileTransfer\_\-reject}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define mwFileTransfer\_\-reject(ft)~mwFileTransfer\_\-close((ft), mwFileTransfer\_\-REJECTED)}}
\label{mw__srvc__ft_8h_7d44f8414c67a8dd5472a01c56432bf2}


reject an incoming file transfer 

\hypertarget{mw__srvc__ft_8h_85c063258700af8dc22871d051e4e101}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwService\_\-FILE\_\-TRANSFER@{mwService\_\-FILE\_\-TRANSFER}}
\index{mwService\_\-FILE\_\-TRANSFER@{mwService\_\-FILE\_\-TRANSFER}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define mwService\_\-FILE\_\-TRANSFER~0x00000038}}
\label{mw__srvc__ft_8h_85c063258700af8dc22871d051e4e101}




\subsection{Enumeration Type Documentation}
\hypertarget{mw__srvc__ft_8h_8af13a1733efdb6ce88f035ed3dbeb8d}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTranferCode@{mwFileTranferCode}}
\index{mwFileTranferCode@{mwFileTranferCode}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}enum {\bf mwFileTranferCode}}}
\label{mw__srvc__ft_8h_8af13a1733efdb6ce88f035ed3dbeb8d}


\begin{Desc}
\item[Enumerator: ]\par
\begin{description}
\index{mwFileTransfer\_\-SUCCESS@{mwFileTransfer\_\-SUCCESS}!mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}}\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-SUCCESS@{mwFileTransfer\_\-SUCCESS}}\item[{\em 
\hypertarget{mw__srvc__ft_8h_8af13a1733efdb6ce88f035ed3dbeb8d65dff6000a1cbdeff12811e203bfaafc}{
mwFileTransfer\_\-SUCCESS}
\label{mw__srvc__ft_8h_8af13a1733efdb6ce88f035ed3dbeb8d65dff6000a1cbdeff12811e203bfaafc}
}]\index{mwFileTransfer\_\-REJECTED@{mwFileTransfer\_\-REJECTED}!mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}}\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-REJECTED@{mwFileTransfer\_\-REJECTED}}\item[{\em 
\hypertarget{mw__srvc__ft_8h_8af13a1733efdb6ce88f035ed3dbeb8d5c61a5dcbd92e60f515ad9fa3a2a9829}{
mwFileTransfer\_\-REJECTED}
\label{mw__srvc__ft_8h_8af13a1733efdb6ce88f035ed3dbeb8d5c61a5dcbd92e60f515ad9fa3a2a9829}
}]\end{description}
\end{Desc}

\hypertarget{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransferState@{mwFileTransferState}}
\index{mwFileTransferState@{mwFileTransferState}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}enum {\bf mwFileTransferState}}}
\label{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc}


\begin{Desc}
\item[Enumerator: ]\par
\begin{description}
\index{mwFileTransfer\_\-NEW@{mwFileTransfer\_\-NEW}!mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}}\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-NEW@{mwFileTransfer\_\-NEW}}\item[{\em 
\hypertarget{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc26679daf78859740399f8a6425c596c6}{
mwFileTransfer\_\-NEW}
\label{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc26679daf78859740399f8a6425c596c6}
}]file transfer is not open \index{mwFileTransfer\_\-PENDING@{mwFileTransfer\_\-PENDING}!mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}}\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-PENDING@{mwFileTransfer\_\-PENDING}}\item[{\em 
\hypertarget{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc0955a56b3ea99e5e074c57bd68837550}{
mwFileTransfer\_\-PENDING}
\label{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc0955a56b3ea99e5e074c57bd68837550}
}]file transfer is opening \index{mwFileTransfer\_\-OPEN@{mwFileTransfer\_\-OPEN}!mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}}\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-OPEN@{mwFileTransfer\_\-OPEN}}\item[{\em 
\hypertarget{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc52a2582eaf7b494571b1e59bb4286f4d}{
mwFileTransfer\_\-OPEN}
\label{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc52a2582eaf7b494571b1e59bb4286f4d}
}]file transfer is open \index{mwFileTransfer\_\-CANCEL\_\-LOCAL@{mwFileTransfer\_\-CANCEL\_\-LOCAL}!mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}}\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-CANCEL\_\-LOCAL@{mwFileTransfer\_\-CANCEL\_\-LOCAL}}\item[{\em 
\hypertarget{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc4c7bd39dfdb511ca044efed6ed07c7e0}{
mwFileTransfer\_\-CANCEL\_\-LOCAL}
\label{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc4c7bd39dfdb511ca044efed6ed07c7e0}
}]\index{mwFileTransfer\_\-CANCEL\_\-REMOTE@{mwFileTransfer\_\-CANCEL\_\-REMOTE}!mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}}\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-CANCEL\_\-REMOTE@{mwFileTransfer\_\-CANCEL\_\-REMOTE}}\item[{\em 
\hypertarget{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfcbe34026724b799516305d7debebb5436}{
mwFileTransfer\_\-CANCEL\_\-REMOTE}
\label{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfcbe34026724b799516305d7debebb5436}
}]\index{mwFileTransfer\_\-DONE@{mwFileTransfer\_\-DONE}!mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}}\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-DONE@{mwFileTransfer\_\-DONE}}\item[{\em 
\hypertarget{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc895e247fd66dcbbb8b8e4ea7f383bc0c}{
mwFileTransfer\_\-DONE}
\label{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc895e247fd66dcbbb8b8e4ea7f383bc0c}
}]\index{mwFileTransfer\_\-ERROR@{mwFileTransfer\_\-ERROR}!mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}}\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-ERROR@{mwFileTransfer\_\-ERROR}}\item[{\em 
\hypertarget{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc9bce3d3b93e78978898757c377e3cc17}{
mwFileTransfer\_\-ERROR}
\label{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc9bce3d3b93e78978898757c377e3cc17}
}]error in file transfer \index{mwFileTransfer\_\-UNKNOWN@{mwFileTransfer\_\-UNKNOWN}!mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}}\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-UNKNOWN@{mwFileTransfer\_\-UNKNOWN}}\item[{\em 
\hypertarget{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc00c61a63716a529570533ff6c40e67e4}{
mwFileTransfer\_\-UNKNOWN}
\label{mw__srvc__ft_8h_bd0c1055027e69a50e2b6fd42de08cfc00c61a63716a529570533ff6c40e67e4}
}]unknown state \end{description}
\end{Desc}



\subsection{Function Documentation}
\hypertarget{mw__srvc__ft_8h_306ca7b808d11d01a777a7d2daaad865}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-accept@{mwFileTransfer\_\-accept}}
\index{mwFileTransfer\_\-accept@{mwFileTransfer\_\-accept}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwFileTransfer\_\-accept (struct {\bf mwFileTransfer} $\ast$ {\em ft})}}
\label{mw__srvc__ft_8h_306ca7b808d11d01a777a7d2daaad865}


accept an incoming file transfer 

\hypertarget{mw__srvc__ft_8h_859819c4aa699fbf78ae563ab2559b04}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-ack@{mwFileTransfer\_\-ack}}
\index{mwFileTransfer\_\-ack@{mwFileTransfer\_\-ack}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwFileTransfer\_\-ack (struct {\bf mwFileTransfer} $\ast$ {\em ft})}}
\label{mw__srvc__ft_8h_859819c4aa699fbf78ae563ab2559b04}


acknowledge the receipt of a chunk of data from an inbound file transfer. 

This should be done after every received chunk, or the transfer will stall. However, not all clients will wait for an ack after sending a chunk before sending the next chunk, so it is possible to have the handler's ft\_\-recv function triggered again even if no ack was sent.

\begin{Desc}
\item[See also:]\hyperlink{structmwFileTransferHandler_e6a9cbb2e745cdbfd7b9e6117f541023}{mwFileTransferHandler::ft\_\-recv} \end{Desc}
\hypertarget{mw__srvc__ft_8h_dc7a5ebdbffd7dc3421c127ef052ff15}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-close@{mwFileTransfer\_\-close}}
\index{mwFileTransfer\_\-close@{mwFileTransfer\_\-close}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwFileTransfer\_\-close (struct {\bf mwFileTransfer} $\ast$ {\em ft}, \/  guint32 {\em code})}}
\label{mw__srvc__ft_8h_dc7a5ebdbffd7dc3421c127ef052ff15}


Close a file transfer. 

This will trigger the ft\_\-close function of the session's handler.

\begin{Desc}
\item[See also:]\hyperlink{mw__srvc__ft_8h_7d44f8414c67a8dd5472a01c56432bf2}{mwFileTransfer\_\-reject} 

\hyperlink{mw__srvc__ft_8h_9546cfa89e4e7842d510024ca00acf6f}{mwFileTransfer\_\-cancel} \end{Desc}
\hypertarget{mw__srvc__ft_8h_ecbc5a6ed545d960c19883397ca786af}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-free@{mwFileTransfer\_\-free}}
\index{mwFileTransfer\_\-free@{mwFileTransfer\_\-free}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void mwFileTransfer\_\-free (struct {\bf mwFileTransfer} $\ast$ {\em ft})}}
\label{mw__srvc__ft_8h_ecbc5a6ed545d960c19883397ca786af}


deallocate a file transfer. 

will call mwFileTransfer\_\-close if necessary \hypertarget{mw__srvc__ft_8h_696299ead4906360fec8eb1ce99e0889}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-getClientData@{mwFileTransfer\_\-getClientData}}
\index{mwFileTransfer\_\-getClientData@{mwFileTransfer\_\-getClientData}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}gpointer mwFileTransfer\_\-getClientData (struct {\bf mwFileTransfer} $\ast$ {\em ft})}}
\label{mw__srvc__ft_8h_696299ead4906360fec8eb1ce99e0889}


\hypertarget{mw__srvc__ft_8h_dc8153089707277a37d53078bb43f48c}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-getFileName@{mwFileTransfer\_\-getFileName}}
\index{mwFileTransfer\_\-getFileName@{mwFileTransfer\_\-getFileName}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ mwFileTransfer\_\-getFileName (struct {\bf mwFileTransfer} $\ast$ {\em ft})}}
\label{mw__srvc__ft_8h_dc8153089707277a37d53078bb43f48c}


the publicized file name. 

Not necessarily related to any actual file on either system \hypertarget{mw__srvc__ft_8h_b8a3d6ad13859e7432e42c0655e97858}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-getFileSize@{mwFileTransfer\_\-getFileSize}}
\index{mwFileTransfer\_\-getFileSize@{mwFileTransfer\_\-getFileSize}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}guint32 mwFileTransfer\_\-getFileSize (struct {\bf mwFileTransfer} $\ast$ {\em ft})}}
\label{mw__srvc__ft_8h_b8a3d6ad13859e7432e42c0655e97858}


total bytes intended to be sent/received 

\hypertarget{mw__srvc__ft_8h_f1f8e2c7533657755225df99a3324553}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-getMessage@{mwFileTransfer\_\-getMessage}}
\index{mwFileTransfer\_\-getMessage@{mwFileTransfer\_\-getMessage}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ mwFileTransfer\_\-getMessage (struct {\bf mwFileTransfer} $\ast$ {\em ft})}}
\label{mw__srvc__ft_8h_f1f8e2c7533657755225df99a3324553}


the message sent along with an offered file transfer 

\hypertarget{mw__srvc__ft_8h_37ced6b64ea923ecd5e81c06ecde7d6b}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-getRemaining@{mwFileTransfer\_\-getRemaining}}
\index{mwFileTransfer\_\-getRemaining@{mwFileTransfer\_\-getRemaining}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}guint32 mwFileTransfer\_\-getRemaining (struct {\bf mwFileTransfer} $\ast$ {\em ft})}}
\label{mw__srvc__ft_8h_37ced6b64ea923ecd5e81c06ecde7d6b}


bytes remaining to be received/send 

\hypertarget{mw__srvc__ft_8h_d7bbc883e853aff5eeafa4463869ff0f}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-getService@{mwFileTransfer\_\-getService}}
\index{mwFileTransfer\_\-getService@{mwFileTransfer\_\-getService}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct {\bf mwServiceFileTransfer}$\ast$ mwFileTransfer\_\-getService (struct {\bf mwFileTransfer} $\ast$ {\em ft})\hspace{0.3cm}{\tt  \mbox{[}read\mbox{]}}}}
\label{mw__srvc__ft_8h_d7bbc883e853aff5eeafa4463869ff0f}


\hypertarget{mw__srvc__ft_8h_7fdc5f33c32098117bb9f2ad44529cc6}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-getState@{mwFileTransfer\_\-getState}}
\index{mwFileTransfer\_\-getState@{mwFileTransfer\_\-getState}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}enum {\bf mwFileTransferState} mwFileTransfer\_\-getState (struct {\bf mwFileTransfer} $\ast$ {\em ft})}}
\label{mw__srvc__ft_8h_7fdc5f33c32098117bb9f2ad44529cc6}


the status of this file transfer 

\hypertarget{mw__srvc__ft_8h_2940ab5e57a1b96be6746ebc89a35694}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-getUser@{mwFileTransfer\_\-getUser}}
\index{mwFileTransfer\_\-getUser@{mwFileTransfer\_\-getUser}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct {\bf mwIdBlock}$\ast$ mwFileTransfer\_\-getUser (struct {\bf mwFileTransfer} $\ast$ {\em ft})\hspace{0.3cm}{\tt  \mbox{[}read\mbox{]}}}}
\label{mw__srvc__ft_8h_2940ab5e57a1b96be6746ebc89a35694}


the user on the other end of the file transfer 

\hypertarget{mw__srvc__ft_8h_861faffb34c023732a23145a2f36305e}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-new@{mwFileTransfer\_\-new}}
\index{mwFileTransfer\_\-new@{mwFileTransfer\_\-new}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct {\bf mwFileTransfer}$\ast$ mwFileTransfer\_\-new (struct {\bf mwServiceFileTransfer} $\ast$ {\em srvc}, \/  const struct {\bf mwIdBlock} $\ast$ {\em who}, \/  const char $\ast$ {\em msg}, \/  const char $\ast$ {\em filename}, \/  guint32 {\em filesize})\hspace{0.3cm}{\tt  \mbox{[}read\mbox{]}}}}
\label{mw__srvc__ft_8h_861faffb34c023732a23145a2f36305e}


\hypertarget{mw__srvc__ft_8h_e7e01388fbff11eed5d88291b5be1ff3}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-offer@{mwFileTransfer\_\-offer}}
\index{mwFileTransfer\_\-offer@{mwFileTransfer\_\-offer}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwFileTransfer\_\-offer (struct {\bf mwFileTransfer} $\ast$ {\em ft})}}
\label{mw__srvc__ft_8h_e7e01388fbff11eed5d88291b5be1ff3}


initiate an outgoing file transfer 

\hypertarget{mw__srvc__ft_8h_136843f3dc890557cac78e380f8581ea}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-removeClientData@{mwFileTransfer\_\-removeClientData}}
\index{mwFileTransfer\_\-removeClientData@{mwFileTransfer\_\-removeClientData}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void mwFileTransfer\_\-removeClientData (struct {\bf mwFileTransfer} $\ast$ {\em ft})}}
\label{mw__srvc__ft_8h_136843f3dc890557cac78e380f8581ea}


\hypertarget{mw__srvc__ft_8h_3469419f94157a12c7ad44ea9ecf89ed}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-send@{mwFileTransfer\_\-send}}
\index{mwFileTransfer\_\-send@{mwFileTransfer\_\-send}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwFileTransfer\_\-send (struct {\bf mwFileTransfer} $\ast$ {\em ft}, \/  struct {\bf mwOpaque} $\ast$ {\em data})}}
\label{mw__srvc__ft_8h_3469419f94157a12c7ad44ea9ecf89ed}


send a chunk of data over an outbound file transfer. 

The client at the other end of the transfer should respond with an acknowledgement message, which can be caught in the service's handler.

\begin{Desc}
\item[See also:]\hyperlink{structmwFileTransferHandler_0fd499a13104ef8913989340bab48fac}{mwFileTransferHandler::ft\_\-ack} \end{Desc}
\hypertarget{mw__srvc__ft_8h_d0843c80a90a136605b65a25ae00e221}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwFileTransfer\_\-setClientData@{mwFileTransfer\_\-setClientData}}
\index{mwFileTransfer\_\-setClientData@{mwFileTransfer\_\-setClientData}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void mwFileTransfer\_\-setClientData (struct {\bf mwFileTransfer} $\ast$ {\em ft}, \/  gpointer {\em data}, \/  GDestroyNotify {\em clean})}}
\label{mw__srvc__ft_8h_d0843c80a90a136605b65a25ae00e221}


\hypertarget{mw__srvc__ft_8h_7cc673697699025ac11938f5ec089d4a}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwServiceFileTransfer\_\-getHandler@{mwServiceFileTransfer\_\-getHandler}}
\index{mwServiceFileTransfer\_\-getHandler@{mwServiceFileTransfer\_\-getHandler}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct {\bf mwFileTransferHandler}$\ast$ mwServiceFileTransfer\_\-getHandler (struct {\bf mwServiceFileTransfer} $\ast$ {\em srvc})\hspace{0.3cm}{\tt  \mbox{[}read\mbox{]}}}}
\label{mw__srvc__ft_8h_7cc673697699025ac11938f5ec089d4a}


\hypertarget{mw__srvc__ft_8h_ca9de96736ebad280db71c4f475e80e1}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwServiceFileTransfer\_\-getTransfers@{mwServiceFileTransfer\_\-getTransfers}}
\index{mwServiceFileTransfer\_\-getTransfers@{mwServiceFileTransfer\_\-getTransfers}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const GList$\ast$ mwServiceFileTransfer\_\-getTransfers (struct {\bf mwServiceFileTransfer} $\ast$ {\em srvc})}}
\label{mw__srvc__ft_8h_ca9de96736ebad280db71c4f475e80e1}


\hypertarget{mw__srvc__ft_8h_4eb6d60f4f3de185ade36f8d9cb21959}{
\index{mw\_\-srvc\_\-ft.h@{mw\_\-srvc\_\-ft.h}!mwServiceFileTransfer\_\-new@{mwServiceFileTransfer\_\-new}}
\index{mwServiceFileTransfer\_\-new@{mwServiceFileTransfer\_\-new}!mw_srvc_ft.h@{mw\_\-srvc\_\-ft.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct {\bf mwServiceFileTransfer}$\ast$ mwServiceFileTransfer\_\-new (struct {\bf mwSession} $\ast$ {\em session}, \/  struct {\bf mwFileTransferHandler} $\ast$ {\em handler})\hspace{0.3cm}{\tt  \mbox{[}read\mbox{]}}}}
\label{mw__srvc__ft_8h_4eb6d60f4f3de185ade36f8d9cb21959}


