\doxysection{mw\+\_\+srvc\+\_\+ft.\+h File Reference}
\hypertarget{mw__srvc__ft_8h}{}\label{mw__srvc__ft_8h}\index{mw\_srvc\_ft.h@{mw\_srvc\_ft.h}}


A file transfer is a simple way to get large chunks of binary data from one client to another.  


{\ttfamily \#include "{}mw\+\_\+common.\+h"{}}\newline
\doxysubsubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{structmwFileTransferHandler}{mw\+File\+Transfer\+Handler}}
\end{DoxyCompactItemize}
\doxysubsubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{mw__srvc__ft_8h_a9546cfa89e4e7842d510024ca00acf6f}{mw\+File\+Transfer\+\_\+cancel}}(ft)~  \mbox{\hyperlink{mw__srvc__ft_8h_adc7a5ebdbffd7dc3421c127ef052ff15}{mw\+File\+Transfer\+\_\+close}}((ft), \mbox{\hyperlink{mw__srvc__ft_8h_a8af13a1733efdb6ce88f035ed3dbeb8da65dff6000a1cbdeff12811e203bfaafc}{mw\+File\+Transfer\+\_\+\+SUCCESS}});
\begin{DoxyCompactList}\small\item\em cancel an open file transfer \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{mw__srvc__ft_8h_aeb93cb4ce77fea1c88e0da9cdeb530c7}{mw\+File\+Transfer\+\_\+get\+Sent}}(ft)~  (\mbox{\hyperlink{mw__srvc__ft_8h_ab8a3d6ad13859e7432e42c0655e97858}{mw\+File\+Transfer\+\_\+get\+File\+Size}}(ft) -\/ \mbox{\hyperlink{mw__srvc__ft_8h_a37ced6b64ea923ecd5e81c06ecde7d6b}{mw\+File\+Transfer\+\_\+get\+Remaining}}(ft))
\begin{DoxyCompactList}\small\item\em count of bytes sent/received over this file transfer so far \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{mw__srvc__ft_8h_a136432fd1b7ce18c2538302a3155a545}{mw\+File\+Transfer\+\_\+is\+Cancel\+Local}}(ft)~  \mbox{\hyperlink{mw__srvc__ft_8h_ae704530c78547cee3181bf56ab7bcb91}{mw\+File\+Transfer\+\_\+is\+State}}((ft), \mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca4c7bd39dfdb511ca044efed6ed07c7e0}{mw\+File\+Transfer\+\_\+\+CANCEL\+\_\+\+LOCAL}})
\item 
\#define \mbox{\hyperlink{mw__srvc__ft_8h_af5454a7c88d60cee0d33a3ae0fad9e7f}{mw\+File\+Transfer\+\_\+is\+Cancel\+Remote}}(ft)~  \mbox{\hyperlink{mw__srvc__ft_8h_ae704530c78547cee3181bf56ab7bcb91}{mw\+File\+Transfer\+\_\+is\+State}}((ft), \mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfcabe34026724b799516305d7debebb5436}{mw\+File\+Transfer\+\_\+\+CANCEL\+\_\+\+REMOTE}})
\item 
\#define \mbox{\hyperlink{mw__srvc__ft_8h_a1402a81bc5446a5bd07a5e84eff1b966}{mw\+File\+Transfer\+\_\+is\+Done}}(ft)~  \mbox{\hyperlink{mw__srvc__ft_8h_ae704530c78547cee3181bf56ab7bcb91}{mw\+File\+Transfer\+\_\+is\+State}}((ft), \mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca895e247fd66dcbbb8b8e4ea7f383bc0c}{mw\+File\+Transfer\+\_\+\+DONE}})
\item 
\#define \mbox{\hyperlink{mw__srvc__ft_8h_ad1a67cc3e86ddecab2d252427e5e5a03}{mw\+File\+Transfer\+\_\+is\+New}}(ft)~  \mbox{\hyperlink{mw__srvc__ft_8h_ae704530c78547cee3181bf56ab7bcb91}{mw\+File\+Transfer\+\_\+is\+State}}((ft), \mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca26679daf78859740399f8a6425c596c6}{mw\+File\+Transfer\+\_\+\+NEW}})
\item 
\#define \mbox{\hyperlink{mw__srvc__ft_8h_a18bcede407a34ade87fcb1d5466a05ee}{mw\+File\+Transfer\+\_\+is\+Open}}(ft)~  \mbox{\hyperlink{mw__srvc__ft_8h_ae704530c78547cee3181bf56ab7bcb91}{mw\+File\+Transfer\+\_\+is\+State}}((ft), \mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca52a2582eaf7b494571b1e59bb4286f4d}{mw\+File\+Transfer\+\_\+\+OPEN}})
\item 
\#define \mbox{\hyperlink{mw__srvc__ft_8h_a9afa7586b1aabab66cd8d2091bca4da7}{mw\+File\+Transfer\+\_\+is\+Pending}}(ft)~  \mbox{\hyperlink{mw__srvc__ft_8h_ae704530c78547cee3181bf56ab7bcb91}{mw\+File\+Transfer\+\_\+is\+State}}((ft), \mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca0955a56b3ea99e5e074c57bd68837550}{mw\+File\+Transfer\+\_\+\+PENDING}})
\item 
\#define \mbox{\hyperlink{mw__srvc__ft_8h_ae704530c78547cee3181bf56ab7bcb91}{mw\+File\+Transfer\+\_\+is\+State}}(ft,  state)~  (\mbox{\hyperlink{mw__srvc__ft_8h_a7fdc5f33c32098117bb9f2ad44529cc6}{mw\+File\+Transfer\+\_\+get\+State}}(ft) == (state))
\item 
\#define \mbox{\hyperlink{mw__srvc__ft_8h_a7d44f8414c67a8dd5472a01c56432bf2}{mw\+File\+Transfer\+\_\+reject}}(ft)~  \mbox{\hyperlink{mw__srvc__ft_8h_adc7a5ebdbffd7dc3421c127ef052ff15}{mw\+File\+Transfer\+\_\+close}}((ft), \mbox{\hyperlink{mw__srvc__ft_8h_a8af13a1733efdb6ce88f035ed3dbeb8da5c61a5dcbd92e60f515ad9fa3a2a9829}{mw\+File\+Transfer\+\_\+\+REJECTED}})
\begin{DoxyCompactList}\small\item\em reject an incoming file transfer \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{mw__srvc__ft_8h_a85c063258700af8dc22871d051e4e101}{mw\+Service\+\_\+\+FILE\+\_\+\+TRANSFER}}~0x00000038
\end{DoxyCompactItemize}
\doxysubsubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \mbox{\hyperlink{mw__srvc__ft_8h_a8af13a1733efdb6ce88f035ed3dbeb8d}{mw\+File\+Tranfer\+Code}} \{ \newline
\mbox{\hyperlink{mw__srvc__ft_8h_a8af13a1733efdb6ce88f035ed3dbeb8da65dff6000a1cbdeff12811e203bfaafc}{mw\+File\+Transfer\+\_\+\+SUCCESS}} = 0x00000000
, \newline
\mbox{\hyperlink{mw__srvc__ft_8h_a8af13a1733efdb6ce88f035ed3dbeb8da5c61a5dcbd92e60f515ad9fa3a2a9829}{mw\+File\+Transfer\+\_\+\+REJECTED}} = 0x08000606
 \}
