Skip to content

Commit

Permalink
[Experiment] Remove types that implement BuildXL interfaces
Browse files Browse the repository at this point in the history
  • Loading branch information
ladipro committed Sep 6, 2023
1 parent afdac91 commit 79ad288
Showing 1 changed file with 1 addition and 87 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public Process Start(string msbuildLocation, string commandLineArgs, int nodeId)
exeName = CurrentHost.GetCurrentHost();
#endif

var eventListener = new DetoursEventListener(_fileAccessManager, nodeId);
IDetoursEventListener eventListener = null;
eventListener.SetMessageHandlingFlags(MessageHandlingFlags.DebugMessageNotify | MessageHandlingFlags.FileAccessNotify | MessageHandlingFlags.ProcessDataNotify | MessageHandlingFlags.ProcessDetoursStatusNotify);

var info = new SandboxedProcessInfo(
Expand Down Expand Up @@ -143,92 +143,6 @@ private static BuildParameters.IBuildParameters CreateEnvironmentVariables()

return BuildParameters.GetFactory().PopulateFromDictionary(envVars);
}

private sealed class EnvironmentalBuildParameters : BuildParameters.IBuildParameters
{
private readonly Dictionary<string, string> _envVars;

private EnvironmentalBuildParameters()
{
var envVars = new Dictionary<string, string>();
foreach (DictionaryEntry baseVar in Environment.GetEnvironmentVariables())
{
envVars.Add((string)baseVar.Key, (string)baseVar.Value);
}

_envVars = envVars;
}

private EnvironmentalBuildParameters(Dictionary<string, string> envVars)
{
_envVars = envVars;
}

public static EnvironmentalBuildParameters Instance { get; } = new EnvironmentalBuildParameters();

public string this[string key] => _envVars[key];

public BuildParameters.IBuildParameters Select(IEnumerable<string> keys)
=> new EnvironmentalBuildParameters(keys.ToDictionary(key => key, key => _envVars[key]));

public BuildParameters.IBuildParameters Override(IEnumerable<KeyValuePair<string, string>> parameters)
{
var copy = new Dictionary<string, string>(_envVars);
foreach (KeyValuePair<string, string> param in parameters)
{
copy[param.Key] = param.Value;
}

return new EnvironmentalBuildParameters(copy);
}

public IReadOnlyDictionary<string, string> ToDictionary() => _envVars;

public bool ContainsKey(string key) => _envVars.ContainsKey(key);
}

private sealed class DetoursEventListener : IDetoursEventListener
{
private readonly IFileAccessManager _fileAccessManager;
private readonly int _nodeId;

public DetoursEventListener(IFileAccessManager fileAccessManager, int nodeId)
{
_fileAccessManager = fileAccessManager;
_nodeId = nodeId;
}

public override void HandleDebugMessage(DebugData debugData)
{
}

public override void HandleFileAccess(FileAccessData fileAccessData) => _fileAccessManager.ReportFileAccess(
new Framework.FileAccess.FileAccessData(
(Framework.FileAccess.ReportedFileOperation)fileAccessData.Operation,
(Framework.FileAccess.RequestedAccess)fileAccessData.RequestedAccess,
fileAccessData.ProcessId,
fileAccessData.Error,
(Framework.FileAccess.DesiredAccess)fileAccessData.DesiredAccess,
(Framework.FileAccess.FlagsAndAttributes)fileAccessData.FlagsAndAttributes,
fileAccessData.Path,
fileAccessData.ProcessArgs,
fileAccessData.IsAnAugmentedFileAccess),
_nodeId);

public override void HandleProcessData(ProcessData processData) => _fileAccessManager.ReportProcess(
new Framework.FileAccess.ProcessData(
processData.ProcessName,
processData.ProcessId,
processData.ParentProcessId,
processData.CreationDateTime,
processData.ExitDateTime,
processData.ExitCode),
_nodeId);

public override void HandleProcessDetouringStatus(ProcessDetouringStatusData data)
{
}
}
}
}
#endif

0 comments on commit 79ad288

Please sign in to comment.