Ejemplo n.º 1
0
 /// <summary>
 /// Writes all changes down to persistence.
 /// </summary>
 /// <param name="persistentSerializer">The persistent serializer.</param>
 void IPersistentData.Write(IPersistentSerializer persistentSerializer)
 {
     lock (_persistentValues)
     {
         foreach (var persistentValue in _persistentValues.Values)
         {
             if (persistentValue.Dirty)
                 Write(persistentValue, persistentSerializer);
         }
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Writes all changes down to persistence.
 /// </summary>
 /// <param name="persistentSerializer">The persistent serializer.</param>
 void IPersistentData.Write(IPersistentSerializer persistentSerializer)
 {
     lock (_persistentValues)
     {
         foreach (var persistentValue in _persistentValues.Values)
         {
             if (persistentValue.Dirty)
             {
                 Write(persistentValue, persistentSerializer);
             }
         }
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Sets the value.
 /// </summary>
 /// <param name="name">The name.</param>
 /// <param name="value">The value.</param>
 /// <param name="valueType"></param>
 /// <param name="writeNow">if set to <c>true</c> persists the value immediately.</param>
 /// <param name="persistentSerializer">The persistent serializer.</param>
 void IPersistentData.SetValue(string name, object value, Type valueType, bool writeNow, IPersistentSerializer persistentSerializer)
 {
     lock (_persistentValues)
     {
         PersistentValue persistentValue;
         // if the value is not found (this is probably rare), then a container is created
         if (!_persistentValues.TryGetValue(name, out persistentValue))
         {
             persistentValue = new PersistentValue
             {
                 Name = name,
                 ValueType = valueType,
             };
             _persistentValues[name] = persistentValue;
         }
         // then the value is set anyway
         // TODO: conditional dirty (if value actually changes)
         persistentValue.Value = value;
         persistentValue.Dirty = true;
         // if it has to be written immediately, then do it
         if (writeNow)
             Write(persistentValue, persistentSerializer);
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Gets the persistent value.
 /// </summary>
 /// <param name="name">The name.</param>
 /// <param name="valueType">Type of the value.</param>
 /// <param name="defaultValue">The default value.</param>
 /// <param name="persistentSerializer">The persistent serializer.</param>
 /// <returns></returns>
 private PersistentValue GetPersistentValue(string name, Type valueType, object defaultValue, IPersistentSerializer persistentSerializer)
 {
     lock (_persistentValues)
     {
         if (!_persistentValues.TryGetValue(name, out var persistentValue))
         {
             // value is read from serializer only if not found in memory
             if (!persistentSerializer.TryLoadValue(name, valueType, out var value))
             {
                 value = defaultValue;
             }
             persistentValue = new PersistentValue
             {
                 Name      = name,
                 Value     = value,
                 ValueType = valueType,
                 Dirty     = false,
             };
         }
         return(persistentValue);
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Gets a value, or default value.
 /// </summary>
 /// <param name="name">The name.</param>
 /// <param name="valueType"></param>
 /// <param name="defaultValue">The default value.</param>
 /// <param name="persistentSerializer">The persistent serializer.</param>
 /// <returns></returns>
 object IPersistentData.GetValue(string name, Type valueType, object defaultValue, IPersistentSerializer persistentSerializer)
 {
     return(GetPersistentValue(name, valueType, defaultValue, persistentSerializer).Value);
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Writes the specified persistent value.
 /// </summary>
 /// <param name="persistentValue">The persistent value.</param>
 /// <param name="persistentSerializer">The persistent serializer.</param>
 private static void Write(PersistentValue persistentValue, IPersistentSerializer persistentSerializer)
 {
     persistentSerializer.SaveValue(persistentValue.Name, persistentValue.ValueType, persistentValue.Value);
     persistentValue.Dirty = false;
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Sets the value.
 /// </summary>
 /// <param name="name">The name.</param>
 /// <param name="value">The value.</param>
 /// <param name="valueType"></param>
 /// <param name="writeNow">if set to <c>true</c> persists the value immediately.</param>
 /// <param name="persistentSerializer">The persistent serializer.</param>
 void IPersistentData.SetValue(string name, object value, Type valueType, bool writeNow, IPersistentSerializer persistentSerializer)
 {
     lock (_persistentValues)
     {
         // if the value is not found (this is probably rare), then a container is created
         if (!_persistentValues.TryGetValue(name, out var persistentValue))
         {
             persistentValue = new PersistentValue
             {
                 Name      = name,
                 ValueType = valueType,
             };
             _persistentValues[name] = persistentValue;
         }
         // then the value is set anyway
         // TODO: conditional dirty (if value actually changes)
         persistentValue.Value = value;
         persistentValue.Dirty = true;
         // if it has to be written immediately, then do it
         if (writeNow)
         {
             Write(persistentValue, persistentSerializer);
         }
     }
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Writes the specified persistent value.
 /// </summary>
 /// <param name="persistentValue">The persistent value.</param>
 /// <param name="persistentSerializer">The persistent serializer.</param>
 private static void Write(PersistentValue persistentValue, IPersistentSerializer persistentSerializer)
 {
     persistentSerializer.SaveValue(persistentValue.Name, persistentValue.ValueType, persistentValue.Value);
     persistentValue.Dirty = false;
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Gets a value, or default value.
 /// </summary>
 /// <param name="name">The name.</param>
 /// <param name="valueType"></param>
 /// <param name="defaultValue">The default value.</param>
 /// <param name="persistentSerializer">The persistent serializer.</param>
 /// <returns></returns>
 object IPersistentData.GetValue(string name, Type valueType, object defaultValue, IPersistentSerializer persistentSerializer)
 {
     return GetPersistentValue(name, valueType, defaultValue, persistentSerializer).Value;
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Gets the persistent value.
 /// </summary>
 /// <param name="name">The name.</param>
 /// <param name="valueType">Type of the value.</param>
 /// <param name="defaultValue">The default value.</param>
 /// <param name="persistentSerializer">The persistent serializer.</param>
 /// <returns></returns>
 private PersistentValue GetPersistentValue(string name, Type valueType, object defaultValue, IPersistentSerializer persistentSerializer)
 {
     lock (_persistentValues)
     {
         PersistentValue persistentValue;
         if (!_persistentValues.TryGetValue(name, out persistentValue))
         {
             // value is read from serializer only if not found in memory
             object value;
             if (!persistentSerializer.TryLoadValue(name, valueType, out value))
                 value = defaultValue;
             persistentValue = new PersistentValue
             {
                 Name = name,
                 Value = value,
                 ValueType = valueType,
                 Dirty = false,
             };
         }
         return persistentValue;
     }
 }