Beispiel #1
0
        /// <summary>
        /// Sets a long-valued setting.
        /// </summary>
        /// <param name="Key">Key name.</param>
        /// <param name="Value">New value.</param>
        /// <returns>If the setting was saved (true). If the setting existed, and had the same value, false is returned.</returns>
        public static async Task <bool> SetAsync(string Key, long Value)
        {
            await synchObject.BeginWrite();

            try
            {
                Int64Setting Setting = await Database.FindFirstDeleteRest <Int64Setting>(new FilterFieldEqualTo("Key", Key));

                if (Setting is null)
                {
                    Setting = new Int64Setting(Key, Value);
                    await Database.Insert(Setting);

                    return(true);
                }
                else
                {
                    if (Setting.Value != Value)
                    {
                        Setting.Value = Value;
                        await Database.Update(Setting);

                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            finally
            {
                await synchObject.EndWrite();
            }
        }
Beispiel #2
0
        /// <summary>
        /// Sets a long-valued setting.
        /// </summary>
        /// <param name="Key">Key name.</param>
        /// <param name="Value">New value.</param>
        /// <returns>If the setting was saved (true). If the setting existed, and had the same value, false is returned.</returns>
        public static async Task <bool> SetAsync(string Key, long Value)
        {
            foreach (Int64Setting Setting in await Database.Find <Int64Setting>(new FilterFieldEqualTo("Key", Key)))
            {
                if (Setting.Value != Value)
                {
                    Setting.Value = Value;
                    await Database.Update(Setting);

                    //Log.Informational("Setting updated.", Key, new KeyValuePair<string, object>("Value", Value));
                    return(true);
                }
                else
                {
                    return(false);
                }
            }

            Int64Setting NewSetting = new Int64Setting(Key, Value);
            await Database.Insert(NewSetting);

            //Log.Informational("Setting created.", Key, new KeyValuePair<string, object>("Value", Value));

            return(true);
        }
Beispiel #3
0
        /// <summary>
        /// Sets a long-valued setting.
        /// </summary>
        /// <param name="Key">Key name.</param>
        /// <param name="Value">New value.</param>
        /// <returns>If the setting was saved (true). If the setting existed, and had the same value, false is returned.</returns>
        public static async Task <bool> SetAsync(string Key, long Value)
        {
            using (Semaphore Semaphore = await Semaphores.BeginWrite("setting:" + Key))
            {
                Int64Setting Setting = await Database.FindFirstDeleteRest <Int64Setting>(new FilterFieldEqualTo("Key", Key));

                if (Setting is null)
                {
                    Setting = new Int64Setting(Key, Value);
                    await Database.Insert(Setting);

                    return(true);
                }
                else
                {
                    if (Setting.Value != Value)
                    {
                        Setting.Value = Value;
                        await Database.Update(Setting);

                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
        }
Beispiel #4
0
        /// <summary>
        /// Sets a long-valued setting.
        /// </summary>
        /// <param name="Key">Key name.</param>
        /// <param name="Value">New value.</param>
        /// <returns>If the setting was saved (true). If the setting existed, and had the same value, false is returned.</returns>
        public static async Task <bool> SetAsync(string Key, long Value)
        {
            using (Semaphore Semaphore = await Semaphores.BeginWrite("setting:" + Key))
            {
                Int64Setting Setting = await Database.FindFirstDeleteRest <Int64Setting>(new FilterFieldEqualTo("Key", Key));

                return(await SetAsyncLocked(Key, Value, Setting));
            }
        }
Beispiel #5
0
        private static async Task <bool> SetAsyncLocked(string Key, long Value, Int64Setting Setting)
        {
            if (Setting is null)
            {
                Setting = new Int64Setting(Key, Value);
                await Database.Insert(Setting);

                return(true);
            }
            else
            {
                if (Setting.Value != Value)
                {
                    Setting.Value = Value;
                    await Database.Update(Setting);

                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
Beispiel #6
0
        /// <summary>
        /// Gets a long-valued setting.
        /// </summary>
        /// <param name="Key">Key name.</param>
        /// <param name="DefaultValue">Default value, if not found.</param>
        /// <returns>Setting value.</returns>
        public static async Task <long> GetAsync(string Key, long DefaultValue)
        {
            Int64Setting Setting = await GetAsync <Int64Setting>(Key);

            return(Setting?.Value ?? DefaultValue);
        }