feat(headless): share immutable process content
This commit is contained in:
parent
fbdb58a962
commit
12b500d383
11 changed files with 617 additions and 18 deletions
|
|
@ -117,6 +117,8 @@ internal sealed class HeadlessSessionHost : IDisposable
|
|||
private readonly IDisposable _policySubscription;
|
||||
private readonly LiveSessionHost _liveSession;
|
||||
private readonly RuntimeLocalPlayerFrameController _localPlayerFrame;
|
||||
private readonly HeadlessProcessContentOwner.HeadlessProcessContentLease?
|
||||
_contentLease;
|
||||
private int _disposeStage;
|
||||
private long _reconnectDeadline;
|
||||
private bool _reconnectPending;
|
||||
|
|
@ -129,7 +131,9 @@ internal sealed class HeadlessSessionHost : IDisposable
|
|||
HeadlessDiagnosticWriter diagnostics,
|
||||
ILiveSessionOperations? sessionOperations = null,
|
||||
TimeProvider? timeProvider = null,
|
||||
TimeSpan? reconnectQuiescence = null)
|
||||
TimeSpan? reconnectQuiescence = null,
|
||||
HeadlessProcessContentOwner.HeadlessProcessContentLease?
|
||||
contentLease = null)
|
||||
{
|
||||
_descriptor = descriptor
|
||||
?? throw new ArgumentNullException(nameof(descriptor));
|
||||
|
|
@ -217,6 +221,7 @@ internal sealed class HeadlessSessionHost : IDisposable
|
|||
liveSession),
|
||||
new HeadlessMovementInputSource(
|
||||
runtime.MovementOwner));
|
||||
_contentLease = contentLease;
|
||||
bridge.Bind(this);
|
||||
|
||||
hostLease = runtime.AcquireHostLease(
|
||||
|
|
@ -238,6 +243,7 @@ internal sealed class HeadlessSessionHost : IDisposable
|
|||
policySubscription?.Dispose();
|
||||
policy?.Dispose();
|
||||
hostLease?.Dispose();
|
||||
contentLease?.Dispose();
|
||||
credential.Dispose();
|
||||
runtimeRef?.Dispose();
|
||||
throw;
|
||||
|
|
@ -251,6 +257,8 @@ internal sealed class HeadlessSessionHost : IDisposable
|
|||
string.Empty;
|
||||
internal bool IsPolicyComplete => _policy.IsComplete;
|
||||
internal bool IsReconnectPending => _reconnectPending;
|
||||
internal HeadlessProcessContentOwner.HeadlessProcessContentLease?
|
||||
Content => _contentLease;
|
||||
internal long ReconnectDeadline => _reconnectPending
|
||||
? _reconnectDeadline
|
||||
: throw new InvalidOperationException(
|
||||
|
|
@ -354,6 +362,10 @@ internal sealed class HeadlessSessionHost : IDisposable
|
|||
_disposeStage++;
|
||||
break;
|
||||
case 7:
|
||||
_contentLease?.Dispose();
|
||||
_disposeStage++;
|
||||
break;
|
||||
case 8:
|
||||
_diagnostics.Message(
|
||||
_descriptor.Id,
|
||||
"disposed",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue