Class IpcPublication

java.lang.Object
io.aeron.driver.IpcPublication
All Implemented Interfaces:
DriverManagedResource, Subscribable

public final class IpcPublication extends Object implements DriverManagedResource, Subscribable
Encapsulation of a stream used directly between publishers and subscribers for IPC over shared memory.
  • Method Details

    • channel

      public String channel()
      Channel URI string for this publication.
      Returns:
      channel URI string for this publication.
    • sessionId

      public int sessionId()
      Session id allocated to this stream.
      Returns:
      session id allocated to this stream.
    • streamId

      public int streamId()
      Stream id within the channel.
      Returns:
      stream id within the channel.
    • subscribableRegistrationId

      public long subscribableRegistrationId()
      Registration ID that is in use by the subscribable.
      Specified by:
      subscribableRegistrationId in interface Subscribable
      Returns:
      registration ID for subscribable.
    • free

      public boolean free()
      Free external resources such as files. If successful then return true.
      Specified by:
      free in interface DriverManagedResource
      Returns:
      true if successful and false if it should be attempted again later.
    • close

      public void close()
      Close resources that are not external. This will not call DriverManagedResource.free(). That will need to be called separately at the appropriate time.
      Specified by:
      close in interface DriverManagedResource
    • addSubscriber

      public void addSubscriber(SubscriptionLink subscriptionLink, ReadablePosition subscriberPosition, long nowNs)
      Add a subscriber and its position used for tracking consumption.
      Specified by:
      addSubscriber in interface Subscribable
      Parameters:
      subscriptionLink - for identifying the subscriber.
      subscriberPosition - for tracking the subscriber.
      nowNs - for the current time.
    • removeSubscriber

      public void removeSubscriber(SubscriptionLink subscriptionLink, ReadablePosition subscriberPosition)
      Remove a subscriber and its position used for tracking consumption.

      Note: The Subscribable is responsible for calling ReadablePosition.close() on removed positions.

      Specified by:
      removeSubscriber in interface Subscribable
      Parameters:
      subscriptionLink - for identifying the subscriber.
      subscriberPosition - for tracking the subscriber.
    • onTimeEvent

      public void onTimeEvent(long timeNs, long timeMs, DriverConductor conductor)
      Inform resource of timeNs passing and pass it DriverConductor to inform of any state transitions.
      Specified by:
      onTimeEvent in interface DriverManagedResource
      Parameters:
      timeNs - now in nanoseconds.
      timeMs - now in milliseconds for epoch.
      conductor - to inform of any state transitions.
    • hasReachedEndOfLife

      public boolean hasReachedEndOfLife()
      Has resource reached end of its life and should be reclaimed?
      Specified by:
      hasReachedEndOfLife in interface DriverManagedResource
      Returns:
      whether resource has reached end of life or not.