class SpaceProxy2 extends Object implements JavaSpace05, Administrable, ReferentUuid, Serializable
OutriggerServerImpl implements the
OutriggerSpace interface, and each
SpaceProxy2 object holds a reference to the remote
OutriggerSpace server it represents to the client. The client makes
calls from the JavaSpace interface, which the
SpaceProxy2 translates into appropriate
OutriggerSpace calls to the
OutriggerServerImpl server.| Modifier and Type | Class and Description |
|---|---|
private static class |
SpaceProxy2.ReadProperityPrivilegedAction
PrivilegedAction for reading a property.
|
| Modifier and Type | Field and Description |
|---|---|
private static Logger |
logger
Logger for logging information about operations carried out in
the client.
|
private long |
maxServerQueryTimeout
Maximum time any sub-query should be allowed to run for.
|
private static long |
maxServerQueryTimeoutPropertyValue
Value (as a long) of the
org.apache.river.outrigger.maxServerQueryTimeout
property in this VM, or a non-positive number if it is not set. |
(package private) static long |
serialVersionUID |
(package private) long |
serverMaxServerQueryTimeout
The value to use for maxServerQueryTimeout if no
local value is provided.
|
(package private) OutriggerServer |
space
The remote server this proxy works with.
|
(package private) Uuid |
spaceUuid
The
Uuid that identifies the space this proxy is for. |
| Constructor and Description |
|---|
SpaceProxy2(OutriggerServer space,
Uuid spaceUuid,
long serverMaxServerQueryTimeout)
Create a new
SpaceProxy2 for the given space. |
| Modifier and Type | Method and Description |
|---|---|
private long |
calcEndTime(long timeout)
Utility method to calculate the absolute end time of a query.
|
protected Lease |
constructLease(Uuid uuid,
long expiration)
Create a new lease with the specified id and initial expiration
|
MatchSet |
contents(Collection tmpls,
Transaction txn,
long leaseDuration,
long maxEntries)
Creates a match set that can be used to
exhaustively read through all of the matching entries in
the space that are visible to the passed
Transaction and remain visible for the lifetime of the
match set. |
(package private) static Entry |
entryFrom(EntryRep rep)
Return an entry generated from the given rep.
|
boolean |
equals(Object other) |
Object |
getAdmin()
Returns an object that implements whatever administration interfaces
are appropriate for the particular service.
|
private static long |
getMaxServerQueryTimeoutPropertyValue()
Safely read the value of
org.apache.river.outrigger.maxServerQueryTimeout. |
Uuid |
getReferentUuid()
Return the
Uuid that has been assigned to the
resource this proxy represents. |
int |
hashCode() |
private void |
logQuery(String op,
long serverTimeout,
OutriggerServer.QueryCookie cookie,
long remaining)
Log query call to server
|
protected Lease |
newLease(Uuid uuid,
long duration)
Create a new lease with the specified id and initial duration
|
EventRegistration |
notify(Entry tmpl,
Transaction txn,
RemoteEventListener listener,
long lease,
MarshalledObject handback)
When entries are written that match this template notify the
given
listener with a RemoteEvent that
includes the handback object. |
Entry |
read(Entry tmpl,
Transaction txn,
long timeout)
Read any matching entry from the space, blocking until one exists.
|
Entry |
readIfExists(Entry tmpl,
Transaction txn,
long timeout)
Read any matching entry from the space, returning
null if there is currently is none. |
private void |
readObject(ObjectInputStream in)
Read this object back setting the
maxServerQueryTimeout
field and validate state. |
private void |
readObjectNoData()
We should always have data in the stream, if this method
gets called there is something wrong.
|
EventRegistration |
registerForAvailabilityEvent(Collection tmpls,
Transaction txn,
boolean visibilityOnly,
RemoteEventListener listener,
long leaseDuration,
MarshalledObject handback)
Register for events triggered when a matching
Entry
transitions from unavailable to available. |
(package private) static EntryRep[] |
repFor(Collection entries,
String argName) |
(package private) static EntryRep |
repFor(Entry entry)
Return an
EntryRep object for the given
Entry. |
private void |
setMaxServerQueryTimeout()
Set
maxServerQueryTimeout based on the values
of serverMaxServerQueryTimeout and
maxServerQueryTimeoutPropertyValue. |
Entry |
snapshot(Entry entry)
The process of serializing an entry for transmission to a JavaSpaces
service will be identical if the same entry is used twice.
|
Collection |
take(Collection tmpls,
Transaction txn,
long timeout,
long maxEntries)
This method provides an overload of the
JavaSpace.take method that attempts to
remove, optionally under a Transaction, and return
one or more entries from the space. |
Entry |
take(Entry tmpl,
Transaction txn,
long timeout)
Take a matching entry from the space, waiting until one exists.
|
Entry |
takeIfExists(Entry tmpl,
Transaction txn,
long timeout)
Take a matching entry from the space, returning
null if there is currently is none. |
String |
toString() |
Lease |
write(Entry entry,
Transaction txn,
long lease)
Write a new entry into the space.
|
List |
write(List entries,
Transaction txn,
List leaseDurations)
This method provides an overload of the
JavaSpace.write method that allows new
copies of multiple Entry instances to be stored in
the space using a single call. |
static final long serialVersionUID
final OutriggerServer space
final Uuid spaceUuid
Uuid that identifies the space this proxy is for.
Package protected so it can be read by subclasses and proxy verifierfinal long serverMaxServerQueryTimeout
private transient volatile long maxServerQueryTimeout
private static final long maxServerQueryTimeoutPropertyValue
org.apache.river.outrigger.maxServerQueryTimeout
property in this VM, or a non-positive number if it is not set.private static final Logger logger
SpaceProxy2(OutriggerServer space, Uuid spaceUuid, long serverMaxServerQueryTimeout)
SpaceProxy2 for the given space.space - The OutriggerServer for the
space.spaceUuid - The universally unique ID for the
spaceserverMaxServerQueryTimeout - The value this proxy
should use for the maxServerQueryTimeout
if no local value is provided.NullPointerException - if space or
spaceUuid is null.IllegalArgumentException - if
serverMaxServerQueryTimeout is not
larger than zero.public Uuid getReferentUuid()
ReferentUuidUuid that has been assigned to the
resource this proxy represents.getReferentUuid in interface ReferentUuidUuid associated with the
resource this proxy represents. Will not
return null.private static long getMaxServerQueryTimeoutPropertyValue()
org.apache.river.outrigger.maxServerQueryTimeout.
If it can't be read return -1.private void setMaxServerQueryTimeout()
maxServerQueryTimeout based on the values
of serverMaxServerQueryTimeout and
maxServerQueryTimeoutPropertyValue.private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
maxServerQueryTimeout
field and validate state.IOExceptionClassNotFoundExceptionprivate void readObjectNoData()
throws InvalidObjectException
InvalidObjectExceptionpublic Lease write(Entry entry, Transaction txn, long lease) throws TransactionException, RemoteException
JavaSpacewrite in interface JavaSpaceentry - the entry to writetxn - the transaction object, if any, under which to
perform the writelease - the requested lease time, in millisecondsTransactionException - if a transaction error occursRemoteException - if a communication error occurspublic Entry read(Entry tmpl, Transaction txn, long timeout) throws UnusableEntryException, TransactionException, InterruptedException, RemoteException
JavaSpacenull if the timeout expires.read in interface JavaSpacetmpl - The template used for matching. Matching is
done against tmpl with null
fields being wildcards ("match anything") other
fields being values ("match exactly on the
serialized form").txn - The transaction (if any) under which to work.timeout - How long the client is willing to wait for a
transactionally proper matching entry. A
timeout of NO_WAIT means to wait
no time at all; this is equivalent to a wait
of zero.UnusableEntryException - if any serialized field of the entry
being read cannot be deserialized for any reasonTransactionException - if a transaction error occursInterruptedException - if the thread in which the read
occurs is interruptedRemoteException - if a communication error occurspublic Entry readIfExists(Entry tmpl, Transaction txn, long timeout) throws UnusableEntryException, TransactionException, InterruptedException, RemoteException
JavaSpacenull if there is currently is none. Matching and
timeouts are done as in read, except that blocking
in this call is done only if necessary to wait for transactional
state to settle.readIfExists in interface JavaSpacetmpl - The template used for matching. Matching is
done against tmpl with null
fields being wildcards ("match anything") other
fields being values ("match exactly on the
serialized form").txn - The transaction (if any) under which to work.timeout - How long the client is willing to wait for a
transactionally proper matching entry. A
timeout of NO_WAIT means to wait
no time at all; this is equivalent to a wait
of zero.UnusableEntryException - if any serialized field of the entry
being read cannot be deserialized for any reasonTransactionException - if a transaction error occursInterruptedException - if the thread in which the read
occurs is interruptedRemoteException - if a communication error occursJavaSpace.read(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction, long)public Entry take(Entry tmpl, Transaction txn, long timeout) throws UnusableEntryException, TransactionException, InterruptedException, RemoteException
JavaSpaceread.take in interface JavaSpacetmpl - The template used for matching. Matching is
done against tmpl with null
fields being wildcards ("match anything") other
fields being values ("match exactly on the
serialized form").txn - The transaction (if any) under which to work.timeout - How long the client is willing to wait for a
transactionally proper matching entry. A
timeout of NO_WAIT means to wait
no time at all; this is equivalent to a wait
of zero.UnusableEntryException - if any serialized field of the entry
being read cannot be deserialized for any reasonTransactionException - if a transaction error occursInterruptedException - if the thread in which the take
occurs is interruptedRemoteException - if a communication error occursJavaSpace.read(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction, long)public Entry takeIfExists(Entry tmpl, Transaction txn, long timeout) throws UnusableEntryException, TransactionException, InterruptedException, RemoteException
JavaSpacenull if there is currently is none. Matching is
and timeout done as for read, except that blocking
in this call is done only if necessary to wait for transactional
state to settle.takeIfExists in interface JavaSpacetmpl - The template used for matching. Matching is
done against tmpl with null
fields being wildcards ("match anything") other
fields being values ("match exactly on the
serialized form").txn - The transaction (if any) under which to work.timeout - How long the client is willing to wait for a
transactionally proper matching entry. A
timeout of NO_WAIT means to wait
no time at all; this is equivalent to a wait
of zero.UnusableEntryException - if any serialized field of the entry
being read cannot be deserialized for any reasonTransactionException - if a transaction error occursInterruptedException - if the thread in which the take
occurs is interruptedRemoteException - if a communication error occursJavaSpace.read(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction, long)public Entry snapshot(Entry entry) throws MarshalException
JavaSpaceread or take. The client-side
implementations of read and take cannot
reasonably avoid this duplicated effort, since they have no efficient
way of checking whether the same template is being used without
intervening modification.
The snapshot method gives the JavaSpaces service implementor
a way to reduce the impact of repeated use of the same entry. Invoking
snapshot with an Entry will return another
Entry object that contains a snapshot of the
original entry. Using the returned snapshot entry is equivalent to
using the unmodified original entry in all operations on the same
JavaSpaces service. Modifications to the original entry will not
affect the snapshot. You can snapshot a null
template; snapshot may or may not return null given a
null template.
The entry returned from snapshot will be guaranteed
equivalent to the original unmodified object only when used with
the space. Using the snapshot with any other JavaSpaces service
will generate an IllegalArgumentException unless the
other space can use it because of knowledge about the JavaSpaces
service that generated the snapshot. The snapshot will be a different
object from the original, may or may not have the same hash code,
and equals may or may not return true
when invoked with the original object, even if the original
object is unmodified.
A snapshot is guaranteed to work only within the virtual machine
in which it was generated. If a snapshot is passed to another
virtual machine (for example, in a parameter of an RMI call),
using it--even with the same JavaSpaces service--may generate
an IllegalArgumentException.snapshot in interface JavaSpaceentry - the entry to take a snapshot of.MarshalExceptionpublic EventRegistration notify(Entry tmpl, Transaction txn, RemoteEventListener listener, long lease, MarshalledObject handback) throws TransactionException, RemoteException
JavaSpacelistener with a RemoteEvent that
includes the handback object. Matching is done as
for read.notify in interface JavaSpacetmpl - The template used for matching. Matching is
done against tmpl with null
fields being wildcards ("match anything") other
fields being values ("match exactly on the
serialized form").txn - The transaction (if any) under which to work.listener - The remote event listener to notify.lease - the requested lease time, in millisecondshandback - An object to send to the listener as part of the
event notification.TransactionException - if a transaction error occursRemoteException - if a communication error occursJavaSpace.read(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction, long),
EventRegistrationpublic List write(List entries, Transaction txn, List leaseDurations) throws RemoteException, TransactionException
JavaSpace05JavaSpace.write method that allows new
copies of multiple Entry instances to be stored in
the space using a single call. The client may specify a
Transaction for the operation to be performed
under. Each Entry to be stored in the space
has a separate requested initial lease duration.
The effect on the space of an invocation of this method
successfully storing an Entry is the same as if
the Entry had been successfully stored by a
call to the singleton form of write under
txn with the given requested initial lease
duration. This method returns the proxies to the leases for
each newly stored Entry by returning a List of Lease instances. The i th element
of the returned List will be a proxy for the
lease on the Entry created from the i
th element of entries.
If an invocation of this method returns normally, then a new
copy of each element of entries must have been
stored in the space. A new copy of each element will be
stored even if there are duplicates (either in terms of
object identity or of entry equivalence) in
entries.
The order in which the entries stored by an invocation of this method will become visible in the space is unspecified, and different observers may see the entries become visible in different orders.
If a TransactionException, SecurityException, IllegalArgumentException, or
NullPointerException is thrown, no entries will
have been added to the space by this operation. If a RemoteException is thrown, either new copies of all of the
elements of entries will have been stored or
no entries will have been stored; that is, in the case of a
RemoteException, the storing of new entries in
the space will either fail or succeed as a unit.
write in interface JavaSpace05entries - a List of Entry instances to
be written to the spacetxn - the Transaction this operation should be
performed under, may be nullleaseDurations - a List of
Longs representing the
requested initial lease durationsList of Lease instances, one
for each element of entries, may be
immutable. The space will not keep a reference to
the resultRemoteException - if a communication error occursTransactionException - if txn is
non-null and is not usable by the
spacepublic Collection take(Collection tmpls, Transaction txn, long timeout, long maxEntries) throws UnusableEntriesException, TransactionException, RemoteException
JavaSpace05JavaSpace.take method that attempts to
remove, optionally under a Transaction, and return
one or more entries from the space. Each Entry
taken will match one or more elements of the passed Collection of templates, and all of the taken entries will
be visible to the passed 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 UnusableEntriesException is
thrown. The exception's UnusableEntriesException.getEntries method will return a
Collection with a copy of each
Entry that could be unmarshalled. The UnusableEntriesException.getUnusableEntryExceptions method
will return a Collection with an UnusableEntryException for each Entry that
could 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 RemoteException or TransactionException as
appropriate.
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, SecurityException, IllegalArgumentException, or
NullPointerException is thrown, no entries will
have been taken. If a RemoteException is
thrown, up to maxEntries may have been taken
by this operation.
take in interface JavaSpace05tmpls - a Collection of Entry
instances, each representing a template. All
of the entries taken by an invocation of this
method will match one or more elements of
tmplstxn - the Transaction this operation should be
performed under, may be nulltimeout - if there are initially no available
matches in the space, the maximum number of
milliseconds to block waiting for a match to
become availablemaxEntries - the maximum number of entries that may be
taken by this methodCollection that contains a copy of each
Entry taken from the space by this
method. The space will not keep a reference to
this Collection. May be immutableUnusableEntriesException - if one or more of the
entries taken can't be unmarshalled in the clientTransactionException - if txn is
non-null and is not usable by the
space.RemoteException - if a communication error occurspublic EventRegistration registerForAvailabilityEvent(Collection tmpls, Transaction txn, boolean visibilityOnly, RemoteEventListener listener, long leaseDuration, MarshalledObject handback) throws TransactionException, RemoteException
JavaSpace05Entry
transitions from unavailable to available. The resulting
events will be instances of the AvailabilityEvent
class and the AvailabilityEvent.getEntry method will return a copy of
the Entry whose transition triggered the
event.
An Entry makes a transition from
unavailable to available when it goes from being in
a state where it could not be returned by a JavaSpace.take using txn to a
state where it could be returned. An Entry
makes a transition from invisible to visible when
it goes from being in a state where it could not be returned
by a JavaSpace.read using
txn to a state where it could be
returned. Note, any transition from invisible to visible is
also a transition from unavailable to available, but an
already visible entry can be unavailable and then make a
transition from unavailable to available. Because the entry
was already visible, this transition would not be a
transition from invisible to visible.
The tmpls parameter must be a Collection of Entry instances to be used as
templates. Events will be generated when an
Entry that matches one or more of these
templates makes an appropriate transition. A single
transition will generate only one event per registration, in
particular the transition of an Entry that
matches multiple elements of tmpls must still
generate exactly one event for this registration. If a given
Entry undergoes multiple applicable transitions
while the registration is active, each must generate a
separate event.
Events are not generated directly by the transition of matching entries, but instead by an abstract observer set up in the space for each registration. The observer may see the transitions out of order and as a result the order of the events generated for this registration (as determined by the sequence numbers assigned to the events) may be different from the order of the transitions themselves. Additionally, each registration will have its own abstract observer and different observers may see the same sequence of transitions in different orders. As a result, given a set of transitions that trigger events for two different registrations, the order of the events generated for one registration may differ from the order of the events generated for the other.
A non-null EventRegistration object
will be returned. Each registration will be assigned an
event ID. The event ID will be unique at least with respect
to all other active event registrations for
AvailabilityEvents on this space with a
non-equivalent set of templates, a different transaction,
and/or a different value for the
visibilityOnly flag. The event ID can be
obtained by calling the EventRegistration.getID method on the returned
EventRegistration. The returned
EventRegistration object's EventRegistration.getSource
method will return a reference to the space.
Registrations are leased. leaseDurations
represents the client's desired initial lease duration. If
leaseDuration is positive, the initial lease
duration will be a positive value less than or equal to
leaseDuration. If leaseDuration is
Lease.ANY, the space is free to pick any
positive initial lease duration it desires. A proxy for the
lease associated with the registration can be obtained by
calling the returned EventRegistration's EventRegistration.getLease
method.
A registration made with a non-null value for
txn is implicitly dropped when the space
observes txn has left the active state.
registerForAvailabilityEvent in interface JavaSpace05tmpls - a Collection of Entry
instances, each representing a
template. Events for this registration will be
generated by the transitions of entries
matching one or more elements of
tmplstxn - the Transaction this operation should be
performed under, may be nullvisibilityOnly - if true, events will
be generated for this registration only when a
matching Entry transitions from
invisible to visible, otherwise events will be
generated when a matching Entry
makes any transition from unavailable to
availablelistener - the object to which events generated for
this registration should be deliveredleaseDuration - the requested initial lease time on
the resulting event registrationhandback - the MarshalledObject to be
returned by the RemoteEvent.getRegistrationObject method of
the events generated for this registrationEventRegistration object with
information on this registrationTransactionException - if txn is
non-null and is not usable by the
spaceRemoteException - if a communication error occurspublic MatchSet contents(Collection tmpls, Transaction txn, long leaseDuration, long maxEntries) throws RemoteException, TransactionException
JavaSpace05Transaction and remain visible for the lifetime of the
match set. May also yield additional entries that match but
are only visible for part of the lifetime of the match
set.
The tmpls parameter must be a Collection of Entry instances to be used as
templates. All of the entries placed in the match set will
match one or more of these templates. tmpls may
contain null values and may contain
duplicates. An Entry is said to be
visible to an invocation of this method if the
Entry could have been returned by a singleton
JavaSpace.read using the same
transaction.
The resulting match set must initially contain all of the
visible matching entries in the space. During the lifetime
of the match set an Entry may be, but is not
required to be, added to the match set if it becomes
visible. If the match set becomes empty, no more entries can
be added and the match set enters the exhausted state.
Normally there are three conditions under which an
Entry might be removed from the match set:
Entry yielded by an invocation of the
MatchSet.next method on the match
set (either as the return value of a successful call or
embedded in an UnusableEntryException) must be
removed from the match set.
Entry that remains in the match set
after maxEntries entries are yielded by
next invocations must be removed from the
match set. In such a case, the criteria used to select which
entries are yielded by next calls and which
get removed from the set at the end is unspecified.
Entry that during the lifetime of the
match set becomes invisible may at the discretion of the
implementation be removed from the match set.
An implementation may decide to remove an Entry
from the set for other reasons. If it does so, however, it
must invalidate the set.
If txn is non-null and still
active, any Entry removed from the match set by
a next call must be locked as if it had been
returned by a read operation using txn. An
implementation may establish the read lock on the
Entry any time between when the
Entry is added to the match set and when the
Entry is removed from the match set by an
invocation of next. These read locks are not
released when the match set reaches either the exhausted
state or the invalidated state. If from the space's
perspective the txn leaves the active state,
the space must remove from the match set any entries in the
match set that have not yet been read locked. This may
require the match set to be invalidated.
If the match set is leased and leaseDuration
is positive, the initial duration of the lease must be less
than or equal to leaseDuration. If
leaseDuration is Lease.ANY,
the initial duration of the lease can be any positive value
desired by the implementation.
If there are remote
method constraints associated with an invocation of this
method, any remote communications performed by or on behalf
of the match set's next method will be
performed in compliance with these constraints, not with the
constraints (if any) associated with next.
contents in interface JavaSpace05tmpls - a Collection of Entry
instances, each representing a template. All
the entries added to the resulting match set will
match one or more elements of tmplstxn - the Transaction this operation should be
performed under, may be nullleaseDuration - the requested initial lease time on
the resulting match setmaxEntries - the maximum number of entries to remove
from the set via MatchSet.next
callsRemoteException - if a communication error occursTransactionException - if txn is
non-null and is not usable by the
spaceprotected final Lease newLease(Uuid uuid, long duration)
protected Lease constructLease(Uuid uuid, long expiration)
public Object getAdmin() throws RemoteException
AdministrablegetAdmin in interface AdministrableRemoteExceptionJoinAdminprivate long calcEndTime(long timeout)
timeout - relative timeout of query.Long.MAX_VALUE if timeout plus the current time
is larger than Long.MAX_VALUE.static EntryRep[] repFor(Collection entries, String argName) throws MarshalException
MarshalExceptionstatic EntryRep repFor(Entry entry) throws MarshalException
EntryRep object for the given
Entry.MarshalExceptionstatic Entry entryFrom(EntryRep rep) throws UnusableEntryException
UnusableEntryExceptionprivate void logQuery(String op, long serverTimeout, OutriggerServer.QueryCookie cookie, long remaining)
Copyright 2007-2013, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.