A new library scanner process will now be started for each library
* A new library scanner process will now be started for each library
This commit is contained in:
@@ -487,9 +487,49 @@ namespace gaseous_server.Classes
|
||||
|
||||
public void LibraryScan()
|
||||
{
|
||||
// setup background tasks for each library
|
||||
foreach (GameLibrary.LibraryItem library in GameLibrary.GetLibraries)
|
||||
{
|
||||
Logging.Log(Logging.LogType.Information, "Library Scan", "Starting library scan. Library " + library.Name);
|
||||
Logging.Log(Logging.LogType.Information, "Library Scan", "Starting worker process for library " + library.Name);
|
||||
ProcessQueue.QueueItem queue = new ProcessQueue.QueueItem(
|
||||
ProcessQueue.QueueItemType.LibraryScanWorker,
|
||||
0,
|
||||
new List<ProcessQueue.QueueItemType>
|
||||
{
|
||||
ProcessQueue.QueueItemType.OrganiseLibrary,
|
||||
ProcessQueue.QueueItemType.Rematcher
|
||||
},
|
||||
false,
|
||||
true);
|
||||
queue.Options = library;
|
||||
|
||||
ProcessQueue.QueueItems.Add(queue);
|
||||
}
|
||||
|
||||
bool WorkersStillWorking = false;
|
||||
do
|
||||
{
|
||||
WorkersStillWorking = false;
|
||||
List<ProcessQueue.QueueItem> queueItems = new List<ProcessQueue.QueueItem>();
|
||||
queueItems.AddRange(ProcessQueue.QueueItems);
|
||||
foreach (ProcessQueue.QueueItem item in queueItems)
|
||||
{
|
||||
if (item.ItemType == ProcessQueue.QueueItemType.LibraryScanWorker)
|
||||
{
|
||||
// workers are still running - sleep and keep looping
|
||||
WorkersStillWorking = true;
|
||||
Thread.Sleep(30000);
|
||||
}
|
||||
}
|
||||
} while (WorkersStillWorking == true);
|
||||
|
||||
Logging.Log(Logging.LogType.Information, "Library Scan", "Library scan complete. All workers stopped");
|
||||
}
|
||||
|
||||
public void LibrarySpecificScan(GameLibrary.LibraryItem library)
|
||||
{
|
||||
|
||||
Logging.Log(Logging.LogType.Information, "Library Scan", "Starting scan of library: " + library.Name);
|
||||
|
||||
Database db = new Database(Database.databaseType.MySql, Config.DatabaseConfiguration.ConnectionString);
|
||||
|
||||
@@ -524,7 +564,7 @@ namespace gaseous_server.Classes
|
||||
}
|
||||
}
|
||||
|
||||
sql = "SELECT * FROM Games_Roms ORDER BY `name`";
|
||||
sql = "SELECT * FROM Games_Roms WHERE LibraryId=@libraryid ORDER BY `name`";
|
||||
dtRoms = db.ExecuteCMD(sql, dbDict);
|
||||
|
||||
// search for files in the library that aren't in the database
|
||||
@@ -644,7 +684,6 @@ namespace gaseous_server.Classes
|
||||
|
||||
Logging.Log(Logging.LogType.Information, "Library Scan", "Library scan completed");
|
||||
}
|
||||
}
|
||||
|
||||
public void Rematcher(bool ForceExecute = false)
|
||||
{
|
||||
|
@@ -177,7 +177,7 @@ namespace gaseous_server
|
||||
break;
|
||||
|
||||
case QueueItemType.LibraryScan:
|
||||
Logging.Log(Logging.LogType.Debug, "Timered Event", "Starting Library Scanner");
|
||||
Logging.Log(Logging.LogType.Debug, "Timered Event", "Starting Library Scanners");
|
||||
Classes.ImportGame import = new ImportGame
|
||||
{
|
||||
CallingQueueItem = this
|
||||
@@ -188,6 +188,17 @@ namespace gaseous_server
|
||||
|
||||
break;
|
||||
|
||||
case QueueItemType.LibraryScanWorker:
|
||||
GameLibrary.LibraryItem library = (GameLibrary.LibraryItem)Options;
|
||||
Logging.Log(Logging.LogType.Debug, "Timered Event", "Starting Library Scanner worker for library " + library.Name);
|
||||
Classes.ImportGame importLibraryScan = new ImportGame
|
||||
{
|
||||
CallingQueueItem = this
|
||||
};
|
||||
importLibraryScan.LibrarySpecificScan(library);
|
||||
|
||||
break;
|
||||
|
||||
case QueueItemType.Rematcher:
|
||||
Logging.Log(Logging.LogType.Debug, "Timered Event", "Starting Rematch");
|
||||
Classes.ImportGame importRematch = new ImportGame
|
||||
@@ -350,6 +361,11 @@ namespace gaseous_server
|
||||
/// </summary>
|
||||
LibraryScan,
|
||||
|
||||
/// <summary>
|
||||
/// Performs the work for the LibraryScan task
|
||||
/// </summary>
|
||||
LibraryScanWorker,
|
||||
|
||||
/// <summary>
|
||||
/// Looks for roms in the library that have an unknown platform or game match
|
||||
/// </summary>
|
||||
|
@@ -411,6 +411,8 @@ function GetTaskFriendlyName(TaskName, options) {
|
||||
return "Organise library";
|
||||
case 'LibraryScan':
|
||||
return "Library scan";
|
||||
case 'LibraryScanWorker':
|
||||
return "Library scan worker: " + options.name;
|
||||
case 'CollectionCompiler':
|
||||
return "Compress collection id: " + options;
|
||||
case 'BackgroundDatabaseUpgrade':
|
||||
|
@@ -1030,7 +1030,7 @@ button:not(.select2-selection__choice__remove):not(.ejs_menu_button) {
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
button:not(.select2-selection__choice__remove):not(.ejs_menu_button):hover {
|
||||
background-color: #888;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
Reference in New Issue
Block a user