Class AbstractPipe

java.lang.Object
org.red5.server.messaging.AbstractPipe
All Implemented Interfaces:
IMessageInput, IMessageOutput, IPipe
Direct Known Subclasses:
InMemoryPullPullPipe, InMemoryPushPushPipe

public abstract class AbstractPipe extends Object implements IPipe
Abstract pipe that books providers/consumers and listeners. Aim to ease the implementation of concrete pipes. For more information on what pipe is, see IPipe interface documentation.
Author:
The Red5 Project, Steven Gong (steven.gong@gmail.com)
See Also:
  • Field Details

  • Constructor Details

    • AbstractPipe

      public AbstractPipe()
  • Method Details

    • subscribe

      public boolean subscribe(IConsumer consumer, Map<String,Object> paramMap)
      Connect consumer to this pipe. Doesn't allow to connect one consumer twice. Does register event listeners if instance of IPipeConnectionListener is given.
      Specified by:
      subscribe in interface IMessageInput
      Parameters:
      consumer - Consumer
      paramMap - Parameters passed with connection, used in concrete pipe implementations
      Returns:
      true if consumer was added, false otherwise
    • subscribe

      public boolean subscribe(IProvider provider, Map<String,Object> paramMap)
      Connect provider to this pipe. Doesn't allow to connect one provider twice. Does register event listeners if instance of IPipeConnectionListener is given.
      Specified by:
      subscribe in interface IMessageOutput
      Parameters:
      provider - Provider
      paramMap - Parameters passed with connection, used in concrete pipe implementations
      Returns:
      true if provider was added, false otherwise
    • unsubscribe

      public boolean unsubscribe(IProvider provider)
      Disconnects provider from this pipe. Fires pipe connection event.
      Specified by:
      unsubscribe in interface IMessageOutput
      Parameters:
      provider - Provider that should be removed
      Returns:
      true on success, false otherwise
    • unsubscribe

      public boolean unsubscribe(IConsumer consumer)
      Disconnects consumer from this pipe. Fires pipe connection event.
      Specified by:
      unsubscribe in interface IMessageInput
      Parameters:
      consumer - Consumer that should be removed
      Returns:
      true on success, false otherwise
    • addPipeConnectionListener

      public void addPipeConnectionListener(IPipeConnectionListener listener)
      Registers pipe connect events listener
      Specified by:
      addPipeConnectionListener in interface IPipe
      Parameters:
      listener - Listener
    • removePipeConnectionListener

      public void removePipeConnectionListener(IPipeConnectionListener listener)
      Removes pipe connection listener
      Specified by:
      removePipeConnectionListener in interface IPipe
      Parameters:
      listener - Listener
    • sendOOBControlMessage

      public void sendOOBControlMessage(IProvider provider, OOBControlMessage oobCtrlMsg)
      Send out-of-band ("special") control message to all consumers
      Specified by:
      sendOOBControlMessage in interface IMessageOutput
      Parameters:
      provider - Provider, may be used in concrete implementations
      oobCtrlMsg - Out-of-band control message
    • sendOOBControlMessage

      public void sendOOBControlMessage(IConsumer consumer, OOBControlMessage oobCtrlMsg)
      Send out-of-band ("special") control message to all providers
      Specified by:
      sendOOBControlMessage in interface IMessageInput
      Parameters:
      consumer - Consumer, may be used in concrete implementations
      oobCtrlMsg - Out-of-band control message
    • getListeners

      public List<IPipeConnectionListener> getListeners()
      Getter for pipe connection events listeners
      Returns:
      Listeners
    • setListeners

      public void setListeners(List<IPipeConnectionListener> newListeners)
      Setter for pipe connection events listeners
      Parameters:
      newListeners - Listeners
    • getProviders

      public List<IProvider> getProviders()
      Getter for providers
      Specified by:
      getProviders in interface IMessageOutput
      Returns:
      Providers list
    • getConsumers

      public List<IConsumer> getConsumers()
      Getter for consumers
      Specified by:
      getConsumers in interface IMessageInput
      Returns:
      consumers list
    • fireConsumerConnectionEvent

      protected void fireConsumerConnectionEvent(IConsumer consumer, PipeConnectionEvent.EventType type, Map<String,Object> paramMap)
      Broadcast consumer connection event
      Parameters:
      consumer - Consumer that has connected
      type - Event type
      paramMap - Parameters passed with connection
    • fireProviderConnectionEvent

      protected void fireProviderConnectionEvent(IProvider provider, PipeConnectionEvent.EventType type, Map<String,Object> paramMap)
      Broadcast provider connection event
      Parameters:
      provider - Provider that has connected
      type - Event type
      paramMap - Parameters passed with connection
    • firePipeConnectionEvent

      protected void firePipeConnectionEvent(PipeConnectionEvent event)
      Fire any pipe connection event and run all it's tasks
      Parameters:
      event - Pipe connection event
    • close

      public void close()
      Close the pipe