\item 
enum \mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfc}{mw\+File\+Transfer\+State}} \{ \newline
\mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca26679daf78859740399f8a6425c596c6}{mw\+File\+Transfer\+\_\+\+NEW}}
, \newline
\mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca0955a56b3ea99e5e074c57bd68837550}{mw\+File\+Transfer\+\_\+\+PENDING}}
, \newline
\mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca52a2582eaf7b494571b1e59bb4286f4d}{mw\+File\+Transfer\+\_\+\+OPEN}}
, \newline
\mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca4c7bd39dfdb511ca044efed6ed07c7e0}{mw\+File\+Transfer\+\_\+\+CANCEL\+\_\+\+LOCAL}}
, \newline
\mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfcabe34026724b799516305d7debebb5436}{mw\+File\+Transfer\+\_\+\+CANCEL\+\_\+\+REMOTE}}
, \newline
\mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca895e247fd66dcbbb8b8e4ea7f383bc0c}{mw\+File\+Transfer\+\_\+\+DONE}}
, \newline
\mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca9bce3d3b93e78978898757c377e3cc17}{mw\+File\+Transfer\+\_\+\+ERROR}}
, \newline
\mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca00c61a63716a529570533ff6c40e67e4}{mw\+File\+Transfer\+\_\+\+UNKNOWN}}
 \}
\end{DoxyCompactItemize}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
int \mbox{\hyperlink{mw__srvc__ft_8h_a306ca7b808d11d01a777a7d2daaad865}{mw\+File\+Transfer\+\_\+accept}} (struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}ft)
\begin{DoxyCompactList}\small\item\em accept an incoming file transfer \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mw__srvc__ft_8h_a859819c4aa699fbf78ae563ab2559b04}{mw\+File\+Transfer\+\_\+ack}} (struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}ft)
\begin{DoxyCompactList}\small\item\em acknowledge the receipt of a chunk of data from an inbound file transfer. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{mw__srvc__ft_8h_adc7a5ebdbffd7dc3421c127ef052ff15}{mw\+File\+Transfer\+\_\+close}} (struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}ft, guint32 code)
\begin{DoxyCompactList}\small\item\em Close a file transfer. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{mw__srvc__ft_8h_aecbc5a6ed545d960c19883397ca786af}{mw\+File\+Transfer\+\_\+free}} (struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}ft)
\begin{DoxyCompactList}\small\item\em deallocate a file transfer. \end{DoxyCompactList}\item 
gpointer \mbox{\hyperlink{mw__srvc__ft_8h_a696299ead4906360fec8eb1ce99e0889}{mw\+File\+Transfer\+\_\+get\+Client\+Data}} (struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}ft)
\item 
const char \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{mw__srvc__ft_8h_a815d8fa885eea01abbf4ffb6486d5e76}{mw\+File\+Transfer\+\_\+get\+File\+Name}} (struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}ft)
\begin{DoxyCompactList}\small\item\em the publicized file name. \end{DoxyCompactList}\item 
guint32 \mbox{\hyperlink{mw__srvc__ft_8h_ab8a3d6ad13859e7432e42c0655e97858}{mw\+File\+Transfer\+\_\+get\+File\+Size}} (struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}ft)
\begin{DoxyCompactList}\small\item\em total bytes intended to be sent/received \end{DoxyCompactList}\item 
const char \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{mw__srvc__ft_8h_a1ea2022206eb91083a95e0338e32b4b5}{mw\+File\+Transfer\+\_\+get\+Message}} (struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}ft)
\begin{DoxyCompactList}\small\item\em the message sent along with an offered file transfer \end{DoxyCompactList}\item 
guint32 \mbox{\hyperlink{mw__srvc__ft_8h_a37ced6b64ea923ecd5e81c06ecde7d6b}{mw\+File\+Transfer\+\_\+get\+Remaining}} (struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}ft)
\begin{DoxyCompactList}\small\item\em bytes remaining to be received/send \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structmwServiceFileTransfer}{mw\+Service\+File\+Transfer}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{mw__srvc__ft_8h_a593e815d59dbcd6cc4d55d7f49772ac3}{mw\+File\+Transfer\+\_\+get\+Service}} (struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}ft)
\item 
enum \mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfc}{mw\+File\+Transfer\+State}} \mbox{\hyperlink{mw__srvc__ft_8h_a7fdc5f33c32098117bb9f2ad44529cc6}{mw\+File\+Transfer\+\_\+get\+State}} (struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}ft)
\begin{DoxyCompactList}\small\item\em the status of this file transfer \end{DoxyCompactList}\item 
const struct \mbox{\hyperlink{structmwIdBlock}{mw\+Id\+Block}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{mw__srvc__ft_8h_a3f944af5aa9140d63fcbc0e54b27742f}{mw\+File\+Transfer\+\_\+get\+User}} (struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}ft)
\begin{DoxyCompactList}\small\item\em the user on the other end of the file transfer \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{mw__srvc__ft_8h_a15661b21819c2eb05bb0e21c6ccd7cd8}{mw\+File\+Transfer\+\_\+new}} (struct \mbox{\hyperlink{structmwServiceFileTransfer}{mw\+Service\+File\+Transfer}} \texorpdfstring{$\ast$}{*}srvc, const struct \mbox{\hyperlink{structmwIdBlock}{mw\+Id\+Block}} \texorpdfstring{$\ast$}{*}who, const char \texorpdfstring{$\ast$}{*}msg, const char \texorpdfstring{$\ast$}{*}filename, guint32 filesize)
\item 
int \mbox{\hyperlink{mw__srvc__ft_8h_ae7e01388fbff11eed5d88291b5be1ff3}{mw\+File\+Transfer\+\_\+offer}} (struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}ft)
\begin{DoxyCompactList}\small\item\em initiate an outgoing file transfer \end{DoxyCompactList}\item 
void \mbox{\hyperlink{mw__srvc__ft_8h_a136843f3dc890557cac78e380f8581ea}{mw\+File\+Transfer\+\_\+remove\+Client\+Data}} (struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}ft)
\item 
int \mbox{\hyperlink{mw__srvc__ft_8h_a3469419f94157a12c7ad44ea9ecf89ed}{mw\+File\+Transfer\+\_\+send}} (struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}ft, struct \mbox{\hyperlink{structmwOpaque}{mw\+Opaque}} \texorpdfstring{$\ast$}{*}data)
\begin{DoxyCompactList}\small\item\em send a chunk of data over an outbound file transfer. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{mw__srvc__ft_8h_ad0843c80a90a136605b65a25ae00e221}{mw\+File\+Transfer\+\_\+set\+Client\+Data}} (struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}ft, gpointer data, GDestroy\+Notify clean)
\item 
struct \mbox{\hyperlink{structmwFileTransferHandler}{mw\+File\+Transfer\+Handler}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{mw__srvc__ft_8h_a404d04c4256cbff5f92bd0c17a922838}{mw\+Service\+File\+Transfer\+\_\+get\+Handler}} (struct \mbox{\hyperlink{structmwServiceFileTransfer}{mw\+Service\+File\+Transfer}} \texorpdfstring{$\ast$}{*}srvc)
\item 
const GList \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{mw__srvc__ft_8h_aba9a312403e5c33f0f601a4973b4b41e}{mw\+Service\+File\+Transfer\+\_\+get\+Transfers}} (struct \mbox{\hyperlink{structmwServiceFileTransfer}{mw\+Service\+File\+Transfer}} \texorpdfstring{$\ast$}{*}srvc)
\item 
struct \mbox{\hyperlink{structmwServiceFileTransfer}{mw\+Service\+File\+Transfer}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{mw__srvc__ft_8h_a9cdb5f4b3aa64d3caf4897ccf6511490}{mw\+Service\+File\+Transfer\+\_\+new}} (struct \mbox{\hyperlink{structmwSession}{mw\+Session}} \texorpdfstring{$\ast$}{*}session, struct \mbox{\hyperlink{structmwFileTransferHandler}{mw\+File\+Transfer\+Handler}} \texorpdfstring{$\ast$}{*}handler)
\end{DoxyCompactItemize}


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



\doxysubsection{Macro Definition Documentation}
\Hypertarget{mw__srvc__ft_8h_a9546cfa89e4e7842d510024ca00acf6f}\label{mw__srvc__ft_8h_a9546cfa89e4e7842d510024ca00acf6f} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_cancel}{mwFileTransfer\_cancel}}
{\footnotesize\ttfamily \#define mw\+File\+Transfer\+\_\+cancel(\begin{DoxyParamCaption}\item[{}]{ft }\end{DoxyParamCaption})~  \mbox{\hyperlink{mw__srvc__ft_8h_adc7a5ebdbffd7dc3421c127ef052ff15}{mw\+File\+Transfer\+\_\+close}}((ft), \mbox{\hyperlink{mw__srvc__ft_8h_a8af13a1733efdb6ce88f035ed3dbeb8da65dff6000a1cbdeff12811e203bfaafc}{mw\+File\+Transfer\+\_\+\+SUCCESS}});}



cancel an open file transfer 

\Hypertarget{mw__srvc__ft_8h_aeb93cb4ce77fea1c88e0da9cdeb530c7}\label{mw__srvc__ft_8h_aeb93cb4ce77fea1c88e0da9cdeb530c7} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_getSent}{mwFileTransfer\_getSent}}
{\footnotesize\ttfamily \#define mw\+File\+Transfer\+\_\+get\+Sent(\begin{DoxyParamCaption}\item[{}]{ft }\end{DoxyParamCaption})~  (\mbox{\hyperlink{mw__srvc__ft_8h_ab8a3d6ad13859e7432e42c0655e97858}{mw\+File\+Transfer\+\_\+get\+File\+Size}}(ft) -\/ \mbox{\hyperlink{mw__srvc__ft_8h_a37ced6b64ea923ecd5e81c06ecde7d6b}{mw\+File\+Transfer\+\_\+get\+Remaining}}(ft))}



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

\Hypertarget{mw__srvc__ft_8h_a136432fd1b7ce18c2538302a3155a545}\label{mw__srvc__ft_8h_a136432fd1b7ce18c2538302a3155a545} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_isCancelLocal}{mwFileTransfer\_isCancelLocal}}
{\footnotesize\ttfamily \#define mw\+File\+Transfer\+\_\+is\+Cancel\+Local(\begin{DoxyParamCaption}\item[{}]{ft }\end{DoxyParamCaption})~  \mbox{\hyperlink{mw__srvc__ft_8h_ae704530c78547cee3181bf56ab7bcb91}{mw\+File\+Transfer\+\_\+is\+State}}((ft), \mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca4c7bd39dfdb511ca044efed6ed07c7e0}{mw\+File\+Transfer\+\_\+\+CANCEL\+\_\+\+LOCAL}})}

\Hypertarget{mw__srvc__ft_8h_af5454a7c88d60cee0d33a3ae0fad9e7f}\label{mw__srvc__ft_8h_af5454a7c88d60cee0d33a3ae0fad9e7f} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_isCancelRemote}{mwFileTransfer\_isCancelRemote}}
{\footnotesize\ttfamily \#define mw\+File\+Transfer\+\_\+is\+Cancel\+Remote(\begin{DoxyParamCaption}\item[{}]{ft }\end{DoxyParamCaption})~  \mbox{\hyperlink{mw__srvc__ft_8h_ae704530c78547cee3181bf56ab7bcb91}{mw\+File\+Transfer\+\_\+is\+State}}((ft), \mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfcabe34026724b799516305d7debebb5436}{mw\+File\+Transfer\+\_\+\+CANCEL\+\_\+\+REMOTE}})}

\Hypertarget{mw__srvc__ft_8h_a1402a81bc5446a5bd07a5e84eff1b966}\label{mw__srvc__ft_8h_a1402a81bc5446a5bd07a5e84eff1b966} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_isDone}{mwFileTransfer\_isDone}}
{\footnotesize\ttfamily \#define mw\+File\+Transfer\+\_\+is\+Done(\begin{DoxyParamCaption}\item[{}]{ft }\end{DoxyParamCaption})~  \mbox{\hyperlink{mw__srvc__ft_8h_ae704530c78547cee3181bf56ab7bcb91}{mw\+File\+Transfer\+\_\+is\+State}}((ft), \mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca895e247fd66dcbbb8b8e4ea7f383bc0c}{mw\+File\+Transfer\+\_\+\+DONE}})}

\Hypertarget{mw__srvc__ft_8h_ad1a67cc3e86ddecab2d252427e5e5a03}\label{mw__srvc__ft_8h_ad1a67cc3e86ddecab2d252427e5e5a03} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_isNew}{mwFileTransfer\_isNew}}
{\footnotesize\ttfamily \#define mw\+File\+Transfer\+\_\+is\+New(\begin{DoxyParamCaption}\item[{}]{ft }\end{DoxyParamCaption})~  \mbox{\hyperlink{mw__srvc__ft_8h_ae704530c78547cee3181bf56ab7bcb91}{mw\+File\+Transfer\+\_\+is\+State}}((ft), \mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca26679daf78859740399f8a6425c596c6}{mw\+File\+Transfer\+\_\+\+NEW}})}

\Hypertarget{mw__srvc__ft_8h_a18bcede407a34ade87fcb1d5466a05ee}\label{mw__srvc__ft_8h_a18bcede407a34ade87fcb1d5466a05ee} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_isOpen}{mwFileTransfer\_isOpen}}
{\footnotesize\ttfamily \#define mw\+File\+Transfer\+\_\+is\+Open(\begin{DoxyParamCaption}\item[{}]{ft }\end{DoxyParamCaption})~  \mbox{\hyperlink{mw__srvc__ft_8h_ae704530c78547cee3181bf56ab7bcb91}{mw\+File\+Transfer\+\_\+is\+State}}((ft), \mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca52a2582eaf7b494571b1e59bb4286f4d}{mw\+File\+Transfer\+\_\+\+OPEN}})}

\Hypertarget{mw__srvc__ft_8h_a9afa7586b1aabab66cd8d2091bca4da7}\label{mw__srvc__ft_8h_a9afa7586b1aabab66cd8d2091bca4da7} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_isPending}{mwFileTransfer\_isPending}}
{\footnotesize\ttfamily \#define mw\+File\+Transfer\+\_\+is\+Pending(\begin{DoxyParamCaption}\item[{}]{ft }\end{DoxyParamCaption})~  \mbox{\hyperlink{mw__srvc__ft_8h_ae704530c78547cee3181bf56ab7bcb91}{mw\+File\+Transfer\+\_\+is\+State}}((ft), \mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca0955a56b3ea99e5e074c57bd68837550}{mw\+File\+Transfer\+\_\+\+PENDING}})}

\Hypertarget{mw__srvc__ft_8h_ae704530c78547cee3181bf56ab7bcb91}\label{mw__srvc__ft_8h_ae704530c78547cee3181bf56ab7bcb91} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_isState}{mwFileTransfer\_isState}}
{\footnotesize\ttfamily \#define mw\+File\+Transfer\+\_\+is\+State(\begin{DoxyParamCaption}\item[{}]{ft,  }\item[{}]{state }\end{DoxyParamCaption})~  (\mbox{\hyperlink{mw__srvc__ft_8h_a7fdc5f33c32098117bb9f2ad44529cc6}{mw\+File\+Transfer\+\_\+get\+State}}(ft) == (state))}

\Hypertarget{mw__srvc__ft_8h_a7d44f8414c67a8dd5472a01c56432bf2}\label{mw__srvc__ft_8h_a7d44f8414c67a8dd5472a01c56432bf2} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_reject}{mwFileTransfer\_reject}}
{\footnotesize\ttfamily \#define mw\+File\+Transfer\+\_\+reject(\begin{DoxyParamCaption}\item[{}]{ft }\end{DoxyParamCaption})~  \mbox{\hyperlink{mw__srvc__ft_8h_adc7a5ebdbffd7dc3421c127ef052ff15}{mw\+File\+Transfer\+\_\+close}}((ft), \mbox{\hyperlink{mw__srvc__ft_8h_a8af13a1733efdb6ce88f035ed3dbeb8da5c61a5dcbd92e60f515ad9fa3a2a9829}{mw\+File\+Transfer\+\_\+\+REJECTED}})}



reject an incoming file transfer 

\Hypertarget{mw__srvc__ft_8h_a85c063258700af8dc22871d051e4e101}\label{mw__srvc__ft_8h_a85c063258700af8dc22871d051e4e101} 
\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}}
\doxysubsubsection{\texorpdfstring{mwService\_FILE\_TRANSFER}{mwService\_FILE\_TRANSFER}}
{\footnotesize\ttfamily \#define mw\+Service\+\_\+\+FILE\+\_\+\+TRANSFER~0x00000038}



\doxysubsection{Enumeration Type Documentation}
\Hypertarget{mw__srvc__ft_8h_a8af13a1733efdb6ce88f035ed3dbeb8d}\label{mw__srvc__ft_8h_a8af13a1733efdb6ce88f035ed3dbeb8d} 
\index{mw\_srvc\_ft.h@{mw\_srvc\_ft.h}!mwFileTranferCode@{mwFileTranferCode}}
\index{mwFileTranferCode@{mwFileTranferCode}!mw\_srvc\_ft.h@{mw\_srvc\_ft.h}}
\doxysubsubsection{\texorpdfstring{mwFileTranferCode}{mwFileTranferCode}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{mw__srvc__ft_8h_a8af13a1733efdb6ce88f035ed3dbeb8d}{mw\+File\+Tranfer\+Code}}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\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}}}\Hypertarget{mw__srvc__ft_8h_a8af13a1733efdb6ce88f035ed3dbeb8da65dff6000a1cbdeff12811e203bfaafc}\label{mw__srvc__ft_8h_a8af13a1733efdb6ce88f035ed3dbeb8da65dff6000a1cbdeff12811e203bfaafc} 
mw\+File\+Transfer\+\_\+\+SUCCESS&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\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}}}\Hypertarget{mw__srvc__ft_8h_a8af13a1733efdb6ce88f035ed3dbeb8da5c61a5dcbd92e60f515ad9fa3a2a9829}\label{mw__srvc__ft_8h_a8af13a1733efdb6ce88f035ed3dbeb8da5c61a5dcbd92e60f515ad9fa3a2a9829} 
mw\+File\+Transfer\+\_\+\+REJECTED&\\
\hline

\end{DoxyEnumFields}
\Hypertarget{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfc}\label{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfc} 
\index{mw\_srvc\_ft.h@{mw\_srvc\_ft.h}!mwFileTransferState@{mwFileTransferState}}
\index{mwFileTransferState@{mwFileTransferState}!mw\_srvc\_ft.h@{mw\_srvc\_ft.h}}
\doxysubsubsection{\texorpdfstring{mwFileTransferState}{mwFileTransferState}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfc}{mw\+File\+Transfer\+State}}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\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}}}\Hypertarget{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca26679daf78859740399f8a6425c596c6}\label{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca26679daf78859740399f8a6425c596c6} 
mw\+File\+Transfer\+\_\+\+NEW&file transfer is not open \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\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}}}\Hypertarget{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca0955a56b3ea99e5e074c57bd68837550}\label{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca0955a56b3ea99e5e074c57bd68837550} 
mw\+File\+Transfer\+\_\+\+PENDING&file transfer is opening \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\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}}}\Hypertarget{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca52a2582eaf7b494571b1e59bb4286f4d}\label{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca52a2582eaf7b494571b1e59bb4286f4d} 
mw\+File\+Transfer\+\_\+\+OPEN&file transfer is open \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\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}}}\Hypertarget{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca4c7bd39dfdb511ca044efed6ed07c7e0}\label{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca4c7bd39dfdb511ca044efed6ed07c7e0} 
mw\+File\+Transfer\+\_\+\+CANCEL\+\_\+\+LOCAL&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\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}}}\Hypertarget{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfcabe34026724b799516305d7debebb5436}\label{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfcabe34026724b799516305d7debebb5436} 
mw\+File\+Transfer\+\_\+\+CANCEL\+\_\+\+REMOTE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\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}}}\Hypertarget{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca895e247fd66dcbbb8b8e4ea7f383bc0c}\label{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca895e247fd66dcbbb8b8e4ea7f383bc0c} 
mw\+File\+Transfer\+\_\+\+DONE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\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}}}\Hypertarget{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca9bce3d3b93e78978898757c377e3cc17}\label{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca9bce3d3b93e78978898757c377e3cc17} 
mw\+File\+Transfer\+\_\+\+ERROR&error in file transfer \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\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}}}\Hypertarget{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca00c61a63716a529570533ff6c40e67e4}\label{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfca00c61a63716a529570533ff6c40e67e4} 
mw\+File\+Transfer\+\_\+\+UNKNOWN&unknown state \\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\Hypertarget{mw__srvc__ft_8h_a306ca7b808d11d01a777a7d2daaad865}\label{mw__srvc__ft_8h_a306ca7b808d11d01a777a7d2daaad865} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_accept()}{mwFileTransfer\_accept()}}
{\footnotesize\ttfamily int mw\+File\+Transfer\+\_\+accept (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{ft }\end{DoxyParamCaption})}



accept an incoming file transfer 

\Hypertarget{mw__srvc__ft_8h_a859819c4aa699fbf78ae563ab2559b04}\label{mw__srvc__ft_8h_a859819c4aa699fbf78ae563ab2559b04} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_ack()}{mwFileTransfer\_ack()}}
{\footnotesize\ttfamily int mw\+File\+Transfer\+\_\+ack (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{ft }\end{DoxyParamCaption})}



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\textquotesingle{}s ft\+\_\+recv function triggered again even if no ack was sent.

\begin{DoxySeeAlso}{See also}
\doxylink{structmwFileTransferHandler_a8312a9a418155626fd9930cd1cab89cb}{mw\+File\+Transfer\+Handler\+::ft\+\_\+recv} 
\end{DoxySeeAlso}
\Hypertarget{mw__srvc__ft_8h_adc7a5ebdbffd7dc3421c127ef052ff15}\label{mw__srvc__ft_8h_adc7a5ebdbffd7dc3421c127ef052ff15} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_close()}{mwFileTransfer\_close()}}
{\footnotesize\ttfamily int mw\+File\+Transfer\+\_\+close (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{ft,  }\item[{guint32}]{code }\end{DoxyParamCaption})}



Close a file transfer. 

This will trigger the ft\+\_\+close function of the session\textquotesingle{}s handler.

\begin{DoxySeeAlso}{See also}
\doxylink{mw__srvc__ft_8h_a7d44f8414c67a8dd5472a01c56432bf2}{mw\+File\+Transfer\+\_\+reject} 

