Interface BarrageMessageWriter

All Superinterfaces:
AutoCloseable, SafeCloseable
All Known Implementing Classes:
BarrageMessageWriterImpl

public interface BarrageMessageWriter extends SafeCloseable
A BarrageMessageWriter takes a BarrageMessage and re-uses portions of the serialized payload across different subscribers that may subscribe to different viewports and columns.
  • Method Details

    • getMessage

      BarrageMessage getMessage()
      Returns:
      the BarrageMessage that this writer is operating on
    • getSubView

      BarrageMessageWriter.MessageView getSubView(BarrageSubscriptionOptions options, boolean isInitialSnapshot)
      Obtain a Full-Subscription BarrageMessageWriter.MessageView of this BarrageMessageWriter that can be sent to a single subscriber.
      Parameters:
      options - serialization options for this specific view
      isInitialSnapshot - indicates whether this is the first snapshot for the listener
      Returns:
      a MessageView filtered by the subscription properties that can be sent to that subscriber
    • getSubView

      BarrageMessageWriter.MessageView getSubView(BarrageSubscriptionOptions options, boolean isInitialSnapshot, boolean isFullSubscription, @Nullable @Nullable RowSet viewport, boolean reverseViewport, @Nullable @Nullable RowSet keyspaceViewportPrev, @Nullable @Nullable RowSet keyspaceViewport, BitSet subscribedColumns)
      Obtain a BarrageMessageWriter.MessageView of this BarrageMessageWriter that can be sent to a single subscriber.

      Note that all passed in arguments are owned by the caller and may be modified external to this method.

      Parameters:
      options - serialization options for this specific view
      isInitialSnapshot - indicates whether this is the first snapshot for the listener
      isFullSubscription - whether this is a full subscription (possibly a growing viewport)
      viewport - is the position-space viewport
      reverseViewport - is the viewport reversed (relative to end of table instead of beginning)
      keyspaceViewportPrev - is the key-space viewport prior to applying the update
      keyspaceViewport - is the key-space viewport
      subscribedColumns - are the columns subscribed for this view
      Returns:
      a MessageView filtered by the subscription properties that can be sent to that subscriber
    • getSubView

      BarrageMessageWriter.MessageView getSubView(BarrageSubscriptionOptions options, boolean isInitialSnapshot, boolean isFullSubscription, @Nullable @Nullable RowSet viewport, boolean reverseViewport, @Nullable @Nullable RowSet keyspaceViewportPrev, @Nullable @Nullable RowSet keyspaceViewport, BitSet subscribedColumns, @Nullable @Nullable DictionaryWriterRegistry dictionaryRegistry)
      Obtain a BarrageMessageWriter.MessageView of this BarrageMessageWriter that can be sent to a single subscriber, with a persistent per-subscription DictionaryWriterRegistry that survives across multiple ticking updates.

      Note that all passed in arguments are owned by the caller and may be modified external to this method.

      Parameters:
      options - serialization options for this specific view
      isInitialSnapshot - indicates whether this is the first snapshot for the listener
      isFullSubscription - whether this is a full subscription (possibly a growing viewport)
      viewport - is the position-space viewport
      reverseViewport - is the viewport reversed (relative to end of table instead of beginning)
      keyspaceViewportPrev - is the key-space viewport prior to applying the update
      keyspaceViewport - is the key-space viewport
      subscribedColumns - are the columns subscribed for this view
      dictionaryRegistry - the persistent dictionary registry for this subscription, or null if unused
      Returns:
      a MessageView filtered by the subscription properties that can be sent to that subscriber
    • getSnapshotView

      Obtain a Full-Snapshot BarrageMessageWriter.MessageView of this BarrageMessageWriter that can be sent to a single requestor.
      Parameters:
      options - serialization options for this specific view
      Returns:
      a MessageView filtered by the snapshot properties that can be sent to that requestor
    • getSnapshotView

      BarrageMessageWriter.MessageView getSnapshotView(BarrageSnapshotOptions options, @Nullable @Nullable RowSet viewport, boolean reverseViewport, @Nullable @Nullable RowSet keyspaceViewport, BitSet snapshotColumns)
      Obtain a BarrageMessageWriter.MessageView of this BarrageMessageWriter that can be sent to a single requestor.

      Note that all passed in arguments are owned by the caller and may be modified external to this method.

      Parameters:
      options - serialization options for this specific view
      viewport - is the position-space viewport
      reverseViewport - is the viewport reversed (relative to end of table instead of beginning)
      snapshotColumns - are the columns included for this view
      Returns:
      a MessageView filtered by the snapshot properties that can be sent to that requestor
    • getSnapshotView

      BarrageMessageWriter.MessageView getSnapshotView(BarrageSnapshotOptions options, @Nullable @Nullable RowSet viewport, boolean reverseViewport, @Nullable @Nullable RowSet keyspaceViewport, BitSet snapshotColumns, @Nullable @Nullable DictionaryWriterRegistry dictionaryRegistry)
      Obtain a BarrageMessageWriter.MessageView of this BarrageMessageWriter that can be sent to a single requestor, with a DictionaryWriterRegistry for any dictionary-encoded columns in the snapshot.

      Note that all passed in arguments are owned by the caller and may be modified external to this method.

      Parameters:
      options - serialization options for this specific view
      viewport - is the position-space viewport
      reverseViewport - is the viewport reversed (relative to end of table instead of beginning)
      snapshotColumns - are the columns included for this view
      dictionaryRegistry - the dictionary registry for this snapshot, or null if unused
      Returns:
      a MessageView filtered by the snapshot properties that can be sent to that requestor
    • getDictionaryBatchView

      BarrageMessageWriter.MessageView getDictionaryBatchView(BarrageOptions options, long dictId, ChunkWriter<Chunk<Values>> valuesWriter, WritableChunk<Values> values, boolean isDelta)
      Obtain a BarrageMessageWriter.MessageView of standalone DictionaryBatches carrying values for dictionary dictId, framed like this writer's other messages. A producer that writes one message for several subscribers sends these first, to bring each subscriber's dictionary level with the others'.

      The values make one DictionaryBatch, or several when one would reach the maximum message size options allow or carry more values than their batch size, as a message's rows are split into record batches. Only the first replaces the dictionary when isDelta is false; the rest append to it.

      Takes ownership of values. The returned view must be visited exactly once.

      Parameters:
      options - serialization options for the values, including the maximum message size
      dictId - the dictionary id
      valuesWriter - the writer for the dictionary's values
      values - the values to send
      isDelta - whether the values append to the dictionary the subscriber holds, rather than replace it
      Returns:
      a MessageView of the DictionaryBatches, one stream each