91 lines
1.8 KiB
C#
91 lines
1.8 KiB
C#
namespace ChatRoom;
|
|
|
|
/// <summary>
|
|
/// Client information
|
|
/// </summary>
|
|
public class Client
|
|
{
|
|
/// <summary>
|
|
/// Client ID
|
|
/// </summary>
|
|
public int id;
|
|
/// <summary>
|
|
/// Client name, can be the same between multiple clients
|
|
/// </summary>
|
|
public string name;
|
|
/// <summary>
|
|
/// Number of strikes
|
|
/// </summary>
|
|
public int strikes = 0;
|
|
/// <summary>
|
|
/// Until when is this client blocked from sending messages
|
|
/// </summary>
|
|
public DateTime? blockedUntil = null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Describes the messages status/stage
|
|
/// </summary>
|
|
public enum MessageStatus
|
|
{
|
|
WaitingForModerator,
|
|
GivenToModerator,
|
|
Approved,
|
|
Rejected
|
|
}
|
|
|
|
/// <summary>
|
|
/// Message information
|
|
/// </summary>
|
|
public class Message
|
|
{
|
|
/// <summary>
|
|
/// Message ID
|
|
/// </summary>
|
|
public int id;
|
|
/// <summary>
|
|
/// Client ID
|
|
/// </summary>
|
|
public int clientId;
|
|
/// <summary>
|
|
/// Message contents
|
|
/// </summary>
|
|
public string contents;
|
|
/// <summary>
|
|
/// Does this message need to be censored?
|
|
/// </summary>
|
|
public bool needsToBeCensored;
|
|
/// <summary>
|
|
/// Message status/stage
|
|
/// </summary>
|
|
public MessageStatus status = MessageStatus.WaitingForModerator;
|
|
|
|
/// <summary>
|
|
/// When was this message sent
|
|
/// </summary>
|
|
public DateTime sentAt;
|
|
}
|
|
|
|
public class ChatRoomState
|
|
{
|
|
/// <summary>
|
|
/// Access lock.
|
|
/// </summary>
|
|
public readonly object accessLock = new object();
|
|
|
|
/// <summary>
|
|
/// Last unique ID value generated.
|
|
/// </summary>
|
|
public int lastUniqueId;
|
|
|
|
/// <summary>
|
|
/// List of all registered clients
|
|
/// </summary>
|
|
public List<Client> clients = new List<Client>();
|
|
|
|
/// <summary>
|
|
/// List of messages
|
|
/// </summary>
|
|
public List<Message> messages = new List<Message>();
|
|
}
|