MiKTeX 26.5-next
A scalable TeX distribution
Loading...
Searching...
No Matches
RepositoryInfo.h
1/* miktex/PackageManager/RepositoryInfo.h: -*- C++ -*-
2
3 Copyright (C) 2001-2022 Christian Schenk
4
5 This file is part of MiKTeX Package Manager.
6
7 MiKTeX Package Manager is free software; you can redistribute it
8 and/or modify it under the terms of the GNU General Public License
9 as published by the Free Software Foundation; either version 2, or
10 (at your option) any later version.
11
12 MiKTeX Package Manager is distributed in the hope that it will be
13 useful, but WITHOUT ANY WARRANTY; without even the implied warranty
14 of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with MiKTeX Package Manager; if not, write to the Free
19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA
20 02111-1307, USA. */
21
22#pragma once
23
24#if !defined(AE9D0FE238A0478AB880D039796623E3)
25#define AE9D0FE238A0478AB880D039796623E3
26
27#include "config.h"
28
29#include <ctime>
30
31#include <ostream>
32#include <string>
33
34#include "definitions.h"
35
36MIKTEX_PACKAGES_BEGIN_NAMESPACE;
37
39enum class PackageLevel
40{
41 None = 0,
45 Basic = 1000,
47 Advanced = 100000,
49 Complete = 1000000000,
50};
51
52inline std::string PackageLevelToString(PackageLevel packageLevel)
53{
54 switch (packageLevel)
55 {
56 case PackageLevel::None:
57 return "none";
58 case PackageLevel::Essential:
59 return "essential";
60 case PackageLevel::Basic:
61 return "basic";
62 case PackageLevel::Advanced:
63 return "advanced";
64 case PackageLevel::Complete:
65 return "complete";
66 default:
67 return "?";
68 }
69}
70
71inline std::ostream& operator<<(std::ostream& os, const PackageLevel packageLevel)
72{
73 return os << PackageLevelToString(packageLevel);
74}
75
78{
79 Unknown,
80 MiKTeXDirect,
85 MiKTeXInstallation
86};
87
88inline std::string RepositoryTypeToString(RepositoryType repositoryType)
89{
90 switch (repositoryType)
91 {
92 case RepositoryType::Unknown:
93 return "unknown";
94 case RepositoryType::MiKTeXDirect:
95 return "miktexdirect";
96 case RepositoryType::Local:
97 return "local";
98 case RepositoryType::Remote:
99 return "remote";
100 case RepositoryType::MiKTeXInstallation:
101 return "miktexinstallation";
102 default:
103 return "?";
104 }
105}
106
107inline std::ostream& operator<<(std::ostream& os, const RepositoryType repositoryType)
108{
109 return os << RepositoryTypeToString(repositoryType);
110}
111
114{
115 Unknown,
120};
121
122inline std::string RepositoryStatusToString(RepositoryStatus repositoryStatus)
123{
124 switch (repositoryStatus)
125 {
126 case RepositoryStatus::Unknown:
127 return "unknown";
128 case RepositoryStatus::Online:
129 return "online";
130 case RepositoryStatus::Offline:
131 return "offline";
132 default:
133 return "?";
134 }
135}
136
137inline std::ostream& operator<<(std::ostream& os, const RepositoryStatus repositoryStatus)
138{
139 return os << RepositoryStatusToString(repositoryStatus);
140}
141
144{
145 Unknown,
150};
151
152inline std::string RepositoryIntegrityToString(RepositoryIntegrity repositoryIntegrity)
153{
154 switch (repositoryIntegrity)
155 {
156 case RepositoryIntegrity::Unknown:
157 return "unknown";
158 case RepositoryIntegrity::Intact:
159 return "intact";
160 case RepositoryIntegrity::Corrupted:
161 return "corrupted";
162 default:
163 return "?";
164 }
165}
166
167inline std::ostream& operator<<(std::ostream& os, const RepositoryIntegrity repositoryIntegrity)
168{
169 return os << RepositoryIntegrityToString(repositoryIntegrity);
170}
171
174{
175 Unknown,
180};
181
182inline std::string RepositoryReleaseStateToString(RepositoryReleaseState repositoryReleaseState)
183{
184 switch (repositoryReleaseState)
185 {
186 case RepositoryReleaseState::Unknown:
187 return "unknown";
188 case RepositoryReleaseState::Stable:
189 return "stable";
190 case RepositoryReleaseState::Next:
191 return "next";
192 default:
193 return "?";
194 }
195}
196
197inline std::ostream& operator<<(std::ostream& os, const RepositoryReleaseState repositoryReleaseState)
198{
199 return os << RepositoryReleaseStateToString(repositoryReleaseState);
200}
201
204{
208 std::string url;
210 std::string description;
212 std::string country;
214 std::string town;
216 PackageLevel packageLevel = PackageLevel::None;
218 unsigned int version = 0;
220 std::time_t timeDate = InvalidTimeT;
222 RepositoryStatus status = RepositoryStatus::Unknown;
224 RepositoryIntegrity integrity = RepositoryIntegrity::Unknown;
226 unsigned delay = 0;
228 unsigned relativeDelay = 0;
230 RepositoryReleaseState releaseState = RepositoryReleaseState::Unknown;
232 unsigned ranking = 0;
234 double dataTransferRate = 0.0;
239};
240
241inline bool operator==(const RepositoryInfo& lhs, const RepositoryInfo& rhs)
242{
243 return lhs.type == rhs.type && lhs.url == rhs.url;
244}
245
246inline bool operator!=(const RepositoryInfo& lhs, const RepositoryInfo& rhs)
247{
248 return !(lhs == rhs);
249}
250
251MIKTEX_PACKAGES_END_NAMESPACE;
252
253#endif
RepositoryStatus
Repository status.
Definition RepositoryInfo.h:114
@ Online
Repository is known to be online.
Definition RepositoryInfo.h:117
@ Offline
Remote repository is known to be offline.
Definition RepositoryInfo.h:119
RepositoryIntegrity
Repository integrrity.
Definition RepositoryInfo.h:144
@ Corrupted
The repository is known to be corrupted.
Definition RepositoryInfo.h:149
@ Intact
The repository is known to be intact.
Definition RepositoryInfo.h:147
constexpr std::time_t InvalidTimeT
An invalid timestamp.
Definition definitions.h:30
PackageLevel
Package level.
Definition RepositoryInfo.h:40
@ Basic
Basic package set.
Definition RepositoryInfo.h:45
@ Advanced
Advanced package set.
Definition RepositoryInfo.h:47
@ Complete
Complete package set.
Definition RepositoryInfo.h:49
@ Essential
Essential package set.
Definition RepositoryInfo.h:43
RepositoryReleaseState
Repository release state.
Definition RepositoryInfo.h:174
@ Next
Experimental channel.
Definition RepositoryInfo.h:179
@ Stable
Stable channel.
Definition RepositoryInfo.h:177
RepositoryType
Repository type.
Definition RepositoryInfo.h:78
@ Local
Local (file system) directory.
Definition RepositoryInfo.h:82
@ Remote
Remote (Internet) directory.
Definition RepositoryInfo.h:84
Package repository info struct.
Definition RepositoryInfo.h:204
unsigned relativeDelay
Relative delay (in days).
Definition RepositoryInfo.h:228
unsigned int version
Version number.
Definition RepositoryInfo.h:218
RepositoryIntegrity integrity
Integrity of the repository.
Definition RepositoryInfo.h:224
std::string url
URL of (or path to) the repository.
Definition RepositoryInfo.h:208
std::string description
One-line description.
Definition RepositoryInfo.h:210
std::string country
Country where the repository is resident.
Definition RepositoryInfo.h:212
std::time_t timeDate
Time/Date of last update.
Definition RepositoryInfo.h:220
unsigned ranking
Ranking (low is better than high).
Definition RepositoryInfo.h:232
unsigned delay
Delay (in days).
Definition RepositoryInfo.h:226
double dataTransferRate
Data transfer rate (bytes/sec).
Definition RepositoryInfo.h:234
std::string town
Town where the repository is resident.
Definition RepositoryInfo.h:214
RepositoryReleaseState releaseState
Repository release State.
Definition RepositoryInfo.h:230
RepositoryStatus status
Status of the repository.
Definition RepositoryInfo.h:222
RepositoryType type
Type of repository.
Definition RepositoryInfo.h:206
PackageLevel packageLevel
Package level.
Definition RepositoryInfo.h:216
std::time_t lastVisitTime
Last visit time.
Definition RepositoryInfo.h:238
std::time_t lastCheckTime
Last check time.
Definition RepositoryInfo.h:236