Age | Commit message (Collapse) | Author |
|
* fix handling connections;
* fix idling strategy;
* add setClientGetHandler() for SeekableReadStream;
* add determineMimeType().
|
|
Cleanup in open()
|
|
This commit also adds LocalWebserver's stopOnIdle().
That means server is not stopped immediately, but only when all clients
are served.
|
|
|
|
LocalWebserver would storage the handlers.
Client now has methods like path() or query() to access different parts
of the request.
|
|
|
|
|
|
That ClientHandler is made for responding GET requests. It calculates
stream's length, it allows to specify response code and headers, it can
be used to transfer any ReadStream.
|
|
|
|
Keeps current client's state
|
|
Available as LocalServer singleton. It's being started and stopped by
StorageWizardDialog. It doesn't handle clients yet, though.
|
|
|
|
|
|
|
|
|
|
If Storage::syncSaves() is called when sync is running, another sync
would be automatically scheduled in the end of the current one.
That could be helpful when we want to specify that we changed something
during sync (created new save slot, for example).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CloudManager::getStorageConfigName()
|
|
KEY and SECRET should now load before getAccessToken() uses them, so it
should work now.
|
|
|
|
"networkreadstream.cpp:51:2: error: delegating constructors are permitted only in C++11"
|
|
"savessyncrequest.h:35:35: error: use of undeclared identifier 'UINT_MAX'"
|
|
One can enter the code, press 'Connect' button and get a working
Storage!
|
|
Used in SavesSyncRequest to update Storage's last sync date.
|
|
Tried to use it everywhere I should've use it.
|
|
Instead of all these atoull() I've added everywhere.
|
|
Commit changes CloudManager and Storages so they would automatically
refresh the fields when the could.
|
|
It now has methods to update Storage's information.
|
|
It now supports only one storage of each type. Only one Storage could be
loaded to the memory as well.
Options' Cloud tab now changes the Storage only when user pressed OK
button, giving the ability to look through the Storages without actually
changing them.
|
|
And corresponding stub implementations in CloudManager.
|
|
* Storage::name();
* CloudManager::getStorageName();
* CloudManager::getStorageIndex();
* CloudManager::listStorages();
* CloudManager::switchStorage().
|
|
Just checked that out on cloud sync: Google Drive is officially
supported!
|
|
Includes NetworkReadStream PATCH method and Headers remembering feature.
|
|
GoogleDriveDownloadRequest, which resolves file id and then downloads it
with GoogleDriveStorage::downloadById().
GoogleDriveStreamFileRequest, which resolves file id and then returns
file stream with GoogleDriveStorage::streamFileById().
This commit also adds GoogleDriveStorage::streamFileById() itself.
A minor GoogleDriveResolveIdRequest fix added.
With these one can download files from Google Drive.
|
|
Id should be used everywhere.
|
|
Only two places to update, as others still require id resolving.
|
|
Because of the Google Drive StorageFile now contains yet another field,
`id`. For other storages `id` == `path`, and thus all common Requests
(such as SavesSyncRequest, DownloadFolderRequest, etc) must be using
id() instead of path(). That way these Requests won't cause id resolving
which could be quite slow (when you call it for all files in the folder,
for example).
|
|
Now openForLoading() and openForSaving() check whether file is locked,
so AGOS and SCUMM engines Ctrl+number and Alt+number hot keys shouldn't
be able to save/load in these slots during saves sync.
|
|
Now it also creates the "base" ScummVM directory if there is no such
directory yet. This way SavesSyncRequest works fine when no "ScummVM" or
"ScummVM/Saves" folder exist in the Google Drive.
|
|
|
|
It now keeps newly added Requests in separate array, so iterators don't
break when one adds a Request while ConnMan iterates its array.
The array is also shielded with mutex.
|
|
Now it needs another scope and uses "root" instead of "appDataFolder".
|
|
When listing directories, you get a list of StorageFiles, which path()
is actually Google Drive id. Thus, if you list a directory recursively,
you won't be able to determine whether all files are within one
directory or have some hierarchy. I'd fix that as soon as it would be
needed.
|
|
Now we can create directories in Google Drive by path, not parent id +
directory name!
|