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

info.bitrich.xchangestream.lgo.LgoStreamingExchange Maven / Gradle / Ivy

The newest version!
package info.bitrich.xchangestream.lgo;

import info.bitrich.xchangestream.core.ProductSubscription;
import info.bitrich.xchangestream.core.StreamingExchange;
import info.bitrich.xchangestream.core.StreamingMarketDataService;
import info.bitrich.xchangestream.service.netty.ConnectionStateModel.State;
import io.reactivex.rxjava3.core.Completable;
import io.reactivex.rxjava3.core.Observable;
import org.knowm.xchange.ExchangeSpecification;
import org.knowm.xchange.lgo.LgoEnv;
import org.knowm.xchange.lgo.LgoExchange;
import org.knowm.xchange.lgo.service.LgoKeyService;
import org.knowm.xchange.lgo.service.LgoSignatureService;

public class LgoStreamingExchange extends LgoExchange implements StreamingExchange {

  private LgoStreamingService streamingService;
  private LgoStreamingMarketDataService marketDataService;
  private LgoStreamingAccountService accountService;
  private LgoStreamingTradeService tradeService;

  @Override
  protected void initServices() {
    super.initServices();
    streamingService = createStreamingService();
    marketDataService = new LgoStreamingMarketDataService(streamingService);
    accountService = new LgoStreamingAccountService(streamingService);
    tradeService =
        new LgoStreamingTradeService(
            streamingService,
            new LgoKeyService(getExchangeSpecification()),
            LgoSignatureService.createInstance(getExchangeSpecification()),
            getNonceFactory());
  }

  private LgoStreamingService createStreamingService() {
    String apiUrl =
        getExchangeSpecification().getExchangeSpecificParameters().get(LgoEnv.WS_URL).toString();
    LgoStreamingService streamingService =
        new LgoStreamingService(this.getSignatureService(), apiUrl);
    applyStreamingSpecification(getExchangeSpecification(), streamingService);
    return streamingService;
  }

  @Override
  public void applySpecification(ExchangeSpecification exchangeSpecification) {
    super.applySpecification(exchangeSpecification);
    initServices();
  }

  @Override
  public Completable connect(ProductSubscription... args) {
    return streamingService.connect();
  }

  @Override
  public Completable disconnect() {
    return streamingService.disconnect();
  }

  @Override
  public boolean isAlive() {
    return streamingService.isSocketOpen();
  }

  @Override
  public StreamingMarketDataService getStreamingMarketDataService() {
    return marketDataService;
  }

  @Override
  public LgoStreamingAccountService getStreamingAccountService() {
    return accountService;
  }

  @Override
  public LgoStreamingTradeService getStreamingTradeService() {
    return tradeService;
  }

  @Override
  public Observable connectionStateObservable() {
    return streamingService.subscribeConnectionState();
  }

  @Override
  public void useCompressedMessages(boolean compressedMessages) {}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy