| 
 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.jgroups.stack.Protocol
org.jgroups.stack.ProtocolStack
public class ProtocolStack
A ProtocolStack manages a number of protocols layered above each other. It creates all protocol classes, initializes them and, when ready, starts all of them, beginning with the bottom most protocol. It also dispatches messages received from the stack to registered objects (e.g. channel, GMP) and sends messages sent by those objects down the stack.
The ProtocolStack makes use of the Configurator to setup and initialize stacks, and to destroy them again when not needed anymore
| Nested Class Summary | |
|---|---|
| static class | ProtocolStack.RefCounterKeeps track of the number os times init()/destroy() and start()/stop have been called. | 
| Field Summary | |
|---|---|
| static int | ABOVE | 
| static int | BELOW | 
| Fields inherited from class org.jgroups.stack.Protocol | 
|---|
| down_prot, ergonomics, id, log, name, stack, stats, up_prot | 
| Constructor Summary | |
|---|---|
| ProtocolStack()Used for programmatic creation of ProtocolStack | |
| ProtocolStack(JChannel channel) | |
| Method Summary | |
|---|---|
|  ProtocolStack | addProtocol(Protocol prot)Adds a protocol at the tail of the protocol list | 
|  ProtocolStack | addProtocols(java.util.List<Protocol> prots)Adds a list of protocols | 
|  ProtocolStack | addProtocols(Protocol... prots)Adds a list of protocols | 
|  java.util.List<Protocol> | copyProtocols(ProtocolStack targetStack) | 
| protected  Protocol | createProtocol(java.lang.String classname) | 
|  void | destroy()This method is called on a Channel.close(). | 
|  java.lang.Object | down(Event evt)An event is to be sent down the stack. | 
|  java.util.Map<java.lang.String,java.lang.Object> | dumpStats() | 
|  java.util.Map<java.lang.String,java.lang.Object> | dumpStats(java.lang.String protocol_name) | 
|  java.util.Map<java.lang.String,java.lang.Object> | dumpStats(java.lang.String protocol_name,
          java.util.List<java.lang.String> attrs) | 
|  Protocol | findProtocol(java.lang.Class<?>... classes)Finds the first protocol of a list and returns it. | 
|  Protocol | findProtocol(java.lang.Class<?> clazz) | 
|  Protocol | findProtocol(java.lang.String name)Returns a given protocol or null if not found | 
|  Protocol | getBottomProtocol() | 
|  JChannel | getChannel() | 
|  java.lang.String | getName() | 
|  java.util.List<Protocol> | getProtocols()Returns all protocols in a list, from top to bottom. | 
| static java.util.concurrent.ConcurrentMap<java.lang.String,Tuple<TP,ProtocolStack.RefCounter>> | getSingletonTransports() | 
|  Protocol | getTopProtocol() | 
|  TP | getTransport()Returns the bottom most protocol | 
|  void | init()Called after instance has been created (null constructor) and before protocol is started. | 
|  void | initProtocolStack() | 
|  void | insertProtocol(Protocol prot,
               int position,
               java.lang.Class<? extends Protocol>... neighbor_prots) | 
|  void | insertProtocol(Protocol prot,
               int position,
               java.lang.Class<? extends Protocol> neighbor_prot) | 
|  void | insertProtocol(Protocol prot,
               int position,
               java.lang.String neighbor_prot)Inserts an already created (and initialized) protocol into the protocol list. | 
|  void | insertProtocolAtTop(Protocol prot) | 
|  void | insertProtocolInStack(Protocol prot,
                      Protocol neighbor,
                      int position) | 
|  java.lang.String | printProtocolSpec(boolean include_properties)Prints the names of the protocols, from the bottom to top. | 
|  java.lang.String | printProtocolSpecAsPlainString() | 
|  java.lang.String | printProtocolSpecAsXML() | 
|  Protocol | removeProtocol(java.lang.Class... protocols) | 
|  Protocol | removeProtocol(java.lang.Class prot) | 
|  Protocol | removeProtocol(java.lang.String prot_name)Removes a protocol from the stack. | 
|  void | removeProtocols(java.lang.String... protocols) | 
|  void | replaceProtocol(Protocol existing_prot,
                Protocol new_prot)Replaces one protocol instance with another. | 
|  void | setChannel(JChannel ch) | 
|  void | setup(java.util.List<ProtocolConfiguration> configs) | 
|  void | setup(ProtocolStack stack) | 
|  void | startStack(java.lang.String cluster_name,
           Address local_addr)Start all layers. | 
|  void | stopStack(java.lang.String cluster_name)Iterates through all the protocols from top to bottom and does the following: Waits until all messages in the down queue have been flushed (ie., size is 0) Calls stop() on the protocol | 
|  java.lang.Object | up(Event evt)An event was received from the layer below. | 
| Methods inherited from class org.jgroups.stack.Protocol | 
|---|
| enableStats, getConfigurableObjects, getDownProtocol, getDownServices, getId, getIdsAbove, getLevel, getProtocolStack, getSocketFactory, getThreadFactory, getUpProtocol, getUpServices, getValue, isErgonomics, printStats, providedDownServices, providedUpServices, requiredDownServices, requiredUpServices, resetStatistics, resetStats, setDownProtocol, setErgonomics, setId, setLevel, setProtocolStack, setSocketFactory, setUpProtocol, setValue, setValues, start, statsEnabled, stop | 
| Methods inherited from class java.lang.Object | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Field Detail | 
|---|
public static final int ABOVE
public static final int BELOW
| Constructor Detail | 
|---|
public ProtocolStack(JChannel channel)
              throws java.lang.Exception
java.lang.Exceptionpublic ProtocolStack()
| Method Detail | 
|---|
public JChannel getChannel()
public void setChannel(JChannel ch)
public java.util.List<Protocol> getProtocols()
public java.util.List<Protocol> copyProtocols(ProtocolStack targetStack)
                                       throws java.lang.IllegalAccessException,
                                              java.lang.InstantiationException
java.lang.IllegalAccessException
java.lang.InstantiationExceptionpublic TP getTransport()
getTransport in class Protocolpublic static java.util.concurrent.ConcurrentMap<java.lang.String,Tuple<TP,ProtocolStack.RefCounter>> getSingletonTransports()
public java.util.Map<java.lang.String,java.lang.Object> dumpStats()
dumpStats in class Protocolpublic java.util.Map<java.lang.String,java.lang.Object> dumpStats(java.lang.String protocol_name)
public java.util.Map<java.lang.String,java.lang.Object> dumpStats(java.lang.String protocol_name,
                                                                  java.util.List<java.lang.String> attrs)
public java.lang.String printProtocolSpec(boolean include_properties)
public java.lang.String printProtocolSpecAsXML()
public java.lang.String printProtocolSpecAsPlainString()
public void setup(java.util.List<ProtocolConfiguration> configs)
           throws java.lang.Exception
java.lang.Exception
public void setup(ProtocolStack stack)
           throws java.lang.Exception
java.lang.Exceptionpublic ProtocolStack addProtocol(Protocol prot)
prot - 
public ProtocolStack addProtocols(Protocol... prots)
prots - 
public ProtocolStack addProtocols(java.util.List<Protocol> prots)
prots - 
public void insertProtocol(Protocol prot,
                           int position,
                           java.lang.String neighbor_prot)
                    throws java.lang.Exception
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
java.lang.Exception - Will be thrown when the new protocol cannot be created, or inserted.
public void insertProtocolInStack(Protocol prot,
                                  Protocol neighbor,
                                  int position)
public void insertProtocol(Protocol prot,
                           int position,
                           java.lang.Class<? extends Protocol> neighbor_prot)
                    throws java.lang.Exception
java.lang.Exception
public void insertProtocol(Protocol prot,
                           int position,
                           java.lang.Class<? extends Protocol>... neighbor_prots)
                    throws java.lang.Exception
java.lang.Exceptionpublic void insertProtocolAtTop(Protocol prot)
public Protocol removeProtocol(java.lang.String prot_name)
                        throws java.lang.Exception
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.
java.lang.Exception - Thrown if the protocol cannot be stopped correctly.
public void removeProtocols(java.lang.String... protocols)
                     throws java.lang.Exception
java.lang.Exceptionpublic Protocol removeProtocol(java.lang.Class... protocols)
public Protocol removeProtocol(java.lang.Class prot)
public Protocol findProtocol(java.lang.String name)
public Protocol getBottomProtocol()
public Protocol getTopProtocol()
public Protocol findProtocol(java.lang.Class<?> clazz)
public Protocol findProtocol(java.lang.Class<?>... classes)
classes - A list of protocol classes to find
public void replaceProtocol(Protocol existing_prot,
                            Protocol new_prot)
                     throws java.lang.Exception
existing_prot - new_prot - 
java.lang.Exception
protected Protocol createProtocol(java.lang.String classname)
                           throws java.lang.Exception
java.lang.Exception
public void init()
          throws java.lang.Exception
Protocol
init in class Protocoljava.lang.Exception - Thrown if protocol cannot be initialized successfully. This will cause the
                      ProtocolStack to fail, so the channel constructor will throw an exception
public void initProtocolStack()
                       throws java.lang.Exception
java.lang.Exceptionpublic void destroy()
ProtocolChannel.close().
 Does some cleanup; after the call the VM will terminate
destroy in class Protocol
public void startStack(java.lang.String cluster_name,
                       Address local_addr)
                throws java.lang.Exception
Protocol.start() method is called in each protocol,
 from top to bottom.
 Each layer can perform some initialization, e.g. create a multicast socket
java.lang.Exceptionpublic void stopStack(java.lang.String cluster_name)
public java.lang.String getName()
getName in class Protocolpublic java.lang.Object up(Event evt)
Protocoldown_prot.down() or c) the event (or another event) is sent up
 the stack using up_prot.up().
up in class Protocolpublic java.lang.Object down(Event evt)
Protocoldown_prot.down(). In case of a GET_ADDRESS event (which tries to
 retrieve the stack's address from one of the bottom layers), the layer may need to send
 a new response event back up the stack using up_prot.up().
down in class Protocol| 
 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||