org.jgroups.mux
Class Multiplexer

java.lang.Object
  extended by org.jgroups.mux.Multiplexer
All Implemented Interfaces:
UpHandler

public class Multiplexer
extends java.lang.Object
implements UpHandler

The multiplexer allows multiple channel interfaces to be associated with one underlying instance of JChannel.

The multiplexer is essentially a building block residing on top of a JChannel providing multiplexing functionality to N instances of MuxChannel. Since MuxChannel extends the JGroups JChannel class, user applications are completely unaware of this change in the underlying plumbing.

Each JGroups application sharing a channel through a multiplexer has to create a MuxChannel with a unique application id. The multiplexer keeps track of all registered applications and tags messages belonging to a specific application with that id for sent messages. When receiving a message from a remote peer, the multiplexer will dispatch a message to the appropriate MuxChannel depending on the id attached to the message.

Version:
$Id: Multiplexer.java,v 1.85 2007/11/07 21:46:23 vlada Exp $
Author:
Bela Ban, Vladimir Blagojevic
See Also:
MuxChannel, Channel

Constructor Summary
Multiplexer(JChannel channel)
           
 
Method Summary
 void addServiceIfNotPresent(java.lang.String id, MuxChannel ch)
           
 boolean close()
           
 void closeAll()
           
 void connect(java.lang.String cluster_name)
           
 Channel createMuxChannel(java.lang.String id, java.lang.String stack_name)
           
protected  java.util.concurrent.ThreadPoolExecutor createThreadPool()
           
 void disconnect()
          Closes the underlying JChannel if all MuxChannels have been disconnected
 boolean flushSupported()
           
 java.util.Set getApplicationIds()
          Deprecated. Use ${link #getServiceIds()} instead
 JChannel getChannel()
           
 Address getLocalAddress()
           
 java.util.Set<java.lang.String> getServiceIds()
           
 long getServicesResponseTimeout()
           
 View getServiceView(java.lang.String service_id)
          Returns a copy of the current view minus the nodes on which service service_id is not running
 boolean getState(Address target, java.lang.String id, long timeout)
           
 Address getStateProvider(Address preferredTarget, java.lang.String service_id)
          Returns an Address of a state provider for a given service_id.
 boolean isConnected()
           
 boolean isOpen()
          Determines whether the channel is open; i.e., the protocol stack has been created (may not be connected though).
 void open()
          Re-opens a closed channel.
 void registerForStateTransfer(java.lang.String appl_id, java.lang.String substate_id)
           
 MuxChannel remove(java.lang.String id)
           
 void sendServiceDownMessage(java.lang.String service, Address host, boolean bypassFlush)
           
 void sendServiceUpMessage(java.lang.String service, Address host, boolean bypassFlush)
           
 void setServicesResponseTimeout(long services_rsp_timeout)
           
 boolean shutdown()
           
protected  void shutdownThreadPool()
           
 boolean startFlush(boolean automatic_resume)
           
 boolean stateTransferListenersPresent()
           
 void stopFlush()
           
 void unregister(java.lang.String appl_id)
           
 java.lang.Object up(Event evt)
          Remove mux header and dispatch to correct MuxChannel
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Multiplexer

public Multiplexer(JChannel channel)
Method Detail

getChannel

public JChannel getChannel()

getApplicationIds

public java.util.Set getApplicationIds()
Deprecated. Use ${link #getServiceIds()} instead

Returns:
The set of service IDs

getServiceIds

public java.util.Set<java.lang.String> getServiceIds()

getServicesResponseTimeout

public long getServicesResponseTimeout()

setServicesResponseTimeout

public void setServicesResponseTimeout(long services_rsp_timeout)

getServiceView

public View getServiceView(java.lang.String service_id)
Returns a copy of the current view minus the nodes on which service service_id is not running

Parameters:
service_id -
Returns:
The service view

stateTransferListenersPresent

public boolean stateTransferListenersPresent()

registerForStateTransfer

public void registerForStateTransfer(java.lang.String appl_id,
                                     java.lang.String substate_id)

getState

public boolean getState(Address target,
                        java.lang.String id,
                        long timeout)
                 throws ChannelNotConnectedException,
                        ChannelClosedException
Throws:
ChannelNotConnectedException
ChannelClosedException

createThreadPool

protected java.util.concurrent.ThreadPoolExecutor createThreadPool()

shutdownThreadPool

protected void shutdownThreadPool()

sendServiceUpMessage

public void sendServiceUpMessage(java.lang.String service,
                                 Address host,
                                 boolean bypassFlush)
                          throws java.lang.Exception
Throws:
java.lang.Exception

sendServiceDownMessage

public void sendServiceDownMessage(java.lang.String service,
                                   Address host,
                                   boolean bypassFlush)
                            throws java.lang.Exception
Throws:
java.lang.Exception

up

public java.lang.Object up(Event evt)
Remove mux header and dispatch to correct MuxChannel

Specified by:
up in interface UpHandler
Parameters:
evt -
Returns:

createMuxChannel

public Channel createMuxChannel(java.lang.String id,
                                java.lang.String stack_name)
                         throws java.lang.Exception
Throws:
java.lang.Exception

remove

public MuxChannel remove(java.lang.String id)

disconnect

public void disconnect()
Closes the underlying JChannel if all MuxChannels have been disconnected


unregister

public void unregister(java.lang.String appl_id)

close

public boolean close()

closeAll

public void closeAll()

shutdown

public boolean shutdown()

getLocalAddress

public Address getLocalAddress()

flushSupported

public boolean flushSupported()

startFlush

public boolean startFlush(boolean automatic_resume)

stopFlush

public void stopFlush()

isConnected

public boolean isConnected()

connect

public void connect(java.lang.String cluster_name)
             throws ChannelException
Throws:
ChannelException

open

public void open()
          throws ChannelException
Re-opens a closed channel. Throws an exception if the channel is already open. After this method returns, connect() may be called to join a group. The address of this member will be different from the previous incarnation.

Throws:
ChannelException

isOpen

public boolean isOpen()
Determines whether the channel is open; i.e., the protocol stack has been created (may not be connected though).


getStateProvider

public Address getStateProvider(Address preferredTarget,
                                java.lang.String service_id)
Returns an Address of a state provider for a given service_id. If preferredTarget is a member of a service view for a given service_id then preferredTarget is returned. Otherwise, service view coordinator is returned if such node exists. If service view is empty for a given service_id null is returned.

Parameters:
preferredTarget -
service_id -
Returns:

addServiceIfNotPresent

public void addServiceIfNotPresent(java.lang.String id,
                                   MuxChannel ch)


Copyright © 1998-2008 Bela Ban. All Rights Reserved.