org.jgroups.stack

Class Configurator

public class Configurator extends Object

The task if this class is to setup and configure the protocol stack. A string describing the desired setup, which is both the layering and the configuration of each layer, is given to the configurator which creates and configures the protocol stack and returns a reference to the top layer (Protocol).

Future functionality will include the capability to dynamically modify the layering of the protocol stack and the properties of each layer.

Author: Bela Ban

Nested Class Summary
classConfigurator.ProtocolConfiguration
Parses and encapsulates the specification for 1 protocol of the protocol stack, e.g.
Field Summary
protected Loglog
Method Summary
ProtocolcreateProtocol(String prot_spec, ProtocolStack stack)
Creates a new protocol given the protocol specification.
ProtocolfindProtocol(Protocol prot_stack, String name)
ProtocolgetBottommostProtocol(Protocol prot_stack)
voidinsertProtocol(Protocol prot, int position, String neighbor_prot, ProtocolStack stack)
Inserts an already created (and initialized) protocol into the protocol list.
static voidmain(String[] args)
VectorparseComponentStrings(String config_str, String delimiter)
Get a string of the form "P1(config_str1):P2:P3(config_str3)" and return ProtocolConfigurations for it.
VectorparseConfigurations(String configuration)
Return a number of ProtocolConfigurations in a vector
voidremoveProtocol(String prot_name)
Removes a protocol from the stack.
voidsanityCheck(Vector protocols)
Throws an exception if sanity check fails.
ProtocolsetupProtocolStack(String configuration, ProtocolStack st)
The configuration string has a number of entries, separated by a ':' (colon).
voidstartProtocolStack(Protocol bottom_prot)
voidstopProtocolStack(Protocol start_prot)

Field Detail

log

protected final Log log

Method Detail

createProtocol

public Protocol createProtocol(String prot_spec, ProtocolStack stack)
Creates a new protocol given the protocol specification. Initializes the properties and starts the up and down handler threads.

Parameters: prot_spec The specification of the protocol. Same convention as for specifying a protocol stack. An exception will be thrown if the class cannot be created. Example:

"VERIFY_SUSPECT(timeout=1500)"
Note that no colons (:) have to be specified stack The protocol stack

Returns: Protocol The newly created protocol

Throws: Exception Will be thrown when the new protocol cannot be created

findProtocol

public Protocol findProtocol(Protocol prot_stack, String name)

getBottommostProtocol

public Protocol getBottommostProtocol(Protocol prot_stack)

insertProtocol

public void insertProtocol(Protocol prot, int position, String neighbor_prot, ProtocolStack stack)
Inserts an already created (and initialized) protocol into the protocol list. Sets the links to the protocols above and below correctly and adjusts the linked list of protocols accordingly.

Parameters: prot The protocol to be inserted. Before insertion, a sanity check will ensure that none of the existing protocols have the same name as the new protocol. position Where to place the protocol with respect to the neighbor_prot (ABOVE, BELOW) neighbor_prot The name of the neighbor protocol. An exception will be thrown if this name is not found stack The protocol stack

Throws: Exception Will be thrown when the new protocol cannot be created, or inserted.

main

public static void main(String[] args)

parseComponentStrings

public Vector parseComponentStrings(String config_str, String delimiter)
Get a string of the form "P1(config_str1):P2:P3(config_str3)" and return ProtocolConfigurations for it. That means, parse "P1(config_str1)", "P2" and "P3(config_str3)"

Parameters: config_str Configuration string

Returns: Vector of ProtocolConfigurations

parseConfigurations

public Vector parseConfigurations(String configuration)
Return a number of ProtocolConfigurations in a vector

Parameters: configuration protocol-stack configuration string

Returns: Vector of ProtocolConfigurations

removeProtocol

public void removeProtocol(String prot_name)
Removes a protocol from the stack. Stops the protocol and readjusts the linked lists of protocols.

Parameters: prot_name The name of the protocol. Since all protocol names in a stack have to be unique (otherwise the stack won't be created), the name refers to just 1 protocol.

Throws: Exception Thrown if the protocol cannot be stopped correctly.

sanityCheck

public void sanityCheck(Vector protocols)
Throws an exception if sanity check fails. Possible sanity check is uniqueness of all protocol names.

setupProtocolStack

public Protocol setupProtocolStack(String configuration, ProtocolStack st)
The configuration string has a number of entries, separated by a ':' (colon). Each entry consists of the name of the protocol, followed by an optional configuration of that protocol. The configuration is enclosed in parentheses, and contains entries which are name/value pairs connected with an assignment sign (=) and separated by a semicolon.
UDP(in_port=5555;out_port=4445):FRAG(frag_size=1024)

The first entry defines the bottommost layer, the string is parsed left to right and the protocol stack constructed bottom up. Example: the string "UDP(in_port=5555):FRAG(frag_size=32000):DEBUG" results is the following stack:


   -----------------------
  | DEBUG                 |
  |-----------------------|
  | FRAG frag_size=32000  |
  |-----------------------|
  | UDP in_port=32000     |
   -----------------------
 

startProtocolStack

public void startProtocolStack(Protocol bottom_prot)

stopProtocolStack

public void stopProtocolStack(Protocol start_prot)
Copyright ? 1998-2005 Bela Ban. All Rights Reserved.