Headless CMS and Content Managment Hub
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

65 lines
1.6 KiB

// ==========================================================================
// StatefulActor.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
// All rights reserved.
// ==========================================================================
using System.Threading.Tasks;
namespace Squidex.Infrastructure.States
{
public abstract class StatefulObject<T> : DisposableObjectBase
{
private IStateHolder<T> stateHolder;
public T State
{
get
{
if (stateHolder != null)
{
return stateHolder.State;
}
else
{
return default(T);
}
}
protected set
{
if (stateHolder != null)
{
stateHolder.State = value;
}
}
}
public Task ActivateAsync(IStateHolder<T> stateHolder)
{
Guard.NotNull(stateHolder, nameof(stateHolder));
this.stateHolder = stateHolder;
return stateHolder.ReadAsync();
}
public async Task ReadStateAsync()
{
if (stateHolder != null)
{
await stateHolder.ReadAsync();
}
}
public async Task WriteStateAsync()
{
if (stateHolder != null)
{
await stateHolder.WriteAsync();
}
}
}
}