GrpcStreamSubscription.java

  1. /*
  2.  * @copyright defined in LICENSE.txt
  3.  */

  4. package hera.client.stream;

  5. import static org.slf4j.LoggerFactory.getLogger;

  6. import lombok.RequiredArgsConstructor;
  7. import org.slf4j.Logger;

  8. @RequiredArgsConstructor
  9. public class GrpcStreamSubscription<T> implements hera.api.model.Subscription<T> {

  10.   protected final transient Logger logger = getLogger(getClass());

  11.   protected final io.grpc.Context.CancellableContext context;

  12.   @Override
  13.   public void unsubscribe() {
  14.     logger.info("Unsubscribe subscription: {}", getClass());
  15.     synchronized (this) {
  16.       context.close();
  17.     }
  18.   }

  19.   @Override
  20.   public boolean isUnsubscribed() {
  21.     return context.isCancelled();
  22.   }

  23. }