\doxylink{mw__srvc__ft_8h_a9546cfa89e4e7842d510024ca00acf6f}{mw\+File\+Transfer\+\_\+cancel} 
\end{DoxySeeAlso}
\Hypertarget{mw__srvc__ft_8h_aecbc5a6ed545d960c19883397ca786af}\label{mw__srvc__ft_8h_aecbc5a6ed545d960c19883397ca786af} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_free()}{mwFileTransfer\_free()}}
{\footnotesize\ttfamily void mw\+File\+Transfer\+\_\+free (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{ft }\end{DoxyParamCaption})}



deallocate a file transfer. 

will call mw\+File\+Transfer\+\_\+close if necessary \Hypertarget{mw__srvc__ft_8h_a696299ead4906360fec8eb1ce99e0889}\label{mw__srvc__ft_8h_a696299ead4906360fec8eb1ce99e0889} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_getClientData()}{mwFileTransfer\_getClientData()}}
{\footnotesize\ttfamily gpointer mw\+File\+Transfer\+\_\+get\+Client\+Data (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{ft }\end{DoxyParamCaption})}

\Hypertarget{mw__srvc__ft_8h_a815d8fa885eea01abbf4ffb6486d5e76}\label{mw__srvc__ft_8h_a815d8fa885eea01abbf4ffb6486d5e76} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_getFileName()}{mwFileTransfer\_getFileName()}}
{\footnotesize\ttfamily const char \texorpdfstring{$\ast$}{*} mw\+File\+Transfer\+\_\+get\+File\+Name (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{ft }\end{DoxyParamCaption})}



the publicized file name. 

Not necessarily related to any actual file on either system \Hypertarget{mw__srvc__ft_8h_ab8a3d6ad13859e7432e42c0655e97858}\label{mw__srvc__ft_8h_ab8a3d6ad13859e7432e42c0655e97858} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_getFileSize()}{mwFileTransfer\_getFileSize()}}
{\footnotesize\ttfamily guint32 mw\+File\+Transfer\+\_\+get\+File\+Size (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{ft }\end{DoxyParamCaption})}



total bytes intended to be sent/received 

\Hypertarget{mw__srvc__ft_8h_a1ea2022206eb91083a95e0338e32b4b5}\label{mw__srvc__ft_8h_a1ea2022206eb91083a95e0338e32b4b5} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_getMessage()}{mwFileTransfer\_getMessage()}}
{\footnotesize\ttfamily const char \texorpdfstring{$\ast$}{*} mw\+File\+Transfer\+\_\+get\+Message (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{ft }\end{DoxyParamCaption})}



the message sent along with an offered file transfer 

\Hypertarget{mw__srvc__ft_8h_a37ced6b64ea923ecd5e81c06ecde7d6b}\label{mw__srvc__ft_8h_a37ced6b64ea923ecd5e81c06ecde7d6b} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_getRemaining()}{mwFileTransfer\_getRemaining()}}
{\footnotesize\ttfamily guint32 mw\+File\+Transfer\+\_\+get\+Remaining (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{ft }\end{DoxyParamCaption})}



bytes remaining to be received/send 

\Hypertarget{mw__srvc__ft_8h_a593e815d59dbcd6cc4d55d7f49772ac3}\label{mw__srvc__ft_8h_a593e815d59dbcd6cc4d55d7f49772ac3} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_getService()}{mwFileTransfer\_getService()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structmwServiceFileTransfer}{mw\+Service\+File\+Transfer}} \texorpdfstring{$\ast$}{*} mw\+File\+Transfer\+\_\+get\+Service (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{ft }\end{DoxyParamCaption})}

\Hypertarget{mw__srvc__ft_8h_a7fdc5f33c32098117bb9f2ad44529cc6}\label{mw__srvc__ft_8h_a7fdc5f33c32098117bb9f2ad44529cc6} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_getState()}{mwFileTransfer\_getState()}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{mw__srvc__ft_8h_abd0c1055027e69a50e2b6fd42de08cfc}{mw\+File\+Transfer\+State}} mw\+File\+Transfer\+\_\+get\+State (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{ft }\end{DoxyParamCaption})}



the status of this file transfer 

\Hypertarget{mw__srvc__ft_8h_a3f944af5aa9140d63fcbc0e54b27742f}\label{mw__srvc__ft_8h_a3f944af5aa9140d63fcbc0e54b27742f} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_getUser()}{mwFileTransfer\_getUser()}}
{\footnotesize\ttfamily const struct \mbox{\hyperlink{structmwIdBlock}{mw\+Id\+Block}} \texorpdfstring{$\ast$}{*} mw\+File\+Transfer\+\_\+get\+User (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{ft }\end{DoxyParamCaption})}



the user on the other end of the file transfer 

\Hypertarget{mw__srvc__ft_8h_a15661b21819c2eb05bb0e21c6ccd7cd8}\label{mw__srvc__ft_8h_a15661b21819c2eb05bb0e21c6ccd7cd8} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_new()}{mwFileTransfer\_new()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*} mw\+File\+Transfer\+\_\+new (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwServiceFileTransfer}{mw\+Service\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{srvc,  }\item[{const struct \mbox{\hyperlink{structmwIdBlock}{mw\+Id\+Block}} \texorpdfstring{$\ast$}{*}}]{who,  }\item[{const char \texorpdfstring{$\ast$}{*}}]{msg,  }\item[{const char \texorpdfstring{$\ast$}{*}}]{filename,  }\item[{guint32}]{filesize }\end{DoxyParamCaption})}

\Hypertarget{mw__srvc__ft_8h_ae7e01388fbff11eed5d88291b5be1ff3}\label{mw__srvc__ft_8h_ae7e01388fbff11eed5d88291b5be1ff3} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_offer()}{mwFileTransfer\_offer()}}
{\footnotesize\ttfamily int mw\+File\+Transfer\+\_\+offer (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{ft }\end{DoxyParamCaption})}



initiate an outgoing file transfer 

\Hypertarget{mw__srvc__ft_8h_a136843f3dc890557cac78e380f8581ea}\label{mw__srvc__ft_8h_a136843f3dc890557cac78e380f8581ea} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_removeClientData()}{mwFileTransfer\_removeClientData()}}
{\footnotesize\ttfamily void mw\+File\+Transfer\+\_\+remove\+Client\+Data (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{ft }\end{DoxyParamCaption})}

\Hypertarget{mw__srvc__ft_8h_a3469419f94157a12c7ad44ea9ecf89ed}\label{mw__srvc__ft_8h_a3469419f94157a12c7ad44ea9ecf89ed} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_send()}{mwFileTransfer\_send()}}
{\footnotesize\ttfamily int mw\+File\+Transfer\+\_\+send (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{ft,  }\item[{struct \mbox{\hyperlink{structmwOpaque}{mw\+Opaque}} \texorpdfstring{$\ast$}{*}}]{data }\end{DoxyParamCaption})}



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\textquotesingle{}s handler.

\begin{DoxySeeAlso}{See also}
\doxylink{structmwFileTransferHandler_a9c1fad3acaa6ac01a346296a4f34d7ef}{mw\+File\+Transfer\+Handler\+::ft\+\_\+ack} 
\end{DoxySeeAlso}
\Hypertarget{mw__srvc__ft_8h_ad0843c80a90a136605b65a25ae00e221}\label{mw__srvc__ft_8h_ad0843c80a90a136605b65a25ae00e221} 
\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}}
\doxysubsubsection{\texorpdfstring{mwFileTransfer\_setClientData()}{mwFileTransfer\_setClientData()}}
{\footnotesize\ttfamily void mw\+File\+Transfer\+\_\+set\+Client\+Data (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwFileTransfer}{mw\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{ft,  }\item[{gpointer}]{data,  }\item[{GDestroy\+Notify}]{clean }\end{DoxyParamCaption})}

\Hypertarget{mw__srvc__ft_8h_a404d04c4256cbff5f92bd0c17a922838}\label{mw__srvc__ft_8h_a404d04c4256cbff5f92bd0c17a922838} 
\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}}
\doxysubsubsection{\texorpdfstring{mwServiceFileTransfer\_getHandler()}{mwServiceFileTransfer\_getHandler()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structmwFileTransferHandler}{mw\+File\+Transfer\+Handler}} \texorpdfstring{$\ast$}{*} mw\+Service\+File\+Transfer\+\_\+get\+Handler (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwServiceFileTransfer}{mw\+Service\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{srvc }\end{DoxyParamCaption})}

\Hypertarget{mw__srvc__ft_8h_aba9a312403e5c33f0f601a4973b4b41e}\label{mw__srvc__ft_8h_aba9a312403e5c33f0f601a4973b4b41e} 
\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}}
\doxysubsubsection{\texorpdfstring{mwServiceFileTransfer\_getTransfers()}{mwServiceFileTransfer\_getTransfers()}}
{\footnotesize\ttfamily const GList \texorpdfstring{$\ast$}{*} mw\+Service\+File\+Transfer\+\_\+get\+Transfers (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwServiceFileTransfer}{mw\+Service\+File\+Transfer}} \texorpdfstring{$\ast$}{*}}]{srvc }\end{DoxyParamCaption})}

\Hypertarget{mw__srvc__ft_8h_a9cdb5f4b3aa64d3caf4897ccf6511490}\label{mw__srvc__ft_8h_a9cdb5f4b3aa64d3caf4897ccf6511490} 
\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}}
\doxysubsubsection{\texorpdfstring{mwServiceFileTransfer\_new()}{mwServiceFileTransfer\_new()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structmwServiceFileTransfer}{mw\+Service\+File\+Transfer}} \texorpdfstring{$\ast$}{*} mw\+Service\+File\+Transfer\+\_\+new (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwSession}{mw\+Session}} \texorpdfstring{$\ast$}{*}}]{session,  }\item[{struct \mbox{\hyperlink{structmwFileTransferHandler}{mw\+File\+Transfer\+Handler}} \texorpdfstring{$\ast$}{*}}]{handler }\end{DoxyParamCaption})}

