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