class EurekaReactiveDiscoveryClient implements ReactiveDiscoveryClient {

	private final EurekaClient eurekaClient;

	private final EurekaClientConfig clientConfig;

	public EurekaReactiveDiscoveryClient(EurekaClient eurekaClient, EurekaClientConfig clientConfig) {
		this.eurekaClient = eurekaClient;
		this.clientConfig = clientConfig;
	}

	@Override
	public String description() {
		return "Spring Cloud Eureka Reactive Discovery Client";
	}

	@Override
	public Flux<ServiceInstance> getInstances(String serviceId) {
		return Flux.defer(() -> Flux.fromIterable(eurekaClient.getInstancesByVipAddress(serviceId, false)))
				.map(EurekaServiceInstance::new);
	}

	@Override
	public Flux<String> getServices() {<FILL_FUNCTION_BODY>}

	@Override
	public int getOrder() {
		return clientConfig instanceof Ordered ? ((Ordered) clientConfig).getOrder()
				: ReactiveDiscoveryClient.DEFAULT_ORDER;
	}

}

		return Flux.defer(() -> Mono.justOrEmpty(eurekaClient.getApplications()))
				.flatMapIterable(Applications::getRegisteredApplications)
				.filter(application -> !application.getInstances().isEmpty()).map(Application::getName)
				.map(String::toLowerCase);
	
<no_super_class>