public DatabaseContext CreateContext(DatabaseSettingsPlaceholder settings)
        {
            int id = SynchronizedContexts.Count;

            if (SynchronizedContexts.TryAdd(id, new DatabaseContext(id, settings)))
            {
                if (SynchronizedContexts.TryGetValue(id, out var val))
                {
                    return(val);
                }

                throw new Exception($"Invalid work with concurrent cache!");
            }
            else
            {
                if (SynchronizedContexts.ContainsKey(id))
                {
                    if (SynchronizedContexts.TryGetValue(id, out var val))
                    {
                        return(val);
                    }

                    throw new Exception($"Invalid work with concurrent cache!");
                }

                throw new Exception($"Unknown error with database contexts caching");
            }
        }
Exemple #2
0
        public DatabaseContext(int identifier, DatabaseSettingsPlaceholder settings)
        {
            ConcurrentIdentifier = identifier;
            DatabaseSettings     = settings;

            SupportedAccesors = new List <IDatabaseAccessor>()
            {
                new UserAccessor(Users, this),
                new UserSubscriptionsAccessor(UsersSubscriptions, this),
                new ProductAccessor(Products, this),
                new NewsAccessor(Articles, this),
                new ProductGuardAccessor(ProductGaurds, this),
                new UpdateAccessor(Updates, this)
            };
        }
Exemple #3
0
        public void Init()
        {
            Log = FindObjectOfType <JournalObject>();

            var externalSettingsObject = FindObjectOfType <ExternalSettingsObject>();

            if (externalSettingsObject == null)
            {
                Log.ImmediateWriteToProvider <TerminalJournalProvider>("Can't run server because external settings object not available now!", Journal.Contracts.JournalingLevel.Critical);
                return;
            }

            Settings = externalSettingsObject.GetObjectPlaceholder("external-settings:database").As <DatabaseSettingsPlaceholder>();
            if (Settings == null)
            {
                Log.ImmediateWriteToProvider <TerminalJournalProvider>($"Can't initialize server variables because not available database settings placeholder", Journal.Contracts.JournalingLevel.Critical);
                return;
            }

            AddComponent <DatabaseVisualUpdaterComponent>();
            AddComponent <DatabaseContextsCacheComponent>();
            AddComponent <DatabaseUpdateStatusComponent>();
        }