class RegistrarProxy extends Object implements ServiceRegistrar, Administrable, ReferentUuid, Serializable
Modifier and Type | Field and Description |
---|---|
private static Logger |
logger |
(package private) ServiceID |
registrarID
The registrar's service ID.
|
private static long |
serialVersionUID |
(package private) Registrar |
server
The registrar.
|
TRANSITION_MATCH_MATCH, TRANSITION_MATCH_NOMATCH, TRANSITION_NOMATCH_MATCH
Constructor and Description |
---|
RegistrarProxy(Registrar server,
ServiceID registrarID)
Constructor for use by getInstance(), ConstrainableRegistrarProxy.
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object obj)
Proxies for servers with the same service ID are considered equal.
|
Object |
getAdmin()
Returns an object that implements whatever administration interfaces
are appropriate for the particular service.
|
Class[] |
getEntryClasses(ServiceTemplate tmpl)
Looks at all service items that match the specified template, finds
every entry (among those service items) that either doesn't match any
entry templates or is a subclass of at least one matching entry
template, and returns the set of the (most specific) classes of those
entries.
|
Object[] |
getFieldValues(ServiceTemplate tmpl,
int setIndex,
String field)
Looks at all service items that match the specified template, finds
every entry (among those service items) that matches
tmpl.attributeSetTemplates[setIndex], and returns the set of values
of the specified field of those entries.
|
String[] |
getGroups()
Returns the set of groups that this lookup service is currently a
member of.
|
(package private) static RegistrarProxy |
getInstance(Registrar server,
ServiceID registrarID)
Returns RegistrarProxy or ConstrainableRegistrarProxy instance,
depending on whether given server implements RemoteMethodControl.
|
LookupLocator |
getLocator()
Returns a LookupLocator that can be used if necessary for unicast
discovery of the lookup service.
|
Uuid |
getReferentUuid()
Return the
Uuid that has been assigned to the
resource this proxy represents. |
ServiceID |
getServiceID()
Returns the service ID of the lookup service.
|
Class[] |
getServiceTypes(ServiceTemplate tmpl,
String prefix)
Looks at all service items that match the specified template, and for
every service item finds the most specific type (class or interface)
or types the service item is an instance of that are neither equal to,
nor a superclass of, any of the service types in the template and that
have names that start with the specified prefix, and returns the set
of all such types.
|
(package private) static void |
handleException(Throwable e)
Rethrow the exception if it is an Error, unless it is a LinkageError,
OutOfMemoryError, or StackOverflowError.
|
int |
hashCode() |
Object |
lookup(ServiceTemplate tmpl)
Returns the service object (i.e., just ServiceItem.service) from an
item matching the template, or null if there is no match.
|
ServiceMatches |
lookup(ServiceTemplate tmpl,
int maxMatches)
Returns at most maxMatches items matching the template, plus the total
number of items that match the template.
|
EventRegistration |
notify(ServiceTemplate tmpl,
int transitions,
RemoteEventListener listener,
MarshalledObject handback,
long leaseDuration)
Registers for event notification.
|
private void |
readObject(ObjectInputStream in)
Reads the default serializable field value for this instance, followed
by the registrar's service ID encoded as specified by the
ServiceID.writeBytes method.
|
private void |
readObjectNoData()
Throws InvalidObjectException, since data for this class is required.
|
ServiceRegistration |
register(ServiceItem srvItem,
long leaseDuration)
Register a new service or re-register an existing service.
|
String |
toString()
Returns a string created from the proxy class name, the registrar's
service ID, and the result of the underlying proxy's toString method.
|
private void |
writeObject(ObjectOutputStream out)
Writes the default serializable field value for this instance, followed
by the registrar's service ID encoded as specified by the
ServiceID.writeBytes method.
|
private static final long serialVersionUID
private static final Logger logger
final Registrar server
transient ServiceID registrarID
static RegistrarProxy getInstance(Registrar server, ServiceID registrarID)
public Object getAdmin() throws RemoteException
Administrable
getAdmin
in interface Administrable
RemoteException
JoinAdmin
public ServiceRegistration register(ServiceItem srvItem, long leaseDuration) throws RemoteException
ServiceRegistrar
To register a new service, item.serviceID should be null. In that case, if item.service does not equal (using MarshalledObject.equals) any existing item's service object, then a new service ID will be assigned and included in the returned ServiceRegistration. The service ID is unique over time and space with respect to all other service IDs generated by all lookup services. If item.service does equal an existing item's service object, the existing item is first deleted from the lookup service (even if it has different attributes) and its lease is cancelled, but that item's service ID is reused for the newly registered item.
To re-register an existing service, or to register the service in any other lookup service, item.serviceID should be set to the same service ID that was returned by the initial registration. If an item is already registered under the same service ID, the existing item is first deleted (even if it has different attributes or a different service instance) and its lease is cancelled. Note that service object equality is not checked in this case, to allow for reasonable evolution of the service (e.g., the serialized form of the stub changes, or the service implements a new interface).
Any duplicate attribute sets included in a service item are eliminated in the stored representation of the item. The lease duration request is not exact; the returned lease is allowed to have a shorter (but not longer) duration than what was requested. The registration is persistent across restarts (crashes) of the lookup service until the lease expires or is cancelled.
register
in interface ServiceRegistrar
srvItem
- service item to registerleaseDuration
- requested lease duration, in millisecondsRemoteException
public Object lookup(ServiceTemplate tmpl) throws RemoteException
ServiceRegistrar
lookup
in interface ServiceRegistrar
tmpl
- template to matchRemoteException
public ServiceMatches lookup(ServiceTemplate tmpl, int maxMatches) throws RemoteException
ServiceRegistrar
lookup
in interface ServiceRegistrar
tmpl
- template to matchmaxMatches
- maximum number of matches to returnRemoteException
public EventRegistration notify(ServiceTemplate tmpl, int transitions, RemoteEventListener listener, MarshalledObject handback, long leaseDuration) throws RemoteException
ServiceRegistrar
While the event registration is in effect, a ServiceEvent is sent to the specified listener whenever a register, lease cancellation or expiration, or attribute change operation results in an item changing state in a way that satisfies the template and transition combination.
notify
in interface ServiceRegistrar
tmpl
- template to matchtransitions
- bitwise OR of any non-empty set of transition valueslistener
- listener to send events tohandback
- object to include in every ServiceEvent generatedleaseDuration
- requested lease durationRemoteException
public Class[] getEntryClasses(ServiceTemplate tmpl) throws RemoteException
ServiceRegistrar
getEntryClasses
in interface ServiceRegistrar
tmpl
- template to matchRemoteException
public Object[] getFieldValues(ServiceTemplate tmpl, int setIndex, String field) throws NoSuchFieldException, RemoteException
ServiceRegistrar
getFieldValues
in interface ServiceRegistrar
tmpl
- template to matchsetIndex
- index into tmpl.attributeSetTemplatesfield
- name of field of tmpl.attributeSetTemplates[setIndex]NoSuchFieldException
- field does not name a field of the
entry templateRemoteException
static void handleException(Throwable e)
public Class[] getServiceTypes(ServiceTemplate tmpl, String prefix) throws RemoteException
ServiceRegistrar
getServiceTypes
in interface ServiceRegistrar
tmpl
- template to matchprefix
- class name prefixRemoteException
public ServiceID getServiceID()
ServiceRegistrar
getServiceID
in interface ServiceRegistrar
public LookupLocator getLocator() throws RemoteException
ServiceRegistrar
getLocator
in interface ServiceRegistrar
RemoteException
public String[] getGroups() throws RemoteException
ServiceRegistrar
getGroups
in interface ServiceRegistrar
RemoteException
public Uuid getReferentUuid()
ReferentUuid
Uuid
that has been assigned to the
resource this proxy represents.getReferentUuid
in interface ReferentUuid
Uuid
associated with the
resource this proxy represents. Will not
return null
.public boolean equals(Object obj)
public String toString()
private void writeObject(ObjectOutputStream out) throws IOException
IOException
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
IOException
ClassNotFoundException
private void readObjectNoData() throws ObjectStreamException
ObjectStreamException
Copyright 2007-2013, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.