Transaction. If there are initially no matches in the space that are visible to the passed Transaction, an invocation of this method will block for up to a specified timeout for one or more matches to appear. The effect on the space of an invocation of this method successfully taking an Entry will be the same as if the Entry had been taken using the singleton version of this method and passing txn as the Transaction.
The tmpls parameter must be a Collection of Entry instances to be used as templates. All of the entries taken must match one or more of these templates. The tmpls parameter may contain null values and may contain duplicates. An Entry is said to be available to an invocation of this method if the Entry could have been returned by an invocation of the singleton take method using txn.
If the method succeeds, a non-null Collection will be returned. The Collection will contain a copy of each Entry that was taken. If no entries were taken, the Collection will be empty. Each Entry taken will be represented by a distinct Entry instance in the returned Collection, even if some of the entries are equivalent to others taken by the operation. There will be no null elements in the returned Collection.
If one or more of the entries taken cannot be unmarshalled in the client, an {@link UnusableEntriesException} isthrown. The exception's {@link UnusableEntriesException#getEntries UnusableEntriesException.getEntries} method will return aCollection with a copy of each Entry that could be unmarshalled. The {@link UnusableEntriesException#getUnusableEntryExceptions UnusableEntriesException.getUnusableEntryExceptions} methodwill return a Collection with an {@link UnusableEntryException} for each Entry thatcould not be unmarshalled. Every Entry taken by the invocation will either be represented in the Collection returned by getEntries or in the Collection returned by getUnusableEntryExceptions.
If there is at least one matching Entry available in the space, an invocation of this method must take at least one Entry. If more than one matching Entry is available, the invocation may take additional entries. It must not take more than maxEntries, but an implementation may chose to take fewer entries from the space than the maximum available or the maximum allowed by maxEntries. If for whatever reason, an invocation of this method takes fewer entries than the maximum number of available matching entries, how an implementation selects which entries should be taken by the invocation and which are left in the space is unspecified. How consumption of entries is arbitrated between conflicting queries is also unspecified.
If there are initially no matching entries in the space, an invocation of this method should block for up to timeout milliseconds for a match to appear. If one or more matches become available before timeout expires, one or more of the newly available entries should be taken and the method should return without further blocking. If for some reason the invocation can't block for the full timeout and no entries have been taken, the invocation must fail with a {@link RemoteException} or {@link TransactionException} asappropriate.
If an invocation of this method removes (or locks) more than one Entry, the order in which the removal (or locking) occurs is undefined, and different observers may see the removal or locking of the entries in different orders.
If a TransactionException, {@link SecurityException}, {@link IllegalArgumentException}, or {@link NullPointerException} is thrown, no entries willhave been taken. If a RemoteException is thrown, up to maxEntries may have been taken by this operation.
@param tmpls a {@link Collection} of {@link Entry}instances, each representing a template. All of the entries taken by an invocation of this method will match one or more elements of tmpls
@param txn the {@link Transaction} this operation should beperformed under, may be null
@param timeout if there are initially no availablematches in the space, the maximum number of milliseconds to block waiting for a match to become available
@param maxEntries the maximum number of entries that may betaken by this method
@return a Collection that contains a copy of eachEntry taken from the space by this method. The space will not keep a reference to this Collection. May be immutable
@throws UnusableEntriesException if one or more of theentries taken can't be unmarshalled in the client
@throws TransactionException if txn isnon-null and is not usable by the space.
@throws RemoteException if a communication error occurs
@throws IllegalArgumentException if any non-nullelement of tmpls is not an instance of Entry, if tmpls is empty, if timeout is negative, or if maxEntries is non-positive
@throws NullPointerException if tmpls is null
Returns the next event from the channel if available. If the channel does not have any events available, this method must return {@code null}.
Note: This method must be invoked within an active {@link Transaction} boundary. Failure to do so can lead to unpredictableresults.
@return the next available event or {@code null} if no events areavailable. @throws ChannelException in case this operation fails. @see org.apache.flume.Transaction#begin()This future may safely be used as a NotifyingFuture if desired. This is because if it tries to set a listener it will be called immediately since the task has already been completed.
| |
| |
| |
| |
| |