package io.muoncore.protocol.reactivestream.client; import io.muoncore.DiscoverySource; import io.muoncore.codec.CodecsSource; import io.muoncore.config.MuonConfigurationSource; import io.muoncore.exception.MuonException; import io.muoncore.message.MuonInboundMessage; import io.muoncore.transport.TransportClientSource; import org.reactivestreams.Subscriber; import java.lang.reflect.Type; import java.net.URI; /** * @deprecated in favour of {@link ReactiveStreamClient} */ @Deprecated public interface ReactiveStreamClientProtocolStack extends TransportClientSource, CodecsSource, MuonConfigurationSource, DiscoverySource { @Deprecated default void subscribe(URI uri, Subscriber<StreamData> subscriber) { if (!uri.getScheme().equals("stream")) throw new IllegalArgumentException("URI Scheme is invalid. Requires scheme: stream://"); if (getDiscovery().findService( svc -> svc.getIdentifier().equals(uri.getHost())).isPresent()) { ReactiveStreamClientProtocol proto = new ReactiveStreamClientProtocol( uri, getTransportClient().openClientChannel(), subscriber, getCodecs(), getConfiguration(), getDiscovery()); proto.start(); } else { throw new MuonException("The service " + uri.getHost() + " is not currently available"); } } }