diff options
author | Keith Seitz <keiths@redhat.com> | 2007-04-28 01:05:36 +0000 |
---|---|---|
committer | Keith Seitz <kseitz@gcc.gnu.org> | 2007-04-28 01:05:36 +0000 |
commit | 9898e8391f88fc5b583fc27a4d2fa3bdfd13f396 (patch) | |
tree | ee628e5f4d4000c3c7082911308b76851000899a /libjava/classpath/gnu | |
parent | e91ada38adfe05db8334483df3306eef91463a88 (diff) | |
download | gcc-9898e8391f88fc5b583fc27a4d2fa3bdfd13f396.zip gcc-9898e8391f88fc5b583fc27a4d2fa3bdfd13f396.tar.gz gcc-9898e8391f88fc5b583fc27a4d2fa3bdfd13f396.tar.bz2 |
Jdwp.class: Regenerated.
* classpath/lib/gnu/classpath/jdwp/Jdwp.class: Regenerated.
* classpath/lib/gnu/classpath/jdwp/event/EventManager.class:
Regenerated.
* gnu/classpath/jdwp/event/EventManager.h: Regenerated.
* gnu/classpath/jdwp/event/EventManager.java
(getEventRequest): Rename to...
(getEventRequests): ...this.
Change return type to array of requests.
Construct a list of all matching events and return
them all.
* gnu/classpath/jdwp/Jdwp.java (notify): Use getEventRequests
and send event notifications for all matching requests.
From-SVN: r124250
Diffstat (limited to 'libjava/classpath/gnu')
-rw-r--r-- | libjava/classpath/gnu/classpath/jdwp/Jdwp.java | 19 | ||||
-rw-r--r-- | libjava/classpath/gnu/classpath/jdwp/event/EventManager.java | 31 |
2 files changed, 25 insertions, 25 deletions
diff --git a/libjava/classpath/gnu/classpath/jdwp/Jdwp.java b/libjava/classpath/gnu/classpath/jdwp/Jdwp.java index e63a9a3..ca92f2f 100644 --- a/libjava/classpath/gnu/classpath/jdwp/Jdwp.java +++ b/libjava/classpath/gnu/classpath/jdwp/Jdwp.java @@ -1,5 +1,5 @@ /* Jdwp.java -- Virtual machine to JDWP back-end programming interface - Copyright (C) 2005, 2006 Free Software Foundation + Copyright (C) 2005, 2006, 2007 Free Software Foundation This file is part of GNU Classpath. @@ -207,23 +207,22 @@ public class Jdwp * The event is filtered through the event manager before being * sent. * - * FIXME: Probably need logic to send multiple events + * FIXME: Probably need logic to send multiple (different) events * @param event the event to report */ - public static void notify (Event event) + public static void notify(Event event) { - Jdwp jdwp = getDefault (); + Jdwp jdwp = getDefault(); if (jdwp != null) { - EventManager em = EventManager.getDefault (); - EventRequest request = em.getEventRequest (event); - if (request != null) + EventManager em = EventManager.getDefault(); + EventRequest[] requests = em.getEventRequests(event); + for (int i = 0; i < requests.length; ++i) { try { - System.out.println ("Jdwp.notify: sending event " + event); - sendEvent (request, event); - jdwp._enforceSuspendPolicy (request.getSuspendPolicy ()); + sendEvent(requests[i], event); + jdwp._enforceSuspendPolicy(requests[i].getSuspendPolicy()); } catch (Exception e) { diff --git a/libjava/classpath/gnu/classpath/jdwp/event/EventManager.java b/libjava/classpath/gnu/classpath/jdwp/event/EventManager.java index 02ffa24..aa3d5d6 100644 --- a/libjava/classpath/gnu/classpath/jdwp/event/EventManager.java +++ b/libjava/classpath/gnu/classpath/jdwp/event/EventManager.java @@ -44,6 +44,7 @@ import gnu.classpath.jdwp.VMVirtualMachine; import gnu.classpath.jdwp.exception.InvalidEventTypeException; import gnu.classpath.jdwp.exception.JdwpException; +import java.util.ArrayList; import java.util.Collection; import java.util.Hashtable; import java.util.Iterator; @@ -146,39 +147,39 @@ public class EventManager } /** - * Returns a request for the given event. This method will only + * Returns all requests for the given event. This method will only * be used if the <code>EventManager</code> is handling event filtering. * * @param event the event - * @return request that was interested in this event + * @return requests that are interested in this event * or <code>null</code> if none (and event should not be sent) * @throws IllegalArgumentException for invalid event kind */ - public EventRequest getEventRequest (Event event) + public EventRequest[] getEventRequests(Event event) { - EventRequest interestedRequest = null; + ArrayList interestedEvents = new ArrayList(); Hashtable requests; - Byte kind = new Byte (event.getEventKind ()); - requests = (Hashtable) _requests.get (kind); + Byte kind = new Byte(event.getEventKind()); + requests = (Hashtable) _requests.get(kind); if (requests == null) { // Did not get a valid event type - throw new IllegalArgumentException ("invalid event kind: " + kind); + throw new IllegalArgumentException("invalid event kind: " + kind); } - boolean match = false; // Loop through the requests. Must look at ALL requests in order // to evaluate all filters (think count filter). - // TODO: What if multiple matches? Spec isn't so clear on this. - Iterator rIter = requests.values().iterator (); - while (rIter.hasNext ()) + Iterator rIter = requests.values().iterator(); + while (rIter.hasNext()) { - EventRequest request = (EventRequest) rIter.next (); - if (request.matches (event)) - interestedRequest = request; + EventRequest request = (EventRequest) rIter.next(); + if (request.matches(event)) + interestedEvents.add(request); } - return interestedRequest; + EventRequest[] r = new EventRequest[interestedEvents.size()]; + interestedEvents.toArray(r); + return r; } /** |