private Database(Stream fs) { _fs = fs ?? throw new ArgumentNullException(nameof(fs)); // ####### HERE ######### // Is where we pick the underlying engine. _pages = new PageStorageBackend(_fs); }
public ChatContext(string serverId, IConfig config, IDatabaseBackend databaseBackend, IDataProvider dataProvider) { if (config == null) { throw new ArgumentNullException(nameof(config)); } DatabaseWrapper db = new DatabaseWrapper(databaseBackend ?? throw new ArgumentNullException(nameof(databaseBackend))); IMessageStorage msgStore = db.IsNullBackend ? new MemoryMessageStorage() : new ADOMessageStorage(db); DataProvider = dataProvider ?? throw new ArgumentNullException(nameof(dataProvider)); Sessions = new SessionManager(this, serverId, config.ScopeTo(@"sessions")); Messages = new MessageManager(this, msgStore, config.ScopeTo(@"messages")); Users = new UserManager(this); Channels = new ChannelManager(this, config, Bot); ChannelUsers = new ChannelUserRelations(this, Channels, Users, Sessions, Messages); RateLimiter = new RateLimiter(config.ScopeTo(@"flood")); Channels.UpdateChannels(); // Should probably not rely on Timers in the future BumpTimer = new Timer(e => { Logger.Write(@"Bumping last online times..."); IEnumerable <IUser> users = null; Sessions.GetActiveSessions(s => users = s.Select(s => s.User)); DataProvider.UserBumpClient.SubmitBumpUsers(Sessions, users); }, null, TimeSpan.Zero, TimeSpan.FromMinutes(1)); }
public static bool ValidName(string map) { foreach (char c in map) { if (!IDatabaseBackend.ValidNameChar(c)) { return(false); } } return(true); }
public Context(IConfig config, IDatabaseBackend databaseBackend, IDataProvider dataProvider) { if (config == null) { throw new ArgumentNullException(nameof(config)); } ServerId = RNG.NextString(ID_LENGTH); // maybe read this from the cfg instead Created = DateTimeOffset.Now; // read this from config definitely DatabaseWrapper db = new DatabaseWrapper(databaseBackend ?? throw new ArgumentNullException(nameof(databaseBackend))); IMessageStorage msgStore = db.IsNullBackend ? new MemoryMessageStorage() : new ADOMessageStorage(db); DataProvider = dataProvider ?? throw new ArgumentNullException(nameof(dataProvider)); Sessions = new SessionManager(this, Users, config.ScopeTo(@"sessions"), ServerId); Messages = new MessageManager(this, msgStore, config.ScopeTo(@"messages")); Users = new UserManager(this); Channels = new ChannelManager(this, config, Bot); ChannelUsers = new ChannelUserRelations(this, Channels, Users, Sessions, Messages); RateLimiter = new RateLimiter(config.ScopeTo(@"flood")); WelcomeMessage = new WelcomeMessage(config.ScopeTo(@"welcome")); AddEventHandler(Sessions); AddEventHandler(Users); AddEventHandler(Channels); AddEventHandler(ChannelUsers); AddEventHandler(Messages); Channels.UpdateChannels(); // Should probably not rely on Timers in the future BumpTimer = new Timer(e => { Logger.Write(@"Nuking dead sessions and bumping online times..."); Sessions.CheckTimeOut(); IEnumerable <IUser> users = null; Sessions.GetActiveSessions(s => users = s.Select(s => s.User)); DataProvider.UserBumpClient.SubmitBumpUsers(Sessions, users); }, null, TimeSpan.Zero, TimeSpan.FromMinutes(1)); }
public DatabaseWrapper(IDatabaseBackend backend) { Backend = backend ?? throw new ArgumentNullException(nameof(backend)); }