Search in sources :

Example 1 with StreamFactory

use of com.mongodb.connection.StreamFactory in project mongo-java-driver by mongodb.

the class KeyManagementService method decryptKey.

Mono<Void> decryptKey(final MongoKeyDecryptor keyDecryptor) {
    SocketSettings socketSettings = SocketSettings.builder().connectTimeout(timeoutMillis, MILLISECONDS).readTimeout(timeoutMillis, MILLISECONDS).build();
    StreamFactory streamFactory = tlsChannelStreamFactoryFactory.create(socketSettings, SslSettings.builder().enabled(true).context(kmsProviderSslContextMap.get(keyDecryptor.getKmsProvider())).build());
    ServerAddress serverAddress = new ServerAddress(keyDecryptor.getHostName());
    LOGGER.info("Connecting to KMS server at " + serverAddress);
    return Mono.<Void>create(sink -> {
        Stream stream = streamFactory.create(serverAddress);
        stream.openAsync(new AsyncCompletionHandler<Void>() {

            @Override
            public void completed(final Void ignored) {
                streamWrite(stream, keyDecryptor, sink);
            }

            @Override
            public void failed(final Throwable t) {
                stream.close();
                sink.error(t);
            }
        });
    }).onErrorMap(this::unWrapException);
}
Also used : ServerAddress(com.mongodb.ServerAddress) SslSettings(com.mongodb.connection.SslSettings) StreamFactory(com.mongodb.connection.StreamFactory) ByteBuf(org.bson.ByteBuf) SSLContext(javax.net.ssl.SSLContext) MongoKeyDecryptor(com.mongodb.crypt.capi.MongoKeyDecryptor) CompletionHandler(java.nio.channels.CompletionHandler) Mono(reactor.core.publisher.Mono) MonoSink(reactor.core.publisher.MonoSink) MongoSocketException(com.mongodb.MongoSocketException) MILLISECONDS(java.util.concurrent.TimeUnit.MILLISECONDS) AsynchronousChannelStream(com.mongodb.internal.connection.AsynchronousChannelStream) Collections.singletonList(java.util.Collections.singletonList) List(java.util.List) SocketSettings(com.mongodb.connection.SocketSettings) Loggers(com.mongodb.diagnostics.logging.Loggers) Closeable(java.io.Closeable) Map(java.util.Map) Stream(com.mongodb.connection.Stream) ByteBufNIO(org.bson.ByteBufNIO) AsyncCompletionHandler(com.mongodb.connection.AsyncCompletionHandler) Logger(com.mongodb.diagnostics.logging.Logger) TlsChannelStreamFactoryFactory(com.mongodb.connection.TlsChannelStreamFactoryFactory) AsyncCompletionHandler(com.mongodb.connection.AsyncCompletionHandler) StreamFactory(com.mongodb.connection.StreamFactory) ServerAddress(com.mongodb.ServerAddress) AsynchronousChannelStream(com.mongodb.internal.connection.AsynchronousChannelStream) Stream(com.mongodb.connection.Stream) SocketSettings(com.mongodb.connection.SocketSettings)

Example 2 with StreamFactory

use of com.mongodb.connection.StreamFactory in project mongo-java-driver by mongodb.

the class MongoClients method createWithTlsChannel.

private static MongoClient createWithTlsChannel(final MongoClientSettings settings, @Nullable final MongoDriverInformation mongoDriverInformation) {
    TlsChannelStreamFactoryFactory streamFactoryFactory = new TlsChannelStreamFactoryFactory();
    StreamFactory streamFactory = streamFactoryFactory.create(settings.getSocketSettings(), settings.getSslSettings());
    StreamFactory heartbeatStreamFactory = streamFactoryFactory.create(settings.getHeartbeatSocketSettings(), settings.getSslSettings());
    return createMongoClient(settings, mongoDriverInformation, streamFactory, heartbeatStreamFactory, streamFactoryFactory);
}
Also used : StreamFactory(com.mongodb.connection.StreamFactory) TlsChannelStreamFactoryFactory(com.mongodb.connection.TlsChannelStreamFactoryFactory)

Example 3 with StreamFactory

use of com.mongodb.connection.StreamFactory in project mongo-java-driver by mongodb.

the class MongoClients method createWithAsynchronousSocketChannel.

private static MongoClient createWithAsynchronousSocketChannel(final MongoClientSettings settings, @Nullable final MongoDriverInformation mongoDriverInformation) {
    StreamFactoryFactory streamFactoryFactory = AsynchronousSocketChannelStreamFactoryFactory.builder().build();
    StreamFactory streamFactory = streamFactoryFactory.create(settings.getSocketSettings(), settings.getSslSettings());
    StreamFactory heartbeatStreamFactory = streamFactoryFactory.create(settings.getHeartbeatSocketSettings(), settings.getSslSettings());
    return createMongoClient(settings, mongoDriverInformation, streamFactory, heartbeatStreamFactory, null);
}
Also used : StreamFactory(com.mongodb.connection.StreamFactory) AsynchronousSocketChannelStreamFactoryFactory(com.mongodb.connection.AsynchronousSocketChannelStreamFactoryFactory) StreamFactoryFactory(com.mongodb.connection.StreamFactoryFactory) TlsChannelStreamFactoryFactory(com.mongodb.connection.TlsChannelStreamFactoryFactory)

Example 4 with StreamFactory

use of com.mongodb.connection.StreamFactory in project mongo-java-driver by mongodb.

the class NettyMongoClients method create.

static MongoClient create(final MongoClientSettings settings, final MongoDriverInformation mongoDriverInformation) {
    final EventLoopGroup eventLoopGroup = new NioEventLoopGroup();
    StreamFactory streamFactory = new NettyStreamFactory(settings.getSocketSettings(), settings.getSslSettings(), eventLoopGroup);
    StreamFactory heartbeatStreamFactory = new NettyStreamFactory(settings.getHeartbeatSocketSettings(), settings.getSslSettings(), eventLoopGroup);
    return MongoClients.createMongoClient(settings, mongoDriverInformation, streamFactory, heartbeatStreamFactory, new Closeable() {

        @Override
        public void close() throws IOException {
            eventLoopGroup.shutdownGracefully().awaitUninterruptibly();
        }
    });
}
Also used : EventLoopGroup(io.netty.channel.EventLoopGroup) NioEventLoopGroup(io.netty.channel.nio.NioEventLoopGroup) NettyStreamFactory(com.mongodb.connection.netty.NettyStreamFactory) StreamFactory(com.mongodb.connection.StreamFactory) NettyStreamFactory(com.mongodb.connection.netty.NettyStreamFactory) Closeable(java.io.Closeable) IOException(java.io.IOException) NioEventLoopGroup(io.netty.channel.nio.NioEventLoopGroup)

Example 5 with StreamFactory

use of com.mongodb.connection.StreamFactory in project mongo-java-driver by mongodb.

the class MongoClients method create.

private static MongoClient create(final MongoClientSettings settings, final MongoDriverInformation mongoDriverInformation, final String requestedStreamType) {
    String streamType = getStreamType(requestedStreamType);
    if (isNetty(streamType) && settings.getStreamFactoryFactory() == null) {
        return NettyMongoClients.create(settings, mongoDriverInformation);
    } else {
        StreamFactory streamFactory = getStreamFactory(settings.getStreamFactoryFactory(), settings.getSocketSettings(), settings.getSslSettings(), streamType);
        StreamFactory heartbeatStreamFactory = getStreamFactory(settings.getStreamFactoryFactory(), settings.getHeartbeatSocketSettings(), settings.getSslSettings(), streamType);
        return createMongoClient(settings, mongoDriverInformation, streamFactory, heartbeatStreamFactory, null);
    }
}
Also used : AsynchronousSocketChannelStreamFactory(com.mongodb.connection.AsynchronousSocketChannelStreamFactory) StreamFactory(com.mongodb.connection.StreamFactory) ConnectionString(com.mongodb.ConnectionString)

Aggregations

StreamFactory (com.mongodb.connection.StreamFactory)5 TlsChannelStreamFactoryFactory (com.mongodb.connection.TlsChannelStreamFactoryFactory)3 Closeable (java.io.Closeable)2 ConnectionString (com.mongodb.ConnectionString)1 MongoSocketException (com.mongodb.MongoSocketException)1 ServerAddress (com.mongodb.ServerAddress)1 AsyncCompletionHandler (com.mongodb.connection.AsyncCompletionHandler)1 AsynchronousSocketChannelStreamFactory (com.mongodb.connection.AsynchronousSocketChannelStreamFactory)1 AsynchronousSocketChannelStreamFactoryFactory (com.mongodb.connection.AsynchronousSocketChannelStreamFactoryFactory)1 SocketSettings (com.mongodb.connection.SocketSettings)1 SslSettings (com.mongodb.connection.SslSettings)1 Stream (com.mongodb.connection.Stream)1 StreamFactoryFactory (com.mongodb.connection.StreamFactoryFactory)1 NettyStreamFactory (com.mongodb.connection.netty.NettyStreamFactory)1 MongoKeyDecryptor (com.mongodb.crypt.capi.MongoKeyDecryptor)1 Logger (com.mongodb.diagnostics.logging.Logger)1 Loggers (com.mongodb.diagnostics.logging.Loggers)1 AsynchronousChannelStream (com.mongodb.internal.connection.AsynchronousChannelStream)1 EventLoopGroup (io.netty.channel.EventLoopGroup)1 NioEventLoopGroup (io.netty.channel.nio.NioEventLoopGroup)1