|
JXTA | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.jxta.impl.peergroup.GenericPeerGroup
public abstract class GenericPeerGroup
Provides common services for most peer group implementations.
Nested Class Summary | |
---|---|
(package private) static class |
GenericPeerGroup.PeerGroupThreadFactory
Our thread factory that adds the threads to our thread group and names the thread to something recognizable. |
Nested classes/interfaces inherited from interface net.jxta.peergroup.PeerGroup |
---|
PeerGroup.GlobalRegistry |
Field Summary | |
---|---|
protected ConfigParams |
configAdvertisement
This peer's config advertisement. |
protected ModuleImplAdvertisement |
implAdvertisement
This group's implAdvertisement. |
protected boolean |
initComplete
Is set to true when init() is completed enough that it
makes sense to perform ref-counting. |
protected URI |
jxtaHome
The location of our store |
protected PeerGroup |
parentGroup
This service implements a group but, being a Service, it runs inside of some group. |
Fields inherited from interface net.jxta.platform.Module |
---|
START_AGAIN_PROGRESS, START_AGAIN_STALLED, START_DISABLED, START_OK |
Constructor Summary | |
---|---|
GenericPeerGroup()
|
Method Summary | |
---|---|
protected void |
addService(ModuleClassID mcid,
Service service)
Add a service to the collection of known services. |
protected void |
checkServices()
check that all required core services are registered |
protected void |
decRefCount()
Called every time an interface object that refers to this group goes away, either by being finalized or by its unref() method being invoked explicitly. |
boolean |
equals(Object target)
|
AccessService |
getAccessService()
Return the Access Service for this Peer Group. |
ConfigParams |
getConfigAdvertisement()
Returns the config advertisement for this peer in this group (if any). |
DiscoveryService |
getDiscoveryService()
Return the Discovery Service for this Peer Group. |
EndpointService |
getEndpointService()
Return the Endpoint Service for this Peer Group. |
Executor |
getExecutor()
Returns the executor pool |
ThreadGroup |
getHomeThreadGroup()
Returns the Thread Group in which threads for this peer group will live. |
ModuleImplAdvertisement |
getImplAdvertisement()
Returns the advertisement for this service. |
Service |
getInterface()
Service objects are not manipulated directly to protect usage of the service. |
static JxtaLoader |
getJxtaLoader()
|
JxtaLoader |
getLoader()
Returns the class loader for this group. |
MembershipService |
getMembershipService()
Return the Membership Service for this Peer Group. |
PeerGroup |
getParentGroup()
Returns the parent group of this group. |
PeerAdvertisement |
getPeerAdvertisement()
Return the PeerAdvertisement of the local Peer within this Peer Group. |
PeerGroupAdvertisement |
getPeerGroupAdvertisement()
Return the PeerGroupAdvertisement for this group. |
PeerGroupID |
getPeerGroupID()
Return the Peer Group ID of this Peer Group. |
String |
getPeerGroupName()
Return the Name of this group. |
PeerID |
getPeerID()
Return the Peer ID by which this Peer is known within this Peer Group. |
PeerInfoService |
getPeerInfoService()
Return the PeerInfo Service for this Peer Group. |
String |
getPeerName()
Return the name of the local peer within this group. |
PipeService |
getPipeService()
Return the Pipe Service for this Peer Group. |
RendezVousService |
getRendezVousService()
Return the Rendezvous Service for this Peer Group. |
ResolverService |
getResolverService()
Return the Resolver Service for this Peer Group. |
Iterator |
getRoleMap(ID name)
Returns the map of the assigned IDs currently associated with the given ModuleClassID by this PeerGroup object. |
ScheduledExecutorService |
getScheduledExecutor()
Returns the scheduled executor. |
URI |
getStoreHome()
Returns the location of the parent of all items that this peer group is using for persistently storing its preferences, cache, persistent store, properties, etc. |
PeerGroup |
getWeakInterface()
Returns a weak interface object that represents this group. |
int |
hashCode()
|
void |
init(PeerGroup homeGroup,
ID assignedID,
Advertisement impl)
Initialize the module, passing it its peer group and advertisement. |
protected void |
initFirst(PeerGroup homeGroup,
ID assignedID,
Advertisement impl)
Performs all initialization steps that need to be performed before any subclass initialization is performed. |
protected void |
initLast()
Perform all initialization steps that need to be performed after any subclass initialization is performed. |
boolean |
isRendezvous()
Returns the whether the group member is a Rendezvous peer for the group. |
Module |
loadModule(ID assigned,
Advertisement impl)
Load a Module from a ModuleImplAdv. |
protected Module |
loadModule(ID assigned,
ModuleImplAdvertisement implAdv,
boolean privileged)
Load a Module from a ModuleImplAdv. |
Module |
loadModule(ID assigned,
ModuleSpecID specID,
int where)
Load a module from a ModuleSpecID Advertisement is sought, compatibility is checked on all candidates and load is attempted. |
protected Module |
loadModule(ID assignedID,
ModuleSpecID specID,
int where,
boolean privileged)
Load a module from a ModuleSpecID Advertisement is sought, compatibility is checked on all candidates and load is attempted. |
Service |
lookupService(ID mcid)
Lookup for a service by name. |
Service |
lookupService(ID mcid,
int roleIndex)
Lookup for a service by class ID and index in a map. |
PeerGroup |
newGroup(Advertisement pgAdv)
Instantiate a peer group from the provided advertisement. |
PeerGroup |
newGroup(PeerGroupID gid)
Instantiate a group from its Peer Group ID only. |
PeerGroup |
newGroup(PeerGroupID gid,
Advertisement impl,
String name,
String description)
Instantiates a peer group from its elementary pieces and publishes the corresponding PeerGroupAdvertisement. |
void |
publishGroup(String name,
String description)
Publish this group's Peer Group Advertisement. |
protected void |
removeService(ModuleClassID mcid)
Ask a group to unregister and unload a service |
protected void |
setConfigAdvertisement(ConfigParams config)
Sets the configuration advertisement for this peer group. |
static void |
setGroupConfigAdvertisement(ID groupid,
ConfigParams params)
Adds configuration parameters for the specified group. |
protected void |
setStoreHome(URI newHome)
Sets the root location for the store to be used by this peergroup. |
int |
startApp(String[] arg)
Complete any remaining initialization of the module. |
void |
stopApp()
Stop a module. |
String |
toString()
An implementation suitable for debugging. |
void |
unref()
Explicitly notifies a group interface that it will no-longer be used (similar to dispose). |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Methods inherited from interface net.jxta.peergroup.PeerGroup |
---|
compatible, getAllPurposePeerGroupImplAdvertisement |
Field Detail |
---|
protected ModuleImplAdvertisement implAdvertisement
protected ConfigParams configAdvertisement
protected PeerGroup parentGroup
protected URI jxtaHome
protected volatile boolean initComplete
true
when init()
is completed enough that it
makes sense to perform ref-counting.
Constructor Detail |
---|
public GenericPeerGroup()
Method Detail |
---|
public PeerGroup getParentGroup()
getParentGroup
in interface PeerGroup
null
if a parent group
if not available.public URI getStoreHome()
null
if the peergroup has no defined
location for storing persistent data.
getStoreHome
in interface PeerGroup
protected void setStoreHome(URI newHome)
newHome
- The new store location.public static JxtaLoader getJxtaLoader()
public boolean equals(Object target)
equals
in class Object
public int hashCode()
hashCode
in class Object
public String toString()
toString
in class Object
public ThreadGroup getHomeThreadGroup()
getHomeThreadGroup
in interface PeerGroup
protected void addService(ModuleClassID mcid, Service service)
mcid
- The Module Class ID of the service.service
- The service instance to set as the shortcut orpublic Service lookupService(ID mcid) throws ServiceNotFoundException
lookupService
in interface PeerGroup
mcid
- the service identifier.
ServiceNotFoundException
- could not find the service requestedpublic Service lookupService(ID mcid, int roleIndex) throws ServiceNotFoundException
lookupService
in interface PeerGroup
mcid
- the service identifierroleIndex
- the index in the list of assigned IDs that match
that identifier.
ServiceNotFoundException
- Could not find the service requested.public Iterator getRoleMap(ID name)
getRoleMap
in interface PeerGroup
name
- The ModuleClassID for which the map is desired.
protected void checkServices() throws ServiceNotFoundException
ServiceNotFoundException
- If a required service was not found.protected void removeService(ModuleClassID mcid) throws ServiceNotFoundException
mcid
- The service to be removed.
ServiceNotFoundException
- if service is not foundpublic Module loadModule(ID assigned, Advertisement impl) throws ProtocolNotSupportedException, PeerGroupException
loadModule
in interface PeerGroup
assigned
- Id to be assigned to that module (usually its ClassID).impl
- An implementation advertisement for that module.
ProtocolNotSupportedException
- The implementation described by the
advertisement is incompatible with this peer. The module cannot be loaded.
PeerGroupException
- The module could not be loaded or initializedprotected Module loadModule(ID assigned, ModuleImplAdvertisement implAdv, boolean privileged) throws ProtocolNotSupportedException, PeerGroupException
assigned
- Id to be assigned to that module (usually its ClassID).implAdv
- An implementation advertisement for that module.privileged
- If true
then the module is provided the true
group obj instead of just an interface to the group object. This is
normally used only for the group's defined services and applications.
ProtocolNotSupportedException
- The module is incompatible.
PeerGroupException
- The module could not be loaded or initializedpublic Module loadModule(ID assigned, ModuleSpecID specID, int where)
loadModule
in interface PeerGroup
assigned
- Id to be assigned to that module (usually its ClassID).specID
- The specID of this module.where
- May be one of: Here
, FromParent
, or
Both
, meaning that the implementation advertisement will be
searched in this group, its parent or both. As a general guideline, the
implementation advertisements of a group should be searched in its
prospective parent (that is Here
), the implementation
advertisements of a group standard service should be searched in the same
group than where this group's advertisement was found (that is,
FromParent
), while applications may be sought more freely
(Both
).
protected Module loadModule(ID assignedID, ModuleSpecID specID, int where, boolean privileged)
assignedID
- Id to be assigned to that module (usually its ClassID).specID
- The specID of this module.where
- May be one of: Here
, FromParent
, or
Both
, meaning that the implementation advertisement will be
searched in this group, its parent or both. As a general guideline, the
implementation advertisements of a group should be searched in its
prospective parent (that is Here), the implementation advertisements of a
group standard service should be searched in the same group than where
this group's advertisement was found (that is, FromParent), while
applications may be sought more freely (Both).privileged
- If true
then the module is provided the true
group obj instead of just an interface to the group object. This is
normally used only for the group's defined services and applications.
null
if no usable implementation was found.public ConfigParams getConfigAdvertisement()
getConfigAdvertisement
in interface PeerGroup
null
if none is available.protected void setConfigAdvertisement(ConfigParams config)
config
- The configuration advertisement which will be used for
this peer group or null
if no configuration advertisement is to
be used.public static void setGroupConfigAdvertisement(ID groupid, ConfigParams params)
groupid
- The group for who's params are being provided.params
- The parameters to be provided to the peer group when it is
created.public void init(PeerGroup homeGroup, ID assignedID, Advertisement impl) throws PeerGroupException
initFirst(PeerGroup,ID,Advertisement)
and initLast()
.
If this method is to be overloaded, the overloading method must
invoke super.init
.
This method invokes initFirst
with identical parameters. initLast does not take
parameters since the relevant information can be obtained from the
group following completion of the initFirst
phase.
The resulting values may be different from the parameters to
initFirst
since initFirst
may
be overLoaded and the overloading method may modify these parameters
when calling super.initFirst
. (See
Platform
for an example of such a case).
Upon completion, the group object is marked as completely initialized
in all cases. Once a group object is completely initialized, it becomes
sensitive to reference counting.
In the future this method may become final.
- Specified by:
init
in interface Module
- Parameters:
homeGroup
- The PeerGroup from which this Module can obtain services.
If this module is a Service, this is also the PeerGroup of which this
module is a service.assignedID
- Identity of Module within group.
modules can use it as a the root of their namespace to create
names that are unique within the group but predictable by the
same module on another peer. This is normally the ModuleClassID
which is also the name under which the module is known by other
modules. For a group it is the PeerGroupID itself.
The parameters of a service, in the Peer configuration, are indexed
by the assignedID of that service, and a Service must publish its
run-time parameters in the Peer Advertisement under its assigned ID.impl
- The implementation advertisement for this
Module. It is permissible to pass null if no implementation
advertisement is available. This may happen if the
implementation was selected by explicit class name rather than
by following an implementation advertisement. Modules are not
required to support that style of loading, but if they do, then
their documentation should mention it.
- Throws:
PeerGroupException
- This module failed to initialize.
protected void initFirst(PeerGroup homeGroup, ID assignedID, Advertisement impl) throws PeerGroupException
super.initFirst()
before doing
any of their own work.
homeGroup
- The group that serves as a parent to this group.assignedID
- The unique ID assigned to this module. For
group this is the group ID or null
if a group ID
has not yet been assigned. If null is passed, GenericPeerGroup
will generate a new group ID.impl
- The ModuleImplAdvertisement which defines this
group's implementation.
PeerGroupException
- if a group initialization error occursprotected void initLast() throws PeerGroupException
PeerGroupException
- if a group initialization error occurspublic int startApp(String[] arg)
startApp()
is completed. That is
also the opportunity to supply arbitrary arguments (mostly to
applications).
If this module is a PeerGroup
service, it may be invoked
several times depending on its return value.
startApp
in interface Module
arg
- An array of Strings forming the parameters for this
Module.
Module.START_OK
, Module.START_AGAIN_PROGRESS
,
Module.START_AGAIN_STALLED
, which indicates partial or complete
success, or any other value (negative values are
recommended for future compatibility), which indicates failure.public void stopApp()
init()
completes and should not assume that startApp()
has been
called or completed.
The Module cannot be forced to comply, but in the future
we might be able to deny it access to anything after some timeout.
PeerGroupInterface's stopApp() does nothing. Only a real reference to the
group object permits to stop it without going through ref counting.
stopApp
in interface Module
public void unref()
unref
in interface PeerGroup
protected void decRefCount()
public Service getInterface()
getInterface
in interface Service
public PeerGroup getWeakInterface()
getWeakInterface
in interface PeerGroup
public ModuleImplAdvertisement getImplAdvertisement()
getImplAdvertisement
in interface Service
ModuleImplAdvertisement
.public void publishGroup(String name, String description) throws IOException
publishGroup
in interface PeerGroup
name
- The name of this group.description
- The description of this group.
IOException
- The publication could not be accomplished
because of a network or storage failure.public PeerGroup newGroup(Advertisement pgAdv) throws PeerGroupException
newGroup
in interface PeerGroup
pgAdv
- The advertisement for the group to be instantiated.
PeerGroupException
- For problems instantiating the peer group.public PeerGroup newGroup(PeerGroupID gid, Advertisement impl, String name, String description) throws PeerGroupException
newGrp = thisGroup.loadModule(gid, impl); newGrp.publishGroup(name, description);or, but only if the implementation advertisement has been published:
newPGAdv = AdvertisementFactory.newAdvertisement( PeerGroupAdvertisement.getAdvertisementType()); newPGAdv.setPeerGroupID(gid); newPGAdv.setModuleSpecID(impl.getModuleSpecID()); newPGAdv.setName(name); newPGAdv.setDescription(description); newGrp = thisGroup.newGroup(newPGAdv);
newGroup
in interface PeerGroup
gid
- The ID of that group. If null
then a new group ID
will be chosen.impl
- The advertisement of the implementation to be used.name
- The name of the group.description
- A description of this group.
PeerGroupException
- Thrown if the group could not be instantiated.public PeerGroup newGroup(PeerGroupID gid) throws PeerGroupException
PeerGroup.loadModule(ID,Advertisement)
or even:
grp = new GroupSubClass();
grp.init(parentGroup, gid, impladv);
then, REMEMBER TO PUBLISH THE GROUP IF IT IS ALL NEW.
newGroup
in interface PeerGroup
gid
- the groupID.
PeerGroupException
- Thrown if the group could not be instantiated.public JxtaLoader getLoader()
getLoader
in interface PeerGroup
public String getPeerName()
getPeerName
in interface PeerGroup
null
if no name was
specified.public String getPeerGroupName()
getPeerGroupName
in interface PeerGroup
null
if no name was
specified.public PeerGroupID getPeerGroupID()
getPeerGroupID
in interface PeerGroup
public PeerID getPeerID()
getPeerID
in interface PeerGroup
public PeerAdvertisement getPeerAdvertisement()
getPeerAdvertisement
in interface PeerGroup
public PeerGroupAdvertisement getPeerGroupAdvertisement()
getPeerGroupAdvertisement
in interface PeerGroup
public boolean isRendezvous()
isRendezvous
in interface PeerGroup
public EndpointService getEndpointService()
getEndpointService
in interface PeerGroup
public ResolverService getResolverService()
getResolverService
in interface PeerGroup
public DiscoveryService getDiscoveryService()
getDiscoveryService
in interface PeerGroup
null
if there is no PeerInfo Service in this Peer Group.public PeerInfoService getPeerInfoService()
getPeerInfoService
in interface PeerGroup
null
if there is no PeerInfo Service in this Peer Group.public MembershipService getMembershipService()
getMembershipService
in interface PeerGroup
public PipeService getPipeService()
getPipeService
in interface PeerGroup
null
if
there is no Pipe Service in this Peer Group.public RendezVousService getRendezVousService()
getRendezVousService
in interface PeerGroup
null
if there is no Rendezvous Service in this Peer Group.public AccessService getAccessService()
getAccessService
in interface PeerGroup
public Executor getExecutor()
public ScheduledExecutorService getScheduledExecutor()
|
JXSE | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |