00001
00032 #ifndef LL_LLXFER_FILE_H
00033 #define LL_LLXFER_FILE_H
00034
00035 #include "llxfer.h"
00036 #include "lldir.h"
00037
00038 class LLXfer_File : public LLXfer
00039 {
00040 protected:
00041 FILE *mFp;
00042 char mLocalFilename[LL_MAX_PATH];
00043 char mRemoteFilename[LL_MAX_PATH];
00044 ELLPath mRemotePath;
00045 char mTempFilename[LL_MAX_PATH];
00046
00047 BOOL mDeleteLocalOnCompletion;
00048 BOOL mDeleteRemoteOnCompletion;
00049
00050 public:
00051 LLXfer_File (S32 chunk_size);
00052 LLXfer_File (const LLString& local_filename, BOOL delete_local_on_completion, S32 chunk_size);
00053 virtual ~LLXfer_File();
00054
00055 virtual void init(const LLString& local_filename, BOOL delete_local_on_completion, S32 chunk_size);
00056 virtual void free();
00057
00058 virtual S32 initializeRequest(U64 xfer_id,
00059 const LLString& local_filename,
00060 const LLString& remote_filename,
00061 ELLPath remote_path,
00062 const LLHost& remote_host,
00063 BOOL delete_remote_on_completion,
00064 void (*callback)(void**,S32,LLExtStat),
00065 void** user_data);
00066 virtual S32 startDownload();
00067
00068 virtual S32 processEOF();
00069
00070 virtual S32 startSend (U64 xfer_id, const LLHost &remote_host);
00071
00072 virtual S32 suck(S32 start_position);
00073 virtual S32 flush();
00074
00075 virtual BOOL matchesLocalFilename(const LLString& filename);
00076 virtual BOOL matchesRemoteFilename(const LLString& filename, ELLPath remote_path);
00077
00078 virtual S32 getMaxBufferSize();
00079
00080 virtual U32 getXferTypeTag();
00081
00082 virtual const char *getName();
00083 };
00084
00085 #endif
00086
00087
00088
00089
00090