Ejemplo n.º 1
0
        //Verify calendar slots and create reservation states
        private List <ReservationSlot> CreateReservationSlots(ReservationRequest req, int resID)
        {
            List <ReservationSlot> reservationSlots = new List <ReservationSlot>();

            foreach (int slot in req.Slots)
            {
                ReservationSlotState state = ReservationSlotState.INITIATED;

                CalendarSlot calendarSlot;
                if (_calendar.TryGetValue(slot, out calendarSlot))
                {
                    if (calendarSlot.State == CalendarSlotState.ASSIGNED)
                    {
                        state = ReservationSlotState.ABORTED;
                    }
                }
                else
                {
                    calendarSlot         = new CalendarSlot();
                    calendarSlot.SlotNum = slot;
                    calendarSlot.State   = CalendarSlotState.FREE;

                    _calendar[slot] = calendarSlot;
                    Log.Debug(_userName, "Creating new calendar entry. Slot: " + calendarSlot.SlotNum + ". State: " + calendarSlot.State);
                }

                Monitor.Enter(calendarSlot);
                if (calendarSlot.State == CalendarSlotState.FREE)
                {
                    calendarSlot.State = CalendarSlotState.ACKNOWLEDGED;
                }
                Monitor.Exit(calendarSlot);
                calendarSlot.WaitingBook.Add(resID);

                ReservationSlot rs = new ReservationSlot(resID, slot, state);
                reservationSlots.Add(rs);
            }

            return(reservationSlots);
        }
Ejemplo n.º 2
0
 public ReservationSlot(int reservationID, int slotID, ReservationSlotState state)
 {
     this.ReservationID = reservationID;
     this.SlotID        = slotID;
     this.State         = state;
 }
Ejemplo n.º 3
0
 public ReservationSlot(int reservationID, int slotID, ReservationSlotState state)
 {
     this.ReservationID = reservationID;
     this.SlotID = slotID;
     this.State = state;
 }