Reintroduces separate contexts for users, channels, connections (now split into sessions and connections) and user-channel associations. It builds which is as much assurance as I can give about the stability of this commit, but its also the bare minimum of what i like to commit sooooo A lot of things still need to be broadcast through events throughout the application in order to keep states consistent but we'll cross that bridge when we get to it. I really need to stop using that phrase thingy, I'm overusing it.
20 lines
671 B
C#
20 lines
671 B
C#
using Microsoft.Extensions.Logging;
|
|
using SharpChat.Connections;
|
|
|
|
namespace SharpChat.Sessions;
|
|
|
|
public class Session(long id, string secret, string userId, ILogger logger, Connection conn) {
|
|
public long Id { get; } = id;
|
|
public string Secret { get; } = secret;
|
|
public string UserId { get; } = userId;
|
|
public ILogger Logger { get; } = logger;
|
|
public Connection Connection { get; internal set; } = conn;
|
|
public DateTimeOffset LastHeartbeat { get; private set; } = DateTimeOffset.UtcNow;
|
|
|
|
public bool IsSuspended
|
|
=> NullConnection.IsNull(Connection);
|
|
|
|
public void Heartbeat() {
|
|
LastHeartbeat = DateTimeOffset.UtcNow;
|
|
}
|
|
}
|