All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.camunda.zeebe.transport.stream.api.ClientStreamService Maven / Gradle / Ivy

There is a newer version: 8.7.0-alpha1
Show newest version
/*
 * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH under
 * one or more contributor license agreements. See the NOTICE file distributed
 * with this work for additional information regarding copyright ownership.
 * Licensed under the Camunda License 1.0. You may not use this file
 * except in compliance with the Camunda License 1.0.
 */
package io.camunda.zeebe.transport.stream.api;

import io.atomix.cluster.MemberId;
import io.atomix.cluster.messaging.ClusterCommunicationService;
import io.camunda.zeebe.scheduler.ActorSchedulingService;
import io.camunda.zeebe.scheduler.AsyncClosable;
import io.camunda.zeebe.scheduler.future.ActorFuture;
import io.camunda.zeebe.util.buffer.BufferWriter;
import java.util.Collection;
import java.util.Optional;

/**
 * Manages an instance of {@link ClientStreamer}. Intended to be the main entry point when setting
 * up the client side for remote streams, primarily via {@link
 * io.camunda.zeebe.transport.TransportFactory#createRemoteStreamClient(ClusterCommunicationService,
 * ClientStreamMetrics)}.
 *
 * @param  the type of the streaming metadata
 */
public interface ClientStreamService extends AsyncClosable {

  /**
   * Starts the service, optionally with the given actor scheduling service. Assumes the scheduling
   * service is already running.
   */
  ActorFuture start(final ActorSchedulingService schedulingService);

  /**
   * A callback to be invoked when a new streaming server is added. Implementations should be
   * idempotent.
   */
  void onServerJoined(final MemberId memberId);

  /**
   * A callback to be invoked when a new streaming server is removed. Implementations should be
   * idempotent.
   */
  void onServerRemoved(final MemberId memberId);

  /** Returns the managed {@link ClientStreamer} associated with this service. */
  ClientStreamer streamer();

  /** Returns the {@link ClientStream} associated with this ID */
  ActorFuture>> streamFor(final ClientStreamId id);

  /** Returns all registered client streams. */
  ActorFuture>> streams();
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy