예제 #1
0
        private void SendProtocolRequests(Channel channel, ApplicationSupportedProtocols applicationProtocols, ICollection <ModifierSupportedProtocols> supportedModifierProtocols)
        {
            supportedModifierProtocols.forEach(modifierProtocol =>
            {
                ProtocolSelection <string, ModifierProtocol> protocolSelection = _modifierProtocolRepository.getAll(modifierProtocol.identifier(), modifierProtocol.versions());
                channel.Write(new ModifierProtocolRequest(protocolSelection.Identifier(), protocolSelection.Versions()));
            });

            ProtocolSelection <int, Protocol_ApplicationProtocol> applicationProtocolSelection = _applicationProtocolRepository.getAll(applicationProtocols.Identifier(), applicationProtocols.Versions());

            channel.WriteAndFlush(new ApplicationProtocolRequest(applicationProtocolSelection.Identifier(), applicationProtocolSelection.Versions()));
        }
예제 #2
0
        public override void Handle(ApplicationProtocolResponse applicationProtocolResponse)
        {
            EnsureMagic();
            if (applicationProtocolResponse.StatusCode() != SUCCESS)
            {
                Decline("Unsuccessful application protocol response");
                return;
            }

            Optional <Protocol_ApplicationProtocol> protocol = _applicationProtocolRepository.select(applicationProtocolResponse.ProtocolName(), applicationProtocolResponse.Version());

            if (!protocol.Present)
            {
                ProtocolSelection <int, Protocol_ApplicationProtocol> knownApplicationProtocolVersions = _applicationProtocolRepository.getAll(_supportedApplicationProtocol.identifier(), _supportedApplicationProtocol.versions());
                Decline(string.Format("Mismatch of application protocols between client and server: Server protocol {0} version {1:D}: Client protocol {2} versions {3}", applicationProtocolResponse.ProtocolName(), applicationProtocolResponse.Version(), knownApplicationProtocolVersions.Identifier(), knownApplicationProtocolVersions.Versions()));
            }
            else
            {
                _negotiatedApplicationProtocol = protocol.get();

                SendSwitchOverRequestIfReady();
            }
        }
예제 #3
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldIncludeProtocolsInSelectionWithVersionsLimitedByThoseExisting()
        public virtual void ShouldIncludeProtocolsInSelectionWithVersionsLimitedByThoseExisting()
        {
            // given
            int?[]      expectedRaftVersions   = TestProtocols_TestApplicationProtocols.allVersionsOf(RAFT);
            IList <int> configuredRaftVersions = Stream.concat(Stream.of(expectedRaftVersions), Stream.of(int.MaxValue)).collect(Collectors.toList());

            // when
            ProtocolSelection <int, Org.Neo4j.causalclustering.protocol.Protocol_ApplicationProtocol> protocolSelection = _applicationProtocolRepository.getAll(RAFT, configuredRaftVersions);

            // then
            assertThat(protocolSelection.Versions(), Matchers.containsInAnyOrder(expectedRaftVersions));
        }
예제 #4
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldIncludeProtocolsInSelectionWithVersionsLimitedByThoseConfigured()
        public virtual void ShouldIncludeProtocolsInSelectionWithVersionsLimitedByThoseConfigured()
        {
            // given
            int?[] expectedRaftVersions = new int?[] { 1 };

            // when
            ProtocolSelection <int, Org.Neo4j.causalclustering.protocol.Protocol_ApplicationProtocol> protocolSelection = _applicationProtocolRepository.getAll(RAFT, asList(expectedRaftVersions));

            // then
            assertThat(protocolSelection.Versions(), Matchers.containsInAnyOrder(expectedRaftVersions));
        }
예제 #5
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldIncludeAllProtocolsInSelectionIfEmptyVersionsProvided()
        public virtual void ShouldIncludeAllProtocolsInSelectionIfEmptyVersionsProvided()
        {
            // when
            ProtocolSelection <int, Org.Neo4j.causalclustering.protocol.Protocol_ApplicationProtocol> protocolSelection = _applicationProtocolRepository.getAll(RAFT, emptyList());

            // then
            int?[] expectedRaftVersions = TestProtocols_TestApplicationProtocols.allVersionsOf(RAFT);
            assertThat(protocolSelection.Versions(), Matchers.containsInAnyOrder(expectedRaftVersions));
        }