aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Library/ml_wire/Downloaded.cpp
blob: e088a37687079020065e9aece8bfa545004c95f7 (plain) (blame)
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include "main.h"
#include "Downloaded.h"

DownloadList downloadedFiles;
using namespace Nullsoft::Utility;
Nullsoft::Utility::LockGuard downloadedLock;

DownloadedFile::DownloadedFile()
{
	Init();
}

DownloadedFile::DownloadedFile(const wchar_t *_url, const wchar_t *_path, const wchar_t *_channel, const wchar_t *_item, __time64_t publishDate)
{
	Init();

	this->publishDate = publishDate;

	SetChannel( _channel );
	SetItem( _item );
	SetPath( _path );
	SetURL( _url );
}

DownloadedFile::DownloadedFile( const DownloadedFile &copy )
{
	Init();

	operator =( copy );
}

DownloadedFile::~DownloadedFile()
{
	Reset();
}


void DownloadedFile::Init()
{
	url             = 0;
	path            = 0;
	channel         = 0;
	item            = 0;
	bytesDownloaded = 0;
	totalSize       = 0;
	publishDate     = 0;
}

void DownloadedFile::Reset()
{
	if ( url )
	{
		free( url );
		url = 0;
	}

	if ( path )
	{
		free( path );
		path = 0;
	}

	if ( channel )
	{
		free( channel );
		channel = 0;
	}

	if ( item )
	{
		free( item );
		item = 0;
	}
}

void DownloadedFile::SetPath( const wchar_t *_path )
{
	if ( path )
		free( path );

	path = _wcsdup( _path );
}

void DownloadedFile::SetURL( const wchar_t *_url )
{
	if ( url )
		free( url );

	url = _wcsdup( _url );
}

void DownloadedFile::SetItem( const wchar_t *_item )
{
	free( item );
	item = _wcsdup( _item );
}

void DownloadedFile::SetChannel( const wchar_t *_channel )
{
	free( channel );
	channel = _wcsdup( _channel );
}

const DownloadedFile &DownloadedFile::operator =( const DownloadedFile &copy )
{
	Reset();
	Init();

	SetChannel( copy.channel );
	SetItem( copy.item );

	bytesDownloaded = copy.bytesDownloaded;
	totalSize       = copy.totalSize;
	publishDate     = copy.publishDate;
	downloadDate    = copy.downloadDate;

	SetPath( copy.path );
	SetURL( copy.url );

	return *this;
}