34 #include <QCoreApplication>
45 , Settings_ (QCoreApplication::organizationName (),
46 QCoreApplication::applicationName ())
48 Settings_.beginGroup (
"SyncDeltaManager");
49 Settings_.beginGroup (
id);
54 Settings_.endGroup ();
55 Settings_.endGroup ();
60 Settings_.beginGroup (chainId);
61 bool shouldStore = Settings_.value (
"EverRequested",
false).toBool ();
62 Settings_.endGroup ();
66 QDir dir = GetDir (chainId);
67 int curNum = GetLastFileNum (chainId) + 1;
69 StoreImpl (dir.absoluteFilePath (QString::number (curNum)), payload);
71 SetLastFileNum (chainId, curNum);
76 Settings_.beginGroup (chainId);
77 bool shouldStore = Settings_.value (
"EverRequested",
false).toBool ();
78 Settings_.endGroup ();
82 QDir dir = GetDir (chainId);
83 int curNum = GetLastFileNum (chainId);
86 StoreImpl (dir.absoluteFilePath (QString::number (++curNum)), payload);
88 SetLastFileNum (chainId, curNum);
95 QMap<int, Sync::Payload> tmpPayloads;
97 QDir dir = GetDir (chainId);
99 Q_FOREACH (
const QString& filename, dir.entryList (QDir::Files | QDir::NoDotAndDotDot))
102 int num = filename.toInt (&ok);
106 QFile file (dir.absoluteFilePath (filename));
107 if (!file.open (QIODevice::ReadOnly))
109 qWarning () << Q_FUNC_INFO
113 << file.errorString ();
114 throw std::runtime_error (
"Unable to open file for reading.");
117 QByteArray data = file.readAll ();
119 tmpPayloads [num] = payload;
122 QList<Sync::Payload> result;
123 QList<int> keys = tmpPayloads.keys ();
124 std::sort (keys.begin (), keys.end ());
125 Q_FOREACH (
int key, keys)
126 result << tmpPayloads [key];
133 QDir dir = GetDir (chainId);
135 Q_FOREACH (
const QString& filename, dir.entryList (QDir::Files | QDir::NoDotAndDotDot))
137 if (!dir.remove (filename))
138 qWarning () << Q_FUNC_INFO
139 <<
"could not remove"
148 Settings_.beginGroup (chainId);
149 Settings_.setValue (
"EverRequested",
true);
150 Settings_.endGroup ();
160 Settings_.beginGroup (chainId);
161 int num = Settings_.value (
"LastFileNum", 0).toInt ();
162 Settings_.endGroup ();
166 void SyncDeltaManager::SetLastFileNum (
const Sync::ChainID_t& chainId,
int num)
168 Settings_.beginGroup (chainId);
169 Settings_.setValue (
"LastFileNum", num);
170 Settings_.endGroup ();
173 void SyncDeltaManager::StoreImpl (
const QString& path,
const Sync::Payload& payload)
176 if (!file.open (QIODevice::WriteOnly))
178 qWarning () << Q_FUNC_INFO
179 <<
"unable to open file"
182 << file.errorString ();
183 throw std::runtime_error (
"Unable to open file for writing.");
Sync::Payloads_t Get(const Sync::ChainID_t &)
Payload Deserialize(const QByteArray &data)
void Purge(const Sync::ChainID_t &, quint32 num)
QByteArray Serialize(const Payload &payload)
void DeltasRequested(const Sync::ChainID_t &)
UTIL_API QDir CreateIfNotExists(const QString &path)
Creates a path if it doesn't exist.
virtual ~SyncDeltaManager()
QList< Payload > Payloads_t
SyncDeltaManager(const QString &, QObject *=0)
void Store(const Sync::ChainID_t &, const Sync::Payload &)