コード例 #1
0
 public void AddReset(ResetData rd)
 {
     lock (Resets)
     {
         Resets.Add(rd);
     }
 }
コード例 #2
0
        /// <summary>
        /// Возвращает следующее значение последовательности с указанным кодом
        /// </summary>
        /// <param name="objectSpace">Пространство объектов для загрузки и хранения объектов</param>
        /// <param name="code">Код последовательности</param>
        /// <param name="reset">Условие сброса значения последовательности</param>
        /// <returns>Следующее значение последовательности с кодом <b>code</b></returns>
        /// <remarks>Если значение последовательность не найдена, то создается новая последовательность. Если выполнено условие сброса
        /// значения последовательности, то значение сбрасывается в 0 и возвращается следующее значение, т.е. 1.</remarks>
        /// <exception cref="ArgumentNullException">Не указаны пространство объектов или код последовательности</exception>
        /// <exception cref="ArgumentException">Указано условие сброса значения, отличное от исходного</exception>
        public static int GetNext(IObjectSpace objectSpace, string code, Resets reset = Resets.Never)
        {
            if (objectSpace == null)
            {
                throw new ArgumentNullException("objectSpace");
            }
            if (string.IsNullOrEmpty(code))
            {
                throw new ArgumentNullException("code");
            }
            Sequence sequence = Find(objectSpace, code);

            if (sequence == null)
            {
                sequence            = objectSpace.CreateObject <Sequence>();
                sequence.Code       = code;
                sequence.Reset      = reset;
                sequence.Current    = 0;
                sequence.LastChange = DateTime.Now;
            }
            else
            {
                objectSpace.ReloadObject(sequence);
                if (sequence.Reset != reset)
                {
                    throw new ArgumentException(string.Format("Reset of sequence {0} is different (parameter = {1}, original = {2})", code, reset, sequence.Reset), "reset");
                }
            }
            var next = sequence.GetNext();

            return(next);
        }
コード例 #3
0
        /// <summary>
        /// Возвращает следующее значение последовательности с указанным кодом
        /// </summary>
        /// <param name="session">Сессия для загрузки и хранения объектов</param>
        /// <param name="code">Код последовательности</param>
        /// <param name="reset">Условие сброса значения последовательности</param>
        /// <returns>Следующее значение последовательности с кодом <b>code</b></returns>
        /// <remarks>Если значение последовательность не найдена, то создается новая последовательность. Если выполнено условие сброса
        /// значения последовательности, то значение сбрасывается в 0 и возвращается следующее значение, т.е. 1.</remarks>
        /// <exception cref="ArgumentNullException">Не указаны сессия или код последовательности</exception>
        /// <exception cref="ArgumentException">Указано условие сброса значения, отличное от исходного</exception>
        public static int GetNext(Session session, string code, Resets reset = Resets.Never)
        {
            if (session == null)
            {
                throw new ArgumentNullException("session");
            }
            if (string.IsNullOrEmpty(code))
            {
                throw new ArgumentNullException("code");
            }
            Sequence sequence = Find(session, code);

            if (sequence == null)
            {
                sequence            = new Sequence(session);
                sequence.Code       = code;
                sequence.Reset      = reset;
                sequence.Current    = 0;
                sequence.LastChange = DateTime.Now;
            }
            else if (sequence.Reset != reset)
            {
                throw new ArgumentException(string.Format("Reset of sequence {0} is different (parameter = {1}, original = {2})", code, reset, sequence.Reset), "reset");
            }
            return(sequence.GetNext());
        }
コード例 #4
0
 internal static void Register(Type type)
 {
     Constructors.Add(type.GetConstructor(Type.EmptyTypes));
     Saves.Add(type, typeof(FieldBackuper <>).MakeGenericType(type)
               .GetMethod("Save"));
     Resets.Add(type, typeof(FieldBackuper <>).MakeGenericType(type)
                .GetMethod("Reset"));
 }
コード例 #5
0
        public void AddReset(string type, int extra, int arg1, int arg2, int arg3)
        {
            var newReset = new ResetData
            {
                Type    = Realm.Library.Common.Extensions.EnumerationExtensions.GetEnumIgnoreCase <ResetTypes>(type),
                Extra   = extra,
                Command = type[0].ToString()
            };

            newReset.SetArgs(arg1, arg2, arg3);
            Resets.Add(newReset);
        }
コード例 #6
0
ファイル: Room.cs プロジェクト: kaerber/kmud
        public void Update()
        {
            UpdateQueue.AddRelative((200 + World.RndGen.Next(200)) * Clock.TimeBase, Update);
            UpdateQueue.Run();

            if (Resets != null)
            {
                lock (this)
                    Resets.Update();
            }

            Log.Info(World.Instance.Time / 1000 + ": room " + Id + " updated.");
        }
コード例 #7
0
ファイル: Author.cs プロジェクト: Pounehsn/WekaFileBuilders
 static Author()
 {
     Resets.Add(() => NameToAuthor.Clear());
 }
コード例 #8
0
 public void AddReset(ResetData reset) => Resets.Add(reset);