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