1// 2// This file is part of the aMule Project. 3// 4// Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) 5// Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) 6// 7// Any parts of this program derived from the xMule, lMule or eMule project, 8// or contributed by third-party developers are copyrighted by their 9// respective authors. 10// 11// This program is free software; you can redistribute it and/or modify 12// it under the terms of the GNU General Public License as published by 13// the Free Software Foundation; either version 2 of the License, or 14// (at your option) any later version. 15// 16// This program is distributed in the hope that it will be useful, 17// but WITHOUT ANY WARRANTY; without even the implied warranty of 18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19// GNU General Public License for more details. 20// 21// You should have received a copy of the GNU General Public License 22// along with this program; if not, write to the Free Software 23// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 24// 25 26#ifndef PARTFILECONVERT_H 27#if !(defined __need_convertinfo || defined __need_convstatus) 28# define PARTFILECONVERT_H 29#endif 30 31#ifndef __have_convstatus 32#define __have_convstatus 33 34enum ConvStatus { 35 CONV_OK = 0, 36 CONV_QUEUE, 37 CONV_INPROGRESS, 38 CONV_OUTOFDISKSPACE, 39 CONV_PARTMETNOTFOUND, 40 CONV_IOERROR, 41 CONV_FAILED, 42 CONV_BADFORMAT, 43 CONV_ALREADYEXISTS 44}; 45 46#endif /* convstatus */ 47#undef __need_convstatus 48 49#if !defined __have_convertinfo && (defined __need_convertinfo || defined PARTFILECONVERT_H) 50#define __have_convertinfo 51 52#include "Types.h" 53#include <common/Path.h> 54 55struct ConvertJob; 56 57struct ConvertInfo { 58 unsigned id; 59 CPath folder; 60 CPath filename; 61 wxString filehash; 62 ConvStatus state; 63 uint32_t size; 64 uint32_t spaceneeded; 65 ConvertInfo(ConvertJob *); 66}; 67 68#endif /* convertinfo */ 69#undef __need_convertinfo 70 71#ifdef PARTFILECONVERT_H 72 73#include <wx/thread.h> 74 75class CPartFileConvert : private wxThread 76{ 77public: 78 static int ScanFolderToAdd(const CPath& folder, bool deletesource = false); 79 static void ConvertToeMule(const CPath& file, bool deletesource = false); 80 static void StartThread(); 81 static void StopThread(); 82 83 static void RemoveJob(unsigned id); 84 static void RetryJob(unsigned id); 85 static void ReaddAllJobs(); 86 87private: 88 CPartFileConvert() : wxThread(wxTHREAD_DETACHED) {} 89 90 static ConvStatus performConvertToeMule(const CPath& file); 91 virtual ExitCode Entry(); 92 93 static wxMutex s_mutex; 94 static wxThread* s_convertPfThread; 95 static std::list<ConvertJob*> s_jobs; 96 static ConvertJob* s_pfconverting; 97}; 98 99#endif 100 101#endif /* PARTFILECONVERT_H */ 102