home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #5 / Amiga Plus CD - 2000 - No. 5.iso / Tools / Musik / Misc / Amster / Source / include / transfer.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-01  |  2.7 KB  |  128 lines

  1. /*
  2. ** Transfer Header
  3. */
  4.  
  5. #include <sys/types.h>
  6. #include <libraries/dos.h>
  7.  
  8. #include <time.h>
  9. #include <netinet/in.h>
  10.  
  11. #include "include/napster.h"
  12. #include "include/thread.h"
  13. #include "include/download.h"
  14.  
  15. #ifndef AMSTER_TRANSFER_H
  16. #define AMSTER_TRANSFER_H
  17.  
  18. struct TransferData {
  19.     struct MUI_InputHandlerNode ihnode;
  20.     struct MUI_InputHandlerNode waitnode;
  21.     struct MUI_InputHandlerNode watchnode;
  22.     u_long *list;
  23.     u_long *info;
  24. };
  25.  
  26. /* Download states
  27.    - IMPORTANT: These states MUST be in the same order as the
  28.      catalog string array in transfer.c
  29. */
  30. enum TransferState {
  31.     DLS_PREP,
  32.     DLS_QUEUE,
  33.     DLS_WAIT,
  34.     DLS_CON,
  35.     DLS_REQ,
  36.     DLS_INIT,
  37.     DLS_DOWN,
  38.     DLS_UP,
  39.     DLS_FIN,
  40.     DLS_ABORT,
  41.     DLS_ERROR
  42. };
  43.  
  44. /* Transfer errors
  45.    - IMPORTANT: These errors MUST be in the same order as the
  46.      catalog string array in transfer.c
  47. */
  48. enum TransferError {
  49.     ERROR_UNKNOWN,
  50.     ERROR_FILEOPEN,
  51.     ERROR_FILEREAD,
  52.     ERROR_FILEWRITE,
  53.     ERROR_NET,
  54.     ERROR_LOGGEDOUT,
  55.     ERROR_NOTFOUND,
  56.     ERROR_INVALIDREQUEST,
  57.     ERROR_TEASER,
  58.     ERROR_BUSY,
  59.     ERROR_NOTREQUESTED,
  60.     ERROR_TIMEOUT,
  61.     ERROR_OUTOFBOUND
  62. };
  63.  
  64. enum NetError {
  65.     ERROR_NET_TIMEOUT,
  66.     ERROR_NET_REFUSED,
  67.     ERROR_NET_RESET,
  68.     ERROR_NET_PIPE
  69. };
  70.  
  71. enum TransferType {
  72.     TYPE_DOWNLOAD_IN,
  73.     TYPE_DOWNLOAD_OUT,
  74.     TYPE_UPLOAD_IN,
  75.     TYPE_UPLOAD_OUT
  76. };
  77.  
  78. typedef struct songtrans_struct {
  79.     struct songtrans_struct *next;
  80.     song song;
  81.     char *mynick;
  82.     u_long ip;
  83.     char host[512];
  84.     int port;
  85.     char *fname;
  86.     u_long size, cur, resumestart;
  87.     enum TransferType type;
  88.     enum TransferState state;
  89.     enum TransferError error;
  90.     int ErrorCode;
  91.     int RetryCount;
  92.     thread t;
  93.     int ts;
  94.     int cps, stalltick;
  95.     u_long oldsize;
  96.     time_t reqtime;    /* Time when the request is made */
  97.     time_t starttime, transtime, timeleft;
  98.  
  99.     /* thread data */
  100.     struct Library *DosBase;
  101.     struct Library *SocketBase;
  102.     long s;
  103.     char *buffer;
  104.     BPTR f;
  105.     u_long nsig, nsigm, msigm;
  106.     struct sockaddr_in sin;
  107.     struct fd_set fds;
  108.     struct timeval tv;
  109. } *songtrans, _songtrans;
  110.  
  111.  
  112. extern ULONG dl_setup(struct IClass *cl, Object *obj, Msg msg);
  113. extern ULONG dl_muicleanup(struct IClass *cl, Object *obj, Msg msg);
  114. extern MUIF translistdisp(REG(a2) char **array, REG(a1) songtrans sd);
  115. extern MUIF translistdest(REG(a2) APTR pool, REG(a1) songtrans sd);
  116. extern void CalculateCps(songtrans sd);
  117. extern void TransferSetError(struct TransferData *data, char *title, char *user, int error);
  118. extern void TransferInfo(struct TransferData *data);
  119. extern void TransferAbort(struct TransferData *data);
  120. extern void TransferCleanup(struct TransferData *data);
  121. extern void TransferWatcher(struct TransferData *data);
  122. extern void TransferHandleError(songtrans sd);
  123. extern BOOL InitTransferThread(thread t, songtrans sd);
  124. extern void ExitTransferThread(songtrans sd, int ret);
  125.  
  126.  
  127. #endif    /* AMSTER_TRANSFER_H */
  128.