The following features are supported:
The selector works a little bit like the {@code $()} variable fromjQuery. @author Daniel Léonard @version $Revision$
Model includes list and query methods which will return all the statements which are selected by a selector object. This is the interface of such selector objects.
A selector may be created by invoking the {@link #open open} method ofthis class, which will use the system's default {@link java.nio.channels.spi.SelectorProvider selector provider A selectable channel's registration with a selector is represented by a {@link SelectionKey} object. A selector maintains three sets of selectionkeys: The key set contains the keys representing the current channel registrations of this selector. This set is returned by the {@link #keys() keys} method. The selected-key set is the set of keys such that each key's channel was detected to be ready for at least one of the operations identified in the key's interest set during a prior selection operation. This set is returned by the {@link #selectedKeys() selectedKeys} method.The selected-key set is always a subset of the key set. The cancelled-key set is the set of keys that have been cancelled but whose channels have not yet been deregistered. This set is not directly accessible. The cancelled-key set is always a subset of the key set. All three sets are empty in a newly-created selector. A key is added to a selector's key set as a side effect of registering a channel via the channel's {@link SelectableChannel#register(Selector,int) register} method. Cancelled keys are removed from the key set duringselection operations. The key set itself is not directly modifiable. A key is added to its selector's cancelled-key set when it is cancelled, whether by closing its channel or by invoking its {@link SelectionKey#cancel cancel} method. Cancelling a key will cause its channel to be deregisteredduring the next selection operation, at which time the key will removed from all of the selector's key sets. Keys are added to the selected-key set by selection operations. A key may be removed directly from the selected-key set by invoking the set's {@link java.util.Set#remove(java.lang.Object) remove}method or by invoking the {@link java.util.Iterator#remove() remove} methodof an {@link java.util.Iterator } tocreate a new selector. A selector may also be created by invoking the {@link java.nio.channels.spi.SelectorProvider#openSelector openSelector}method of a custom selector provider. A selector remains open until it is closed via its {@link #close close} method.
iterator
} obtained from theset. Keys are never removed from the selected-key set in any other way; they are not, in particular, removed as a side effect of selection operations. Keys may not be added directly to the selected-key set.
During each selection operation, keys may be added to and removed from a selector's selected-key set and may be removed from its key and cancelled-key sets. Selection is performed by the {@link #select()}, {@link #select(long)}, and {@link #selectNow()} methods, and involves three steps:
Each key in the cancelled-key set is removed from each key set of which it is a member, and its channel is deregistered. This step leaves the cancelled-key set empty.
The underlying operating system is queried for an update as to the readiness of each remaining channel to perform any of the operations identified by its key's interest set as of the moment that the selection operation began. For a channel that is ready for at least one such operation, one of the following two actions is performed:
If the channel's key is not already in the selected-key set then it is added to that set and its ready-operation set is modified to identify exactly those operations for which the channel is now reported to be ready. Any readiness information previously recorded in the ready set is discarded.
Otherwise the channel's key is already in the selected-key set, so its ready-operation set is modified to identify any new operations for which the channel is reported to be ready. Any readiness information previously recorded in the ready set is preserved; in other words, the ready set returned by the underlying system is bitwise-disjoined into the key's current ready set.
If any keys were added to the cancelled-key set while step (2) was in progress then they are processed as in step (1).
Whether or not a selection operation blocks to wait for one or more channels to become ready, and if so for how long, is the only essential difference between the three selection methods.
Selectors are themselves safe for use by multiple concurrent threads; their key sets, however, are not.
The selection operations synchronize on the selector itself, on the key set, and on the selected-key set, in that order. They also synchronize on the cancelled-key set during steps (1) and (3) above.
Changes made to the interest sets of a selector's keys while a selection operation is in progress have no effect upon that operation; they will be seen by the next selection operation.
Keys may be cancelled and channels may be closed at any time. Hence the presence of a key in one or more of a selector's key sets does not imply that the key is valid or that its channel is open. Application code should be careful to synchronize and check these conditions as necessary if there is any possibility that another thread will cancel a key or close a channel.
A thread blocked in one of the {@link #select()} or {@link #select(long)} methods may be interrupted by some other thread in one ofthree ways:
By invoking the selector's {@link #wakeup wakeup} method,
By invoking the selector's {@link #close close} method, or
By invoking the blocked thread's {@link java.lang.Thread#interrupt() interrupt} method, in which case itsinterrupt status will be set and the selector's {@link #wakeup wakeup}method will be invoked.
The {@link #close close} method synchronizes on the selector and allthree key sets in the same order as in a selection operation. A selector's key and selected-key sets are not, in general, safe for use by multiple concurrent threads. If such a thread might modify one of these sets directly then access should be controlled by synchronizing on the set itself. The iterators returned by these sets' {@link java.util.Set#iterator() iterator} methods are fail-fast: If the setis modified after the iterator is created, in any way except by invoking the iterator's own {@link java.util.Iterator#remove() remove} method, then a{@link java.util.ConcurrentModificationException} will be thrown.
This class works with {@link NetworkSend} and {@link NetworkReceive} to transmit size-delimited network requests andresponses.
A connection can be added to the selector associated with an integer id by doing
selector.connect(42, new InetSocketAddress("google.com", server.port), 64000, 64000);The connect call does not block on the creation of the TCP connection, so the connect method only begins initiating the connection. The successful invocation of this method does not mean a valid connection has been established. Sending requests, receiving responses, processing connection completions, and disconnections on the existing connections are all done using the
poll()
call. List<NetworkRequest> requestsToSend = Arrays.asList(new NetworkRequest(0, myBytes), new NetworkRequest(1, myOtherBytes)); selector.poll(TIMEOUT_MS, requestsToSend);The selector maintains several lists that are reset by each call to
poll()
which are available via various getters. These are reset by each call to poll()
. This class is not thread safe!
way[highway=residential] { width: 10; color: blue; }The selector decides, if the declaration block gets applied or not. All implementing classes of Selector are immutable.
A selector can be reused in various places of a model, to restrict the application of a procedure to a certain set of topologies and states. Selectors can be used to refine the initial conditions of a species, for instance to specify the initial distribution of different states and topologies. They can also be used in a reaction to decide if a this reaction happens, or to modulate its velocity, in function of the state or topology of a reactant.
A selector defines the list of components composing the mask, that are species type existing under a given state (that can be an ensemble of elementary states). In addition to the components, the selector lists the possible or mandatory bonds, as well as the components that must not be bound. It is to be noted that a selector must not necessarily be the most parsimonious. One can use the selectors to describe the fine-grained topology of complexes, even if this topology is not used to decide upon particular reactions. @author Nicolas Rodriguez @since 1.0 @version $Rev: 1639 $
Note:The methods that are marked as throwing {@link org.scale7.cassandra.pelops.exceptions.NotFoundException}are the only methods in Pelops that throw exceptions under non-failure conditions. @author dominicwilliams
Remarks: Not all the following selectors are supported (or will be supported) by CSS.
All examples are CSS2 compliant. @version $Revision: 1.12 $ @author Philippe Le Hegaret
Remarks: Not all the following selectors are supported (or will be supported) by CSS.
All examples are CSS2 compliant. @version $Revision: 1.2 $ @author Philippe Le Hegaret
A click on a tracked element that implements {@code Clickable} makes it the selected item, or{@code selected} can be used to manually control the selected item.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|