Package org.mitre.sim.event

Examples of org.mitre.sim.event.Event


      if (resultList == null) {
        //System.out.println("dequeue Null");
        return null;
      }
      else {
        Event result = (Event) resultList.removeFirst();
        if (resultList.size() == 0) {
          db.remove(keyVal);
        }
        //System.out.println("dequeue " + result.toString());
        return result;
View Full Code Here


  public double getNextTime() {
    if (db.size() > 0) {
      Double keyVal = (Double) db.firstKey();
      LinkedList<Event> resultList = db.get(keyVal);
      if (resultList != null) {
        Event result = (Event) resultList.get(0);
        if (result != null) return result.getNextTime();
      }
    }
    return Double.POSITIVE_INFINITY;
  }
View Full Code Here

  public boolean isEmpty() {
    if (db.size() > 0) {
      Double keyVal = (Double) db.firstKey();
      LinkedList<Event> resultList = db.get(keyVal);
      if (resultList != null) {
        Event result = (Event) resultList.get(0);
        if (result != null) return false;
      }
    }
    return true;
  }
View Full Code Here

    return "HashSet 1.1";
  }

  public synchronized Event dequeueNextEvent() {
    //System.out.print("dequeue ");
    Event result = null;
    double smallestTime = Double.POSITIVE_INFINITY;
    for (Iterator<?> i = db.iterator(); i.hasNext(); ) {
      Event nextEvent = (Event)i.next();
      if (nextEvent.getNextTime() < smallestTime) {
        smallestTime = nextEvent.getNextTime();
        result = nextEvent;
      }
    }
    db.remove(result);
    //if (result == null) System.out.println("Null"); else System.out.println(result.toString());
View Full Code Here

  public synchronized Set<Event> getEvents() {
    return new HashSet<Event>(db);
  }

  public double getNextTime() {
    Event result = null;
    double smallestTime = Double.POSITIVE_INFINITY;
    for (Iterator<?> i = db.iterator(); i.hasNext(); ) {
      Event nextEvent = (Event)i.next();
      if (nextEvent.getNextTime() < smallestTime) {
        smallestTime = nextEvent.getNextTime();
        result = nextEvent;
      }
    }
    if (result != null) return result.getNextTime();
    return Double.POSITIVE_INFINITY;
View Full Code Here

    do {
      LinkedList<?> currentList = (LinkedList<?>)calendar.elementAt(index);
      //dumpList("dequeueNextEvent top of loop", currentList);
      if ( (currentList.size() > 0&&
           ((Event) currentList.getFirst()).getNextTime() < buckettop) {
        Event curr = (Event) currentList.removeFirst();
        lastbucket = index;
        lastprio = curr.getNextTime();
        qsize--;
        if (qsize < bot_threshold) {
          calendarResize(nbuckets / 2);
        }
        //System.out.println("Dequeued-A event time " + curr.getNextTime());
        return curr;
      } else {
        ++index;
        if (index == nbuckets) {
          index = 0; // modulo
        }
        //System.out.println("Dequeued prepare to check next bucket " + index);
        buckettop += width;
      }
    } while (index != lastbucket);
    // perform direct search for minimum priority event
    // find it by examing the first event in each bucket
    //System.out.println("Dequeued go to a direct search");
    int lowIndex = -1;
    double minTime = 0.0;
    for (int j = 0; j < nbuckets; j++) {
      LinkedList<?> currentList = (LinkedList<?>)calendar.elementAt(j);
      if (currentList.size() > 0)  {
        Event curr = (Event)currentList.getFirst();
        double currTime = curr.getNextTime();
        if ( (currTime < minTime) || (lowIndex == -1)) {
          lowIndex = j;
          minTime = currTime;
        }
      }
    }
    Event curr = (Event) ( (LinkedList<?>) calendar.elementAt(lowIndex)).removeFirst();
    lastbucket = lowIndex;
    lastprio = minTime;
    buckettop = ( (int) (lastprio / width) + 1) * width + (0.5 * width);
    qsize--;
    if (qsize < bot_threshold) {
View Full Code Here

    //System.out.println("enqueueEvent at " + eTime + " into bucket " + index);
    LinkedList<Event> theList = (LinkedList<Event>) calendar.elementAt(index);
    ListIterator<Event> iterator = theList.listIterator(0);
    boolean eventWasInserted = false;
    while (iterator.hasNext()) {
      Event curr = (Event) iterator.next();
      //System.out.println("enqueueEvent iterator " + curr.getNextTime());
      if (curr.getNextTime() > eTime) {
        iterator.previous();
        iterator.add(e);
        eventWasInserted = true;
        //System.out.println("enqueueEvent iterator inserted");
        break;
View Full Code Here

  }

  //TODO There must be a more efficient way to do this
  public double getNextTime() {
    synchronized (this) {
      Event next = dequeueNextEvent();
      if (next != null) {
        double result = next.getNextTime();
        enqueueEvent(next);
        return result;
      }
      return Double.POSITIVE_INFINITY;
    }   
View Full Code Here

TOP

Related Classes of org.mitre.sim.event.Event

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.