mw_srvc_ft.h File Reference


Detailed Description

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

#include "mw_common.h"

Go to the source code of this file.

Data Structures

struct  mwFileTransferHandler

Defines

#define mwFileTransfer_cancel(ft)   mwFileTransfer_close((ft), mwFileTransfer_SUCCESS);
 cancel an open file transfer
#define mwFileTransfer_getSent(ft)   (mwFileTransfer_getFileSize(ft) - mwFileTransfer_getRemaining(ft))
 count of bytes sent/received over this file transfer so far
#define mwFileTransfer_isCancelLocal(ft)   mwFileTransfer_isState((ft), mwFileTransfer_CANCEL_LOCAL)
#define mwFileTransfer_isCancelRemote(ft)   mwFileTransfer_isState((ft), mwFileTransfer_CANCEL_REMOTE)
#define mwFileTransfer_isDone(ft)   mwFileTransfer_isState((ft), mwFileTransfer_DONE)
#define mwFileTransfer_isNew(ft)   mwFileTransfer_isState((ft), mwFileTransfer_NEW)
#define mwFileTransfer_isOpen(ft)   mwFileTransfer_isState((ft), mwFileTransfer_OPEN)
#define mwFileTransfer_isPending(ft)   mwFileTransfer_isState((ft), mwFileTransfer_PENDING)
#define mwFileTransfer_isState(ft, state)   (mwFileTransfer_getState(ft) == (state))
#define mwFileTransfer_reject(ft)   mwFileTransfer_close((ft), mwFileTransfer_REJECTED)
 reject an incoming file transfer
#define mwService_FILE_TRANSFER   0x00000038

Enumerations

enum  mwFileTranferCode {
  mwFileTransfer_SUCCESS = 0x00000000,
  mwFileTransfer_REJECTED = 0x08000606
}
enum  mwFileTransferState {
  mwFileTransfer_NEW,
  mwFileTransfer_PENDING,
  mwFileTransfer_OPEN,
  mwFileTransfer_CANCEL_LOCAL,
  mwFileTransfer_CANCEL_REMOTE,
  mwFileTransfer_DONE,
  mwFileTransfer_ERROR,
  mwFileTransfer_UNKNOWN
}

Functions

int mwFileTransfer_accept (struct mwFileTransfer *ft)
 accept an incoming file transfer
int mwFileTransfer_ack (struct mwFileTransfer *ft)
 acknowledge the receipt of a chunk of data from an inbound file transfer.
int mwFileTransfer_close (struct mwFileTransfer *ft, guint32 code)
 Close a file transfer.
void mwFileTransfer_free (struct mwFileTransfer *ft)
 deallocate a file transfer.
gpointer mwFileTransfer_getClientData (struct mwFileTransfer *ft)
const char * mwFileTransfer_getFileName (struct mwFileTransfer *ft)
 the publicized file name.
guint32 mwFileTransfer_getFileSize (struct mwFileTransfer *ft)
 total bytes intended to be sent/received
const char * mwFileTransfer_getMessage (struct mwFileTransfer *ft)
 the message sent along with an offered file transfer
guint32 mwFileTransfer_getRemaining (struct mwFileTransfer *ft)
 bytes remaining to be received/send
mwServiceFileTransfermwFileTransfer_getService (struct mwFileTransfer *ft)
enum mwFileTransferState mwFileTransfer_getState (struct mwFileTransfer *ft)
 the status of this file transfer
const struct mwIdBlockmwFileTransfer_getUser (struct mwFileTransfer *ft)
 the user on the other end of the file transfer
mwFileTransfermwFileTransfer_new (struct mwServiceFileTransfer *srvc, const struct mwIdBlock *who, const char *msg, const char *filename, guint32 filesize)
int mwFileTransfer_offer (struct mwFileTransfer *ft)
 initiate an outgoing file transfer
void mwFileTransfer_removeClientData (struct mwFileTransfer *ft)
int mwFileTransfer_send (struct mwFileTransfer *ft, struct mwOpaque *data)
 send a chunk of data over an outbound file transfer.
void mwFileTransfer_setClientData (struct mwFileTransfer *ft, gpointer data, GDestroyNotify clean)
mwFileTransferHandlermwServiceFileTransfer_getHandler (struct mwServiceFileTransfer *srvc)
const GList * mwServiceFileTransfer_getTransfers (struct mwServiceFileTransfer *srvc)
mwServiceFileTransfermwServiceFileTransfer_new (struct mwSession *session, struct mwFileTransferHandler *handler)


Define Documentation

#define mwFileTransfer_cancel ft   )     mwFileTransfer_close((ft), mwFileTransfer_SUCCESS);
 

cancel an open file transfer

#define mwFileTransfer_getSent ft   )     (mwFileTransfer_getFileSize(ft) - mwFileTransfer_getRemaining(ft))
 

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

#define mwFileTransfer_isCancelLocal ft   )     mwFileTransfer_isState((ft), mwFileTransfer_CANCEL_LOCAL)
 

#define mwFileTransfer_isCancelRemote ft   )     mwFileTransfer_isState((ft), mwFileTransfer_CANCEL_REMOTE)
 

#define mwFileTransfer_isDone ft   )     mwFileTransfer_isState((ft), mwFileTransfer_DONE)
 

#define mwFileTransfer_isNew ft   )     mwFileTransfer_isState((ft), mwFileTransfer_NEW)
 

#define mwFileTransfer_isOpen ft   )     mwFileTransfer_isState((ft), mwFileTransfer_OPEN)
 

#define mwFileTransfer_isPending ft   )     mwFileTransfer_isState((ft), mwFileTransfer_PENDING)
 

#define mwFileTransfer_isState ft,
state   )     (mwFileTransfer_getState(ft) == (state))
 

#define mwFileTransfer_reject ft   )     mwFileTransfer_close((ft), mwFileTransfer_REJECTED)
 

reject an incoming file transfer

#define mwService_FILE_TRANSFER   0x00000038
 


Enumeration Type Documentation

enum mwFileTranferCode
 

Enumerator:
mwFileTransfer_SUCCESS 
mwFileTransfer_REJECTED 

enum mwFileTransferState
 

Enumerator:
mwFileTransfer_NEW  file transfer is not open
mwFileTransfer_PENDING  file transfer is opening
mwFileTransfer_OPEN  file transfer is open
mwFileTransfer_CANCEL_LOCAL 
mwFileTransfer_CANCEL_REMOTE 
mwFileTransfer_DONE 
mwFileTransfer_ERROR  error in file transfer
mwFileTransfer_UNKNOWN  unknown state


Function Documentation

int mwFileTransfer_accept struct mwFileTransfer ft  ) 
 

accept an incoming file transfer

int mwFileTransfer_ack struct mwFileTransfer ft  ) 
 

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.

See also:
mwFileTransferHandler::ft_recv

int mwFileTransfer_close struct mwFileTransfer ft,
guint32  code
 

Close a file transfer.

This will trigger the ft_close function of the session's handler.

See also:
mwFileTransfer_reject

mwFileTransfer_cancel

void mwFileTransfer_free struct mwFileTransfer ft  ) 
 

deallocate a file transfer.

will call mwFileTransfer_close if necessary

gpointer mwFileTransfer_getClientData struct mwFileTransfer ft  ) 
 

const char* mwFileTransfer_getFileName struct mwFileTransfer ft  ) 
 

the publicized file name.

Not necessarily related to any actual file on either system

guint32 mwFileTransfer_getFileSize struct mwFileTransfer ft  ) 
 

total bytes intended to be sent/received

const char* mwFileTransfer_getMessage struct mwFileTransfer ft  ) 
 

the message sent along with an offered file transfer

guint32 mwFileTransfer_getRemaining struct mwFileTransfer ft  ) 
 

bytes remaining to be received/send

struct mwServiceFileTransfer* mwFileTransfer_getService struct mwFileTransfer ft  ) 
 

enum mwFileTransferState mwFileTransfer_getState struct mwFileTransfer ft  ) 
 

the status of this file transfer

const struct mwIdBlock* mwFileTransfer_getUser struct mwFileTransfer ft  ) 
 

the user on the other end of the file transfer

struct mwFileTransfer* mwFileTransfer_new struct mwServiceFileTransfer srvc,
const struct mwIdBlock who,
const char *  msg,
const char *  filename,
guint32  filesize
 

int mwFileTransfer_offer struct mwFileTransfer ft  ) 
 

initiate an outgoing file transfer

void mwFileTransfer_removeClientData struct mwFileTransfer ft  ) 
 

int mwFileTransfer_send struct mwFileTransfer ft,
struct mwOpaque data
 

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.

See also:
mwFileTransferHandler::ft_ack

void mwFileTransfer_setClientData struct mwFileTransfer ft,
gpointer  data,
GDestroyNotify  clean
 

struct mwFileTransferHandler* mwServiceFileTransfer_getHandler struct mwServiceFileTransfer srvc  ) 
 

const GList* mwServiceFileTransfer_getTransfers struct mwServiceFileTransfer srvc  ) 
 

struct mwServiceFileTransfer* mwServiceFileTransfer_new struct mwSession session,
struct mwFileTransferHandler handler
 


Generated on Sun Jan 15 20:26:09 2006 for meanwhile by  doxygen 1.4.6