Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
BuilderContext.cs
Go to the documentation of this file.
1 // Copyright (c) 2014 Silicon Studio Corp. (http://siliconstudio.co.jp)
2 // This file is distributed under GPL v3. See LICENSE.md for details.
3 using System.Collections.Generic;
4 using System.Threading;
5 
6 using SiliconStudio.Core.Storage;
7 using SiliconStudio.Core.IO;
8 
9 namespace SiliconStudio.BuildEngine
10 {
11  public class BuilderContext
12  {
13  internal readonly Dictionary<ObjectId, CommandBuildStep> CommandsInProgress = new Dictionary<ObjectId, CommandBuildStep>();
14 
15  internal FileVersionTracker InputHashes { get; private set; }
16 
17  public string BuildPath { get; private set; }
18 
19  public string BuildProfile { get; private set; }
20 
21  public string SlaveBuilderPath { get; private set; }
22 
23  public IMetadataProvider MetadataProvider { get; set; }
24 
25  public BuildParameterCollection Parameters { get; private set; }
26 
27  public int MaxParallelProcesses { get; private set; }
28 
29  private int spawnedProcessCount;
30 
31  public BuilderContext(string buildPath, string buildProfile, FileVersionTracker inputHashes, BuildParameterCollection parameters, int maxParallelProcess, string slaveBuilderPath)
32  {
33  BuildPath = buildPath;
34  BuildProfile = buildProfile;
35  InputHashes = inputHashes;
36  Parameters = parameters;
37  SlaveBuilderPath = slaveBuilderPath;
38  MaxParallelProcesses = maxParallelProcess;
39  }
40 
42  {
43  if (Interlocked.Increment(ref spawnedProcessCount) > MaxParallelProcesses)
44  {
45  Interlocked.Decrement(ref spawnedProcessCount);
46  return false;
47  }
48  return true;
49  }
50 
52  {
53  Interlocked.Decrement(ref spawnedProcessCount);
54  }
55  }
56 }
BuilderContext(string buildPath, string buildProfile, FileVersionTracker inputHashes, BuildParameterCollection parameters, int maxParallelProcess, string slaveBuilderPath)