public void handleCreateReservation(ARObject obj,int senderID,int sendTag)
    {
        // check whether the requested PE is sufficient to handle or not
        if ( obj.getNumPE() > super.totalPE_ )
        {
            super.replyCreateReservation(senderID, sendTag, NOT_FOUND,
                             GridSimTags.AR_CREATE_FAIL_RESOURCE_NOT_ENOUGH_PE);
            return;
        }

        // convert the start time from user's time into local time
        long startTime = AdvanceReservation.convertTimeZone(obj.getStartTime(),
                            obj.getTimeZone(), resource_.getResourceTimeZone());

        // get the current time
        long currentTime = super.getCurrentTime();

        // check whether the start time has passed or not
        if (startTime < currentTime)
        {
            super.replyCreateReservation(senderID, sendTag, NOT_FOUND,
                             GridSimTags.AR_CREATE_ERROR_INVALID_START_TIME);
            return;
        }

        // then overrides the object start time into local time
        obj.setStartTime(startTime);

        // determine when it will be expired
        long expTime = currentTime + (commitPeriod_ * super.MILLI_SEC);

        // check the start time against the availability
        // case 1: if the list is empty
        if (reservList_.size() == 0) {
            acceptReservation(obj, 0, senderID, sendTag, expTime, true);
        }
        else
        {
            // case 2: if list is not empty, find the available slot
            // remember that duration time is in second. Then need to convert
            // into milli seconds
            long endTime = startTime + (obj.getDurationTime()*super.MILLI_SEC);
            int pos = findEmptySlot(startTime, endTime, obj.getNumPE());

            // able to find empty slot(s)
            if (pos > NOT_FOUND) {
                acceptReservation(obj, pos, senderID, sendTag, expTime, true);
            }

            // not able to find any slots. Here pos contains a busy time tag.
            else {
                super.replyCreateReservation(senderID, sendTag, NOT_FOUND, pos);
            }
        }
    }