/* ** Transfer Header */ #include #include #include #include #include "include/napster.h" #include "include/thread.h" #include "include/download.h" #ifndef AMSTER_TRANSFER_H #define AMSTER_TRANSFER_H struct TransferData { struct MUI_InputHandlerNode ihnode; struct MUI_InputHandlerNode waitnode; u_long *list; u_long *info; }; /* Download states - IMPORTANT: These states MUST be in the same order as the catalog string array in transfer.c */ enum TransferState { DLS_PREP, DLS_QUEUE, DLS_WAIT, DLS_CON, DLS_REQ, DLS_INIT, DLS_DOWN, DLS_UP, DLS_FIN, DLS_ABORT, DLS_ERROR }; /* Transfer errors - IMPORTANT: These errors MUST be in the same order as the catalog string array in transfer.c */ enum TransferError { ERROR_UNKNOWN, ERROR_FILEOPEN, ERROR_FILEREAD, ERROR_FILEWRITE, ERROR_NET, ERROR_LOGGEDOUT, ERROR_NOTFOUND, ERROR_INVALIDREQUEST, ERROR_TEASER, ERROR_BUSY, ERROR_OUTOFBOUND }; enum NetError { ERROR_NET_TIMEOUT, ERROR_NET_REFUSED, ERROR_NET_RESET, ERROR_NET_PIPE }; enum TransferType { TYPE_DOWNLOAD_IN, TYPE_DOWNLOAD_OUT, TYPE_UPLOAD_IN, TYPE_UPLOAD_OUT }; typedef struct songtrans_struct { struct songtrans_struct *next; song song; char *mynick; u_long ip; char host[512]; int port; char *fname; u_long size, cur, resumestart; enum TransferType type; enum TransferState state; enum TransferError error; int ErrorCode; int RetryCount; thread t; int ts; int cps, stalltick; u_long oldsize; time_t starttime, transtime, timeleft; /* thread data */ struct Library *DosBase; struct Library *SocketBase; long s; char *buffer; BPTR f; u_long nsig,nsigm,msigm; struct sockaddr_in sin; struct fd_set fds; struct timeval tv; } *songtrans, _songtrans; extern ULONG dl_setup(struct IClass *cl, Object *obj, Msg msg); extern ULONG dl_muicleanup(struct IClass *cl, Object *obj, Msg msg); extern MUIF translistdisp(REG(a2) char **array, REG(a1) songtrans sd); extern void CalculateCps(songtrans sd); extern void TransferSetError(struct TransferData *data, char *title, char *user, int error); extern void TransferInfo(struct TransferData *data); extern void TransferCleanup(struct TransferData *data); extern void TransferHandleError(songtrans sd); extern BOOL InitTransferThread(thread t, songtrans sd); extern void ExitTransferThread(songtrans sd, int ret); #endif /* AMSTER_TRANSFER_H */