Пример #1
0
        public Reservation Set(long time, OnTime onTime, OnCancel onCancel = null,
                               Reservation.IHandle handler = null, IAlarmPayload payload = null)
        {
            Dev.Assert(onTime != null, "Cannot set timer with null onTime delegate");

            if (handler?.Reservation != null)
            {
                return(null);
            }

            Reservation reservation = _reservationPool.Alloc();

            reservation.Time     = LogicTime.TIME() + time;
            reservation.OnTime   = onTime;
            reservation.OnCancel = onCancel;
            reservation.Handler  = handler;
            reservation.Payload  = payload;

            if (handler != null)
            {
                Dev.Assert(handler.Reservation == null, "Alarm reservation already used");
                reservation.Handler.Reservation = reservation;
            }

            _reservations.Add(reservation.Time, reservation);

            return(reservation);
        }
Пример #2
0
 public Builder Alloc()
 {
     return(_builderPool.Alloc());
 }
Пример #3
0
 public NodeType Alloc()
 {
     return(_nodePool.Alloc());
 }