Package org.jcsp.net2.bns
Class BNS
java.lang.Object
org.jcsp.net2.bns.BNS
- All Implemented Interfaces:
CSProcess
This is the main process for the Barrier Name Server. For a more in depth discussion of name servers, see CNS.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final HashMap
Map of barriers registered to a Node; NodeID->private static boolean
Flag used to denote if the connection to the BNS has been initialisedprivate static final BNS
Singleton instance of the BNS.private final HashMap
Map of currently logged clients; NodeID->reply-channelprivate final AltingChannelInput
A channel used to receive incoming link lost notificationsprivate final HashMap
Map of registered barriers; name->locationprivate static BNSService
The internal service.private final HashMap
Map of currently waiting resolves; name->reply-location -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic BNS
Gets the singleton instance of the BNSstatic void
initialise
(NodeAddress bnsNode) Initialises the connection to the BNSstatic void
initialise
(NodeID bnsNode) Initialises the connection to the BNSstatic NetBarrier
netBarrier
(String name, int enrolled) Creates a new client end of a NetBarrierstatic NetBarrier
netBarrier
(String name, int localEnrolled, int netEnrolled) Creates a new server end of a NetBarrier with the given namestatic NetBarrier
numberedNetBarrier
(String name, int index, int localEnrolled, int netEnrolled) Creates a new server end of a NetBarrier with a given index and namevoid
run()
The run method for the BNS process
-
Field Details
-
service
The internal service. This is used by the factory methods. -
initialised
private static boolean initialisedFlag used to denote if the connection to the BNS has been initialised -
instance
Singleton instance of the BNS. Only one may be created on a Node -
registeredBarriers
Map of registered barriers; name->location -
barrierRegister
Map of barriers registered to a Node; NodeID-> -
waitingResolves
Map of currently waiting resolves; name->reply-location -
loggedClients
Map of currently logged clients; NodeID->reply-channel -
lostLink
A channel used to receive incoming link lost notifications
-
-
Constructor Details
-
BNS
private BNS()Private empty constructor
-
-
Method Details
-
getInstance
Gets the singleton instance of the BNS- Returns:
- The singleton instance of the BNS
-
initialise
Initialises the connection to the BNS- Parameters:
bnsNode
- The NodeID of the BNS Node- Throws:
JCSPNetworkException
- Thrown if something goes wrong in the underlying architecture
-
initialise
Initialises the connection to the BNS- Parameters:
bnsNode
- The NodeAddress of the BNS Node- Throws:
JCSPNetworkException
- Thrown if something goes wrong in the underlying architecture
-
run
public void run()The run method for the BNS process -
netBarrier
public static NetBarrier netBarrier(String name, int localEnrolled, int netEnrolled) throws IllegalArgumentException, IllegalStateException Creates a new server end of a NetBarrier with the given name- Parameters:
name
- The name to register with the BNSlocalEnrolled
- The number of locally enrolled processesnetEnrolled
- The number of net enrolled processes to expect- Returns:
- A new NetBarrier server end with the number of enrolled processes
- Throws:
IllegalArgumentException
- Thrown if the parameters are outside the defined rangesIllegalStateException
- Thrown if the BNS connection has not been initialised
-
numberedNetBarrier
public static NetBarrier numberedNetBarrier(String name, int index, int localEnrolled, int netEnrolled) throws IllegalArgumentException, IllegalStateException Creates a new server end of a NetBarrier with a given index and name- Parameters:
name
- Name to register with the BNSindex
- The index to create the NetBarrier withlocalEnrolled
- The number of locally enrolled processesnetEnrolled
- The number of remote enrollments to wait for- Returns:
- A new NetBarrier
- Throws:
IllegalArgumentException
- Thrown if the parameters are outside the defined rangesIllegalStateException
- Thrown if the connection to the BNS has not been initialised
-
netBarrier
public static NetBarrier netBarrier(String name, int enrolled) throws IllegalArgumentException, IllegalStateException, JCSPNetworkException Creates a new client end of a NetBarrier- Parameters:
name
- The name to resolve with the BNSenrolled
- The number of locally enrolled processes- Returns:
- A new NetBarrier client end with the number of enrolled processes
- Throws:
JCSPNetworkException
- Thrown if something goes wrong in the underlying architectureIllegalArgumentException
- Thrown if the number of of local enrolled is outside the defined rangeIllegalStateException
- Thrown if the connection to the BNS has not been initialised
-