public BoltProtocolV1(ITcpSocketClient tcpSocketClient, BufferSettings bufferSettings, ILogger logger = null) { _tcpSocketClient = tcpSocketClient; _bufferSettings = bufferSettings; _logger = logger; CreateReaderAndWriter(BoltProtocolPackStream.V1); }
public SocketClient(Uri uri, SocketSettings socketSettings, BufferSettings bufferSettings, ILogger logger = null, ITcpSocketClient socketClient = null) { _uri = uri; _logger = logger; _bufferSettings = bufferSettings; _tcpSocketClient = socketClient ?? new TcpSocketClient(socketSettings, _logger); }
private IDriver SetupWithCustomResolver(Uri overridenUri, Config config) { var connectionSettings = new ConnectionSettings(AuthToken, config); connectionSettings.SocketSettings.HostResolver = new CustomHostResolver(Server.BoltUri, connectionSettings.SocketSettings.HostResolver); var bufferSettings = new BufferSettings(config); var connectionFactory = new PooledConnectionFactory(connectionSettings, bufferSettings, config.Logger); return(GraphDatabase.CreateDriver(overridenUri, config, connectionFactory)); }
public virtual IMessageReader NewReader(Stream stream, BufferSettings bufferSettings, ILogger logger = null, bool byteArraySupportEnabled = true) { var messageFormat = BoltProtocolMessageFormat.V1; if (!byteArraySupportEnabled) { messageFormat = BoltProtocolMessageFormat.V1NoByteArray; } return(new MessageReader(stream, bufferSettings.DefaultReadBufferSize, bufferSettings.MaxReadBufferSize, logger, messageFormat)); }
public BoltProtocolV2(ITcpSocketClient tcpSocketClient, BufferSettings bufferSettings, ILogger logger = null) { _tcpSocketClient = tcpSocketClient; _bufferSettings = bufferSettings; _logger = logger; Reader = new BoltReader(_tcpSocketClient.ReadStream, _bufferSettings.DefaultReadBufferSize, _bufferSettings.MaxReadBufferSize, _logger, BoltProtocolPackStream.V2); Writer = new BoltWriter(_tcpSocketClient.WriteStream, _bufferSettings.DefaultWriteBufferSize, _bufferSettings.MaxWriteBufferSize, _logger, BoltProtocolPackStream.V2); }
public virtual IMessageWriter NewWriter(Stream writeStream, BufferSettings bufferSettings, IDriverLogger logger = null, bool byteArraySupportEnabled = true) { var messageFormat = BoltProtocolMessageFormat.V1; if (!byteArraySupportEnabled) { messageFormat = BoltProtocolMessageFormat.V1NoByteArray; } return(new MessageWriter(writeStream, bufferSettings.DefaultWriteBufferSize, bufferSettings.MaxWriteBufferSize, logger, messageFormat)); }
/// <summary> /// Returns a driver for a Neo4j instance with custom configuration. /// </summary> /// <param name="uri"> /// The URI to the Neo4j instance. Should be in the form /// <c>bolt://<server location>:<port></c>. If <c>port</c> is not supplied the default of <c>7687</c> will /// be used.</param> /// <param name="authToken">Authentication to use, <see cref="AuthTokens" />.</param> /// <param name="config"> /// Configuration for the driver instance to use, if <c>null</c> <see cref="Config.DefaultConfig" /> /// is used. /// </param> /// <returns>A new driver to the database instance specified by the <paramref name="uri"/>.</returns> public static IDriver Driver(Uri uri, IAuthToken authToken, Config config) { Throw.ArgumentNullException.IfNull(uri, nameof(uri)); Throw.ArgumentNullException.IfNull(authToken, nameof(authToken)); config = config ?? Config.DefaultConfig; var connectionSettings = new ConnectionSettings(authToken, config); var bufferSettings = new BufferSettings(config); var connectionFactory = new PooledConnectionFactory(connectionSettings, bufferSettings, config.Logger); return(CreateDriver(uri, config, connectionFactory)); }
public SocketConnection(Uri uri, ConnectionSettings connectionSettings, BufferSettings bufferSettings, ILogger logger = null) { _idPrefix = $"conn-{uri.Host}:{uri.Port}-"; _id = $"{_idPrefix}{UniqueIdGenerator.GetId()}"; _logger = new PrefixLogger(logger, FormatPrefix(_id)); _client = new SocketClient(uri, connectionSettings.SocketSettings, bufferSettings, _logger); _authToken = connectionSettings.AuthToken; _userAgent = connectionSettings.UserAgent; Server = new ServerInfo(uri); _responsePipeline = new ResponsePipeline(_logger); }
/// <summary> /// Returns a driver for a Neo4j instance with custom configuration. /// </summary> /// <param name="uri"> /// The URI to the Neo4j instance. Should be in the form /// <c>neo4j://<server location>:<port></c>. /// If <c>port</c> is not supplied the default of <c>7687</c> will be used.</param> /// <param name="authToken">Authentication to use, <see cref="AuthTokens" />.</param> /// <param name="action"> /// Defines how to build a driver configuration <see cref="Config"/> using <see cref="ConfigBuilder"/>. /// If set to <c>null</c>, then no modification will be carried out on the build. /// As a result, a default config with default settings will be used <see cref="Config" /> when creating the new driver. /// </param> /// <returns>A new driver to the database instance specified by the <paramref name="uri"/>.</returns> public static IDriver Driver(Uri uri, IAuthToken authToken, Action <ConfigBuilder> action) { Throw.ArgumentNullException.IfNull(uri, nameof(uri)); Throw.ArgumentNullException.IfNull(authToken, nameof(authToken)); var config = ConfigBuilders.BuildConfig(action); var connectionSettings = new ConnectionSettings(uri, authToken, config); var bufferSettings = new BufferSettings(config); var connectionFactory = new PooledConnectionFactory(connectionSettings, bufferSettings, config.Logger); return(CreateDriver(uri, config, connectionFactory)); }
public SocketConnection(Uri uri, ConnectionSettings connectionSettings, BufferSettings bufferSettings, IConnectionListener metricsListener = null, IDriverLogger logger = null) { _id = $"conn-{UniqueIdGenerator.GetId()}"; _logger = new PrefixLogger(logger, FormatPrefix(_id)); _client = new SocketClient(uri, connectionSettings.SocketSettings, bufferSettings, metricsListener, _logger); _authToken = connectionSettings.AuthToken; _userAgent = connectionSettings.UserAgent; Server = new ServerInfo(uri); _responseHandler = new MessageResponseHandler(_logger); }
public SocketClient(Uri uri, SocketSettings socketSettings, BufferSettings bufferSettings, IConnectionListener connMetricsListener = null, ILogger logger = null, ITcpSocketClient socketClient = null) { _uri = uri; _logger = logger; _bufferSettings = bufferSettings; _tcpSocketClient = socketClient ?? new TcpSocketClient(socketSettings, _logger); _connMetricsListener = connMetricsListener; if (_connMetricsListener != null) { _connEvent = new SimpleTimerEvent(); } }
public async void ShouldThrowIOExceptionIfFailedToReadOnHandshakeAsync() { var bufferSettings = new BufferSettings(Config.Default); var connMock = new Mock <ITcpSocketClient>(); TcpSocketClientTestSetup.CreateReadStreamMock(connMock); TcpSocketClientTestSetup.CreateWriteStreamMock(connMock); var client = new SocketClient(FakeUri, null, bufferSettings, socketClient: connMock.Object); var ex = await Record.ExceptionAsync(() => client.ConnectAsync(new Dictionary <string, string>())); ex.Should().NotBeNull().And.BeOfType <IOException>(); }
public async Task ShouldConnectServerAsync() { var bufferSettings = new BufferSettings(Config.DefaultConfig); var connMock = new Mock <ITcpSocketClient>(); TcpSocketClientTestSetup.CreateReadStreamMock(connMock, new byte[] { 0, 0, 0, 1 }); TcpSocketClientTestSetup.CreateWriteStreamMock(connMock); var client = new SocketClient(FakeUri, null, bufferSettings, socketClient: connMock.Object); await client.StartAsync(); // Then connMock.Verify(x => x.ConnectAsync(FakeUri), Times.Once); }
public async Task ShouldConnectServerAsync() { var bufferSettings = new BufferSettings(Config.Default); var version = new BoltProtocolVersion(4, 1); var connMock = new Mock <ITcpSocketClient>(); TcpSocketClientTestSetup.CreateReadStreamMock(connMock, PackStreamBitConverter.GetBytes(version.PackToInt())); TcpSocketClientTestSetup.CreateWriteStreamMock(connMock); PackStreamBitConverter.GetBytes((int)0x14); var client = new SocketClient(FakeUri, null, bufferSettings, socketClient: connMock.Object); await client.ConnectAsync(new Dictionary <string, string>()); // Then connMock.Verify(x => x.ConnectAsync(FakeUri), Times.Once); }
private (IDriver, ConcurrentQueue<IPooledConnection>) SetupMonitoredDriver() { var configBuilder = Config.Builder .WithMetricsEnabled(true) .WithConnectionAcquisitionTimeout(TimeSpan.FromMinutes(5)) .WithConnectionTimeout(Config.InfiniteInterval) .WithMaxConnectionPoolSize(100) .WithLogger(new StressTestLogger(_output, LoggingEnabled)); _configure?.Invoke(configBuilder); var config = configBuilder.Build(); var connectionSettings = new ConnectionSettings(_databaseUri, _authToken, config); var bufferSettings = new BufferSettings(config); var connectionFactory = new MonitoredPooledConnectionFactory( new PooledConnectionFactory(connectionSettings, bufferSettings, config.Logger)); return ((Internal.Driver) GraphDatabase.CreateDriver(_databaseUri, config, connectionFactory), connectionFactory.Connections); }
private (IDriver, ConcurrentQueue <IPooledConnection>) SetupMonitoredDriver() { var config = new Config { MetricsEnabled = true, ConnectionAcquisitionTimeout = TimeSpan.FromMinutes(5), ConnectionTimeout = Config.InfiniteInterval, MaxConnectionPoolSize = 100, Logger = new StressTestLogger(_output, LoggingEnabled) }; var connectionSettings = new ConnectionSettings(_authToken, config); var bufferSettings = new BufferSettings(config); var connectionFactory = new MonitoredPooledConnectionFactory( new PooledConnectionFactory(connectionSettings, bufferSettings, config.Logger)); return((Internal.Driver)GraphDatabase.CreateDriver(_databaseUri, config, connectionFactory), connectionFactory.Connections); }
private void SetupMonitoredDriver() { var config = new Config { MetricsFactory = new DefaultMetricsFactory(), ConnectionAcquisitionTimeout = TimeSpan.FromMinutes(5), ConnectionTimeout = Config.InfiniteInterval, MaxConnectionPoolSize = 100, DriverLogger = new TestDriverLogger(Output) }; var connectionSettings = new ConnectionSettings(AuthToken, config); var bufferSettings = new BufferSettings(config); var connectionFactory = new MonitoredPooledConnectionFactory( new PooledConnectionFactory(connectionSettings, bufferSettings, config.DriverLogger)); _driver = (Internal.Driver)GraphDatabase.CreateDriver(new Uri(RoutingServer), config, connectionFactory); _connections = connectionFactory.Connections; _metrics = _driver.GetMetrics(); }
public SocketConnection(Uri uri, ConnectionSettings connectionSettings, BufferSettings bufferSettings, IConnectionListener metricsListener = null, ILogger logger = null) : this(new SocketClient(uri, connectionSettings.SocketSettings, bufferSettings, metricsListener, logger), connectionSettings.AuthToken, connectionSettings.UserAgent, logger, new ServerInfo(uri)) { }
public override IMessageReader NewReader(Stream stream, BufferSettings bufferSettings, ILogger logger = null) { return(new MessageReader(stream, bufferSettings.DefaultReadBufferSize, bufferSettings.MaxReadBufferSize, logger, BoltProtocolMessageFormat.V4)); }
public override IMessageWriter NewWriter(Stream writeStream, BufferSettings bufferSettings, ILogger logger = null) { return(new MessageWriter(writeStream, bufferSettings.DefaultWriteBufferSize, bufferSettings.MaxWriteBufferSize, logger, BoltProtocolMessageFormat.V4)); }
public ExportSettings(BufferSettings bufferSettings) { Buffer = bufferSettings; }
public IMessageReader NewReader(Stream stream, BufferSettings bufferSettings, IDriverLogger logger = null, bool ignored = true) { return(new MessageReader(stream, bufferSettings.DefaultReadBufferSize, bufferSettings.MaxReadBufferSize, logger, BoltProtocolMessageFormat.V3)); }
public IMessageWriter NewWriter(Stream writeStream, BufferSettings bufferSettings, IDriverLogger logger = null, bool ignored = true) { return(new MessageWriter(writeStream, bufferSettings.DefaultWriteBufferSize, bufferSettings.MaxWriteBufferSize, logger, BoltProtocolMessageFormat.V3)); }
public virtual IMessageWriter NewWriter(Stream writeStream, BufferSettings bufferSettings, ILogger logger = null) { return(new MessageWriter(writeStream, bufferSettings.DefaultWriteBufferSize, bufferSettings.MaxWriteBufferSize, logger, MessageFormat)); }
public virtual IMessageReader NewReader(Stream stream, BufferSettings bufferSettings, ILogger logger = null) { return(new MessageReader(stream, bufferSettings.DefaultReadBufferSize, bufferSettings.MaxReadBufferSize, logger, MessageFormat)); }
public virtual IMessageReader NewReader(Stream stream, BufferSettings bufferSettings, IDriverLogger logger = null) { return(new MessageReader(stream, bufferSettings.DefaultReadBufferSize, bufferSettings.MaxReadBufferSize, logger, BoltProtocolMessageFormat.V1)); }
public static IBoltProtocol Create(int version, ITcpSocketClient tcpSocketClient, BufferSettings bufferSettings, ILogger logger = null) { switch (version) { case ProtocolVersion.Version1: return(new BoltProtocolV1(tcpSocketClient, bufferSettings, logger)); case ProtocolVersion.NoVersion: throw new NotSupportedException( "The Neo4j server does not support any of the protocol versions supported by this client. " + "Ensure that you are using driver and server versions that are compatible with one another."); case ProtocolVersion.Http: throw new NotSupportedException( "Server responded HTTP. Make sure you are not trying to connect to the http endpoint " + $"(HTTP defaults to port 7474 whereas BOLT defaults to port {GraphDatabase.DefaultBoltPort})"); default: throw new NotSupportedException( "Protocol error, server suggested unexpected protocol version: " + version); } }