org.openflow.util
Class ProducerConsumer

java.lang.Object
  extended by org.openflow.util.ProducerConsumer

public class ProducerConsumer
extends java.lang.Object

The following implement a producer/consumer design pattern in which both producers and consumers explicitly employ a centralized registration mechanism, and java Interfaces are used as contracts.


Field Summary
protected  java.util.Map<java.lang.Class<?>,java.util.Set<IProducer>> producerMap
           
protected static ProducerConsumer singleton
           
 
Constructor Summary
protected ProducerConsumer()
           
 
Method Summary
protected  int _deregisterConsumer(java.lang.Object consumer, java.lang.Class<?>[] interfaces, java.util.Set<java.lang.Class<?>> iUniqueSet)
           
protected  int _deregisterConsumer(java.lang.Object consumer, java.lang.Class<?> clazz, java.util.Set<java.lang.Class<?>> iUniqueSet)
           
protected  void _registerConsumer(java.lang.Object consumer, java.lang.Class<?>[] interfaces, java.util.Set<java.lang.Class<?>> iSet, java.util.Set<java.lang.Class<?>> iUniqueSet)
           
protected  void _registerConsumer(java.lang.Object consumer, java.lang.Class<?> clazz, java.util.Set<java.lang.Class<?>> iSet, java.util.Set<java.lang.Class<?>> iUniqueSet)
           
 int deregisterConsumer(java.lang.Object consumer)
          Consumer deregistration
 boolean deregisterProducer(IProducer producer, java.lang.Class<?> iface)
          Producer deregistration
static ProducerConsumer getSingleton()
           
 java.util.Set<java.lang.Class<?>> registerConsumer(java.lang.Object consumer)
          Consumer registration
 boolean registerProducer(IProducer producer, java.lang.Class<?> iface)
          Producer registration
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

singleton

protected static ProducerConsumer singleton

producerMap

protected java.util.Map<java.lang.Class<?>,java.util.Set<IProducer>> producerMap
Constructor Detail

ProducerConsumer

protected ProducerConsumer()
Method Detail

_registerConsumer

protected void _registerConsumer(java.lang.Object consumer,
                                 java.lang.Class<?>[] interfaces,
                                 java.util.Set<java.lang.Class<?>> iSet,
                                 java.util.Set<java.lang.Class<?>> iUniqueSet)

_registerConsumer

protected void _registerConsumer(java.lang.Object consumer,
                                 java.lang.Class<?> clazz,
                                 java.util.Set<java.lang.Class<?>> iSet,
                                 java.util.Set<java.lang.Class<?>> iUniqueSet)

_deregisterConsumer

protected int _deregisterConsumer(java.lang.Object consumer,
                                  java.lang.Class<?>[] interfaces,
                                  java.util.Set<java.lang.Class<?>> iUniqueSet)

_deregisterConsumer

protected int _deregisterConsumer(java.lang.Object consumer,
                                  java.lang.Class<?> clazz,
                                  java.util.Set<java.lang.Class<?>> iUniqueSet)

getSingleton

public static ProducerConsumer getSingleton()
Returns:
singleton ProducerConsumer

registerProducer

public boolean registerProducer(IProducer producer,
                                java.lang.Class<?> iface)
Producer registration

Parameters:
producer - object that implements IProducer
iface - interface supported by the producer
Returns:
whether there was a previously registered producer, or true if one or more the arguments were invalid

deregisterProducer

public boolean deregisterProducer(IProducer producer,
                                  java.lang.Class<?> iface)
Producer deregistration

Parameters:
producer - object that implements IProducer
iface - interface supported by the producer
Returns:
whether the interface/producer pair was removed, or false if one or more the arguments were invalid

registerConsumer

public java.util.Set<java.lang.Class<?>> registerConsumer(java.lang.Object consumer)
Consumer registration

Parameters:
consumer - object that implements producer-specific interfaces
Returns:
set of supported interfaces

deregisterConsumer

public int deregisterConsumer(java.lang.Object consumer)
Consumer deregistration

Parameters:
consumer - object to deregister
Returns:
number of unregistered interfaces