\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}