Remove one-shot observed daemon access
This commit is contained in:
parent
673285bafe
commit
a9e21eacef
3 changed files with 22 additions and 34 deletions
|
|
@ -8117,7 +8117,6 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root
|
|||
"public Task<TDocument> LatestAsync<TDocument>()",
|
||||
"public TDocument Latest<TDocument>()",
|
||||
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(",
|
||||
"public AetheriaRuntimeObservedDaemonState? LatestObservedDaemon()",
|
||||
"public AetheriaRuntimeObservedDockingState? CurrentDocking(",
|
||||
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(",
|
||||
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(",
|
||||
|
|
@ -8230,6 +8229,21 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root
|
|||
"ReactiveEditorTuiSurface(",
|
||||
"ReactiveEditorTuiSurfaceAsync("
|
||||
};
|
||||
var forbiddenObservedDaemonConvenienceWrappers = new[]
|
||||
{
|
||||
"LatestObservedDaemonAsync(",
|
||||
"LatestObservedDaemon()",
|
||||
"TryReadDaemonSoaViewAsync("
|
||||
};
|
||||
var survivingObservedDaemonConvenienceWrappers = forbiddenObservedDaemonConvenienceWrappers
|
||||
.Where(symbol => clientState.Contains(symbol, StringComparison.Ordinal))
|
||||
.ToArray();
|
||||
if (survivingObservedDaemonConvenienceWrappers.Length > 0)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"AetheriaClientState still exposes one-shot observed-daemon aggregate wrappers; use CurrentObservedDaemon() or generic typed document reads: " +
|
||||
string.Join(", ", survivingObservedDaemonConvenienceWrappers));
|
||||
}
|
||||
var survivingFixedReactiveWrappers = forbiddenFixedReactiveWrappers
|
||||
.Where(symbol => clientState.Contains(symbol, StringComparison.Ordinal))
|
||||
.ToArray();
|
||||
|
|
@ -15941,8 +15955,8 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
|
|||
!observedDaemonState.Contains("CultMeshReactiveDocument<AetheriaRuntimeZoneRenderDocument> zoneRender", StringComparison.Ordinal) ||
|
||||
!observedDaemonState.Contains("var currentZoneRender = zoneRender?.Current;", StringComparison.Ordinal) ||
|
||||
!observedDaemonState.Contains("new AetheriaRuntimeObservedDaemonState(currentFrame, currentSoaView, currentZoneRender)", StringComparison.Ordinal) ||
|
||||
!aetheriaClientState.Contains("var zoneRender = await LatestAsync<AetheriaRuntimeZoneRenderDocument>().ConfigureAwait(false);", StringComparison.Ordinal) ||
|
||||
!aetheriaClientState.Contains("return new AetheriaRuntimeObservedDaemonState(frame, soaView, zoneRender);", StringComparison.Ordinal))
|
||||
!aetheriaClientState.Contains("using var zoneRender = Reactive<AetheriaRuntimeZoneRenderDocument>(options);", StringComparison.Ordinal) ||
|
||||
!aetheriaClientState.Contains("AetheriaRuntimeObservedDaemonState.TryCreateCurrent(frame, soaView, zoneRender, out var current)", StringComparison.Ordinal))
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"Observed zone-render state acquisition must sample managed typed zone-render documents directly.");
|
||||
|
|
@ -16161,6 +16175,8 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
|
|||
"state.LatestFrame.ReactiveAsync",
|
||||
"state.LatestSoaView.ReactiveAsync",
|
||||
"public static async Task<AetheriaRuntimeObservedDaemonState?> ReadAsync(",
|
||||
"LatestObservedDaemonAsync(",
|
||||
"LatestObservedDaemon()",
|
||||
"public sealed class AetheriaRuntimeReactiveObservedDaemonState",
|
||||
"ReactiveObservedDaemonAsync",
|
||||
"ReactiveObservedDaemon(",
|
||||
|
|
|
|||
|
|
@ -205,7 +205,7 @@ public class DaemonRuntimeDocumentTests
|
|||
.GetResult();
|
||||
using var zoneRenderReactive = client.State
|
||||
.Reactive<AetheriaRuntimeZoneRenderDocument>();
|
||||
var observed = client.State.LatestObservedDaemon();
|
||||
var observed = client.State.CurrentObservedDaemon();
|
||||
var observedAuthoritativeFrame = client.State.Latest<AetheriaRuntimeDaemonFrameDocument>();
|
||||
using var catalogReactive = client.State.Reactive<AetheriaRuntimeCatalogSnapshot>();
|
||||
using var daemonFrameReactive = client.State.Reactive<AetheriaRuntimeDaemonFrameDocument>();
|
||||
|
|
@ -2216,7 +2216,7 @@ public class DaemonRuntimeDocumentTests
|
|||
.OpenAsync(statePath, "unity-observer-test", pullOnOpen: true)
|
||||
.GetAwaiter()
|
||||
.GetResult();
|
||||
var observed = client.State.LatestObservedDaemon();
|
||||
var observed = client.State.CurrentObservedDaemon();
|
||||
|
||||
Assert.IsNotNull(observed);
|
||||
Assert.IsTrue(observed.IsAuthoritative);
|
||||
|
|
@ -2317,7 +2317,7 @@ public class DaemonRuntimeDocumentTests
|
|||
.OpenAsync(statePath, "unity-frame-only-observer-test", pullOnOpen: true)
|
||||
.GetAwaiter()
|
||||
.GetResult();
|
||||
var observed = client.State.LatestObservedDaemon();
|
||||
var observed = client.State.CurrentObservedDaemon();
|
||||
|
||||
Assert.IsNotNull(observed);
|
||||
Assert.IsTrue(observed.IsAuthoritative);
|
||||
|
|
|
|||
|
|
@ -215,19 +215,6 @@ namespace GameCult.Aetheria.State.Verse
|
|||
return Document<TDocument>().LatestAsync().ConfigureAwait(false).GetAwaiter().GetResult();
|
||||
}
|
||||
|
||||
public async Task<AetheriaRuntimeObservedDaemonState?> LatestObservedDaemonAsync()
|
||||
{
|
||||
var frame = await LatestAsync<AetheriaRuntimeDaemonFrameDocument>().ConfigureAwait(false);
|
||||
var soaView = await TryReadDaemonSoaViewAsync().ConfigureAwait(false);
|
||||
var zoneRender = await LatestAsync<AetheriaRuntimeZoneRenderDocument>().ConfigureAwait(false);
|
||||
return new AetheriaRuntimeObservedDaemonState(frame, soaView, zoneRender);
|
||||
}
|
||||
|
||||
public AetheriaRuntimeObservedDaemonState? LatestObservedDaemon()
|
||||
{
|
||||
return LatestObservedDaemonAsync().ConfigureAwait(false).GetAwaiter().GetResult();
|
||||
}
|
||||
|
||||
public AetheriaRuntimeObservedDaemonState? CurrentObservedDaemon(
|
||||
CultMeshReactiveDocumentOptions? options = null)
|
||||
{
|
||||
|
|
@ -438,21 +425,6 @@ namespace GameCult.Aetheria.State.Verse
|
|||
}
|
||||
}
|
||||
|
||||
private async Task<AetheriaRuntimeDaemonSoaViewDocument?> TryReadDaemonSoaViewAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
var soaView = await LatestAsync<AetheriaRuntimeDaemonSoaViewDocument>().ConfigureAwait(false);
|
||||
return string.Equals(soaView.Schema, AetheriaRuntimeDaemonSchemas.SoaView, StringComparison.Ordinal)
|
||||
? soaView
|
||||
: null;
|
||||
}
|
||||
catch (KeyNotFoundException)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public Observable<TDocument> Watch<TDocument>()
|
||||
where TDocument : class
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue