4 using System.Collections.Generic;
6 using SiliconStudio.Core.MicroThreading;
7 using SiliconStudio.Core.Storage;
8 using SiliconStudio.Core.IO;
9 using SiliconStudio.Core.Serialization.Assets;
11 namespace SiliconStudio.BuildEngine
18 private BuildTransaction buildTransaction;
21 public static MicroThreadLocal<DatabaseFileProvider>
DatabaseFileProvider =
new MicroThreadLocal<DatabaseFileProvider>(() =>
23 throw new InvalidOperationException(
"No VirtualFileProvider set for this microthread.");
30 lock (commomOutputObjects)
32 foreach (var outputObject
in outputObjects)
33 commomOutputObjects[outputObject.Key] = outputObject.Value;
39 if (transactionOutputObjectsGroups != null)
41 foreach (var outputObjects
in transactionOutputObjectsGroups)
42 yield
return outputObjects;
44 yield
return commomOutputObjects;
48 internal static void MountDatabases(IExecuteContext executeContext)
50 MountDatabases(CreateTransaction(executeContext.GetOutputObjectsGroups()));
58 private static void MountDatabases(BuildTransaction transaction)
60 DatabaseFileProvider.Value = CreateDatabases(transaction);
65 return new BuildTransaction(GetOutputObjectsGroups(transactionOutputObjectsGroups));
75 return CreateDatabases(CreateTransaction(null));
80 DatabaseFileProvider.Value = null;
85 base.PreCommand(commandContext);
88 MountDatabases(buildTransaction);
93 base.PostCommand(commandContext, status);
98 foreach (var entry
in buildTransaction.GetTransactionIdMap())
100 commandContext.RegisterOutput(entry.Key, entry.Value);
111 DatabaseFileProvider.Value = null;
override void PreCommand(ICommandContext commandContext)
static void MountDatabases(ICommandContext commandContext)
static DatabaseFileProvider GetCommonDatabase()
ResultStatus
Status of a command.
Gives access to the object database.
static void MergeOutputObjects(IDictionary< ObjectUrl, OutputObject > outputObjects)
A Command that reads and/or writes to the index file.
override void PostCommand(ICommandContext commandContext, ResultStatus status)
IEnumerable< IDictionary< ObjectUrl, OutputObject > > GetOutputObjectsGroups()