summaryrefslogtreecommitdiffstats
path: root/libktorrent/migrate/migrate.cpp
blob: eddde8338d06879ffc9d43411714533e0e085910 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/***************************************************************************
 *   Copyright (C) 2005 by Joris Guisson                                   *
 *   joris.guisson@gmail.com                                               *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.             *
 ***************************************************************************/
#include <kurl.h>
#include <klocale.h>
#include <util/log.h>
#include <util/error.h>
#include <util/fileops.h>
#include <util/functions.h>
#include <torrent/globals.h>
#include "migrate.h"
#include "ccmigrate.h"
#include "cachemigrate.h"

namespace bt
{

	Migrate::Migrate()
	{}


	Migrate::~Migrate()
	{}

	void Migrate::migrate(const Torrent & tor,const QString & tor_dir,const QString & sdir)
	{
		// check if directory exists
		if (!bt::Exists(tor_dir))
			throw Error(i18n("The directory %1 does not exist").arg(tor_dir));
		
		// make sure it ends with a /
		QString tdir = tor_dir;
		if (!tdir.endsWith(bt::DirSeparator()))
			tdir += bt::DirSeparator();
		
		// see if the current_chunks file exists
		if (bt::Exists(tdir + "current_chunks"))
		{
			// first see if it isn't a download started by a post-mmap version
			if (!IsPreMMap(tdir + "current_chunks"))
			{
				// it's not pre, so it must be post, so just return
				Out() << "No migrate needed" << endl;
				return;
			}
			
			MigrateCurrentChunks(tor,tdir + "current_chunks"); 
		}
		
		// now we need to migrate t
		if (IsCacheMigrateNeeded(tor,tdir + "cache" + bt::DirSeparator()))
		{
			MigrateCache(tor,tdir + "cache" + bt::DirSeparator(),sdir);
		}
	}
	
	
	
}