public async Task Start() { await _tcpSocketClient.ConnectAsync(_url.Host, _url.Port, _config.EncryptionLevel == EncryptionLevel.Encrypted).ConfigureAwait(false); IsOpen = true; _config.Logger?.Debug($"~~ [CONNECT] {_url}"); var version = await DoHandshake().ConfigureAwait(false); switch (version) { case ProtocolVersion.Version1: _config.Logger?.Debug("S: [HANDSHAKE] 1"); var formatV1 = new PackStreamMessageFormatV1(_tcpSocketClient, _config.Logger); _writer = formatV1.Writer; _reader = formatV1.Reader; break; 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 7687)"); default: throw new NotSupportedException("Protocol error, server suggested unexpected protocol version: " + version); } }
private void SetupPackStreamFormatWriterAndReader(bool supportBytes = true) { var formatV1 = new PackStreamMessageFormatV1(_tcpSocketClient, _logger, supportBytes); _writer = formatV1.Writer; _reader = formatV1.Reader; }
public void PacksInitMessageCorrectly() { var mocks = new Mocks(); var writer = new PackStreamMessageFormatV1(mocks.TcpSocketClient, null).Writer; writer.Write(new InitMessage("a", new Dictionary <string, object>())); writer.Flush(); mocks.VerifyWrite(new byte[] { 0x00, 0x05, 0xB1, 0x01, 0x81, 0x61, 0xA0, 0x00, 0x00 }); }
public void PackRunMessageCorrectly() { var mocks = new Mocks(); var writer = new PackStreamMessageFormatV1(mocks.TcpSocketClient, null).Writer; writer.Write(new RunMessage("RETURN 1 AS num")); writer.Flush(); mocks.VerifyWrite( "00 13 b2 10 8f 52 45 54 55 52 4e 20 31 20 41 53 20 6e 75 6d a0 00 00".ToByteArray()); }
public void PackRunMessageWithStringParamCorrectly(string value, string expectedBytes) { var mocks = new Mocks(); var writer = new PackStreamMessageFormatV1(mocks.TcpSocketClient, null).Writer; var values = new Dictionary <string, object> { { "value", value } }; writer.Write(new RunMessage("", values)); writer.Flush(); mocks.VerifyWrite(expectedBytes.ToByteArray()); }
public void PackRunMessageWithIntegerParamCorrectly(long value, string expectedBytes) { var mocks = new Mocks(); var writer = new PackStreamMessageFormatV1(mocks.TcpSocketClient, new BigEndianTargetBitConverter(), null).Writer; var values = new Dictionary <string, object> { { "integer", value } }; writer.Write(new RunMessage("", values)); writer.Flush(); mocks.VerifyWrite(expectedBytes.ToByteArray()); }
public void PackRunMessageWithArrayParamCorrectly() { var value = new int[] { 1, 2 }; string expectedBytes = "00 0D B2 10 80 A1 85 76 61 6C 75 65 92 01 02 00 00"; var mocks = new Mocks(); var writer = new PackStreamMessageFormatV1(mocks.TcpSocketClient, null).Writer; var values = new Dictionary <string, object> { { "value", value } }; writer.Write(new RunMessage("", values)); writer.Flush(); mocks.VerifyWrite(expectedBytes.ToByteArray()); }
public void PackRunMessageWithArrayListParamCorrectly() { var value = new ArrayList(); string expectedBytes = "00 0B B2 10 80 A1 85 76 61 6C 75 65 90 00 00"; var mocks = new Mocks(); var writer = new PackStreamMessageFormatV1(mocks.TcpSocketClient, new BigEndianTargetBitConverter(), null).Writer; var values = new Dictionary <string, object> { { "value", value } }; writer.Write(new RunMessage("", values)); writer.Flush(); mocks.VerifyWrite(expectedBytes.ToByteArray()); }
public void PackRunMessageWithDictionaryMixedTypesParamCorrectly() { var value = new Dictionary <string, object> { { "key1", 1 }, { "key2", "a string value" } }; string expectedBytes = " 00 25 B2 10 80 A1 85 76 61 6C 75 65 A2 84 6B 65 79 31 01 84 6B 65 79 32 8E 61 20 73 74 72 69 6E 67 20 76 61 6C 75 65 00 00"; var mocks = new Mocks(); var writer = new PackStreamMessageFormatV1(mocks.TcpSocketClient, null).Writer; var values = new Dictionary <string, object> { { "value", value } }; writer.Write(new RunMessage("", values)); writer.Flush(); mocks.VerifyWrite(expectedBytes.ToByteArray()); }
public async Task Start() { await _tcpSocketClient.ConnectAsync(_url.Host, _url.Port, _config.EncryptionLevel == EncryptionLevel.Encrypted).ConfigureAwait(false); IsOpen = true; _config.Logger?.Debug($"~~ [CONNECT] {_url}"); var version = await DoHandshake().ConfigureAwait(false); if (version != 1) { throw new NotSupportedException("The Neo4j Server doesn't support this client."); } _config.Logger?.Debug("S: [HANDSHAKE] 1"); var formatV1 = new PackStreamMessageFormatV1(_tcpSocketClient, BitConverter, _config.Logger); _writer = formatV1.Writer; _reader = formatV1.Reader; }