TeamCity.MSBuild.Logger/EventContext.cs (26 lines of code) (raw):
// ReSharper disable ClassNeverInstantiated.Global
namespace TeamCity.MSBuild.Logger
{
using System;
using JetBrains.Annotations;
using Microsoft.Build.Framework;
internal class EventContext : IEventRegistry, IEventContext
{
[CanBeNull] private BuildEventArgs _event;
public IDisposable Register(BuildEventArgs buildEventArgs)
{
var prevEvent = _event;
_event = buildEventArgs;
return Disposable.Create(() => { _event = prevEvent; });
}
public bool TryGetEvent(out BuildEventArgs buildEventArgs)
{
if (_event != null)
{
buildEventArgs = _event;
return true;
}
buildEventArgs = default;
return false;
}
}
}