Class SingleSubscriberPublisher<T>

  • Type Parameters:
    T - the things to publish
    All Implemented Interfaces:
    org.reactivestreams.Publisher<T>

    public class SingleSubscriberPublisher<T>
    extends java.lang.Object
    implements org.reactivestreams.Publisher<T>
    A Publisher of things that are buffered and handles a single subscriber at a time. Rule #1 of reactive streams is don't write your own implementation. However rule #1 of graphql-java is that we have no unnecessary dependencies and force users into a code corner. So we chose to have a very simple implementation (single subscriber) implementation that allows a stream of results to be streamed out. People can wrap this is a more complete implementation if they so choose. Inspired by Public Domain CC0 code at https://github.com/jroper/reactive-streams-servlet/tree/master/reactive-streams-servlet/src/main/java/org/reactivestreams/servlet
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void noMoreData()
      Called by the producing code to say there is no more data to offer and the stream is complete
      void offer​(T data)
      Called from the producing code to offer data up ready for a subscriber to read it
      void offerError​(java.lang.Throwable t)  
      void subscribe​(org.reactivestreams.Subscriber<? super T> subscriber)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • SingleSubscriberPublisher

        public SingleSubscriberPublisher()
        Constructs a publisher with no callback when subscribed
      • SingleSubscriberPublisher

        public SingleSubscriberPublisher​(SingleSubscriberPublisher.OnSubscriptionCallback subscriptionCallback)
        The producing code can provide a callback to know when the subscriber attaches
        Parameters:
        subscriptionCallback - the callback when some ones
    • Method Detail

      • offer

        public void offer​(T data)
        Called from the producing code to offer data up ready for a subscriber to read it
        Parameters:
        data - the data to offer
      • noMoreData

        public void noMoreData()
        Called by the producing code to say there is no more data to offer and the stream is complete
      • offerError

        public void offerError​(java.lang.Throwable t)
      • subscribe

        public void subscribe​(org.reactivestreams.Subscriber<? super T> subscriber)
        Specified by:
        subscribe in interface org.reactivestreams.Publisher<T>