mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-20 19:58:57 +08:00
Add ability to get session from server by client id (#2131)
Co-authored-by: Anton Smolkov <anton.smolkov@idp.zyfra.com>
This commit is contained in:
co-authored by
Anton Smolkov
parent
9f81a2bb71
commit
8eb884fa5d
@@ -311,6 +311,25 @@ public sealed class MqttClientSessionsManager : ISubscriptionChangedNotification
|
|||||||
return Task.FromResult((IList<MqttClientStatus>)result);
|
return Task.FromResult((IList<MqttClientStatus>)result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Task<MqttSessionStatus> GetSessionStatus(string id)
|
||||||
|
{
|
||||||
|
_sessionsManagementLock.EnterReadLock();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!_sessionsStorage.TryGetSession(id, out var session))
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException($"Session with ID '{id}' not found.");
|
||||||
|
}
|
||||||
|
|
||||||
|
var sessionStatus = new MqttSessionStatus(session);
|
||||||
|
return Task.FromResult(sessionStatus);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
_sessionsManagementLock.ExitReadLock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Task<IList<MqttSessionStatus>> GetSessionsStatus()
|
public Task<IList<MqttSessionStatus>> GetSessionsStatus()
|
||||||
{
|
{
|
||||||
var result = new List<MqttSessionStatus>();
|
var result = new List<MqttSessionStatus>();
|
||||||
|
|||||||
@@ -237,6 +237,13 @@ public class MqttServer : Disposable
|
|||||||
return _clientSessionsManager.GetSessionsStatus();
|
return _clientSessionsManager.GetSessionsStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Task<MqttSessionStatus> GetSessionAsync(string id)
|
||||||
|
{
|
||||||
|
ThrowIfNotStarted();
|
||||||
|
|
||||||
|
return _clientSessionsManager.GetSessionStatus(id);
|
||||||
|
}
|
||||||
|
|
||||||
public Task InjectApplicationMessage(InjectedMqttApplicationMessage injectedApplicationMessage, CancellationToken cancellationToken = default)
|
public Task InjectApplicationMessage(InjectedMqttApplicationMessage injectedApplicationMessage, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
ArgumentNullException.ThrowIfNull(injectedApplicationMessage);
|
ArgumentNullException.ThrowIfNull(injectedApplicationMessage);
|
||||||
|
|||||||
Reference in New Issue
Block a user