39 lines
1.5 KiB
C#
39 lines
1.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace MediaBrowser.Controller.Session;
|
|
|
|
/// <summary>
|
|
/// The single-instance <see cref="ISessionDirectory"/>: nothing is published and no session is held
|
|
/// anywhere but here, which is exactly the behaviour of a deployment without a shared store.
|
|
/// </summary>
|
|
public sealed class NullSessionDirectory : ISessionDirectory
|
|
{
|
|
/// <summary>
|
|
/// Gets the shared instance.
|
|
/// </summary>
|
|
public static NullSessionDirectory Instance { get; } = new NullSessionDirectory();
|
|
|
|
/// <inheritdoc />
|
|
public Task<long> AllocateConnectionEpochAsync(string sessionId, CancellationToken cancellationToken = default)
|
|
=> Task.FromResult(0L);
|
|
|
|
/// <inheritdoc />
|
|
public Task<bool> PublishAsync(SessionDirectoryEntry entry, long connectionEpoch, CancellationToken cancellationToken = default)
|
|
=> Task.FromResult(false);
|
|
|
|
/// <inheritdoc />
|
|
public Task RemoveAsync(string sessionId, string ownerPod, CancellationToken cancellationToken = default)
|
|
=> Task.CompletedTask;
|
|
|
|
/// <inheritdoc />
|
|
public Task<SessionDirectoryEntry?> GetAsync(string sessionId, CancellationToken cancellationToken = default)
|
|
=> Task.FromResult<SessionDirectoryEntry?>(null);
|
|
|
|
/// <inheritdoc />
|
|
public Task<IReadOnlyList<SessionDirectoryEntry>> GetAllAsync(CancellationToken cancellationToken = default)
|
|
=> Task.FromResult<IReadOnlyList<SessionDirectoryEntry>>(Array.Empty<SessionDirectoryEntry>());
|
|
}
|