Пример #1
0
        public override void Handle(ApplicationProtocolRequest request)
        {
            EnsureMagic();

            ApplicationProtocolResponse response;

            if (!request.ProtocolName().Equals(_supportedApplicationProtocol.identifier().canonicalName()))
            {
                response = ApplicationProtocolResponse.NoProtocol;
                _channel.writeAndFlush(response);
                Decline(string.Format("Requested protocol {0} not supported", request.ProtocolName()));
            }
            else
            {
                Optional <Protocol_ApplicationProtocol> selected = _applicationProtocolRepository.select(request.ProtocolName(), SupportedVersionsFor(request));

                if (selected.Present)
                {
                    Protocol_ApplicationProtocol selectedProtocol = selected.get();
                    _protocolStackBuilder.application(selectedProtocol);
                    response = new ApplicationProtocolResponse(SUCCESS, selectedProtocol.category(), selectedProtocol.implementation());
                    _channel.writeAndFlush(response);
                }
                else
                {
                    response = ApplicationProtocolResponse.NoProtocol;
                    _channel.writeAndFlush(response);
                    Decline(string.Format("Do not support requested protocol {0} versions {1}", request.ProtocolName(), request.Versions()));
                }
            }
        }
Пример #2
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: protected void decode(io.netty.channel.ChannelHandlerContext ctx, io.netty.buffer.ByteBuf in, java.util.List<Object> out) throws ClientHandshakeException
        protected internal override void Decode(ChannelHandlerContext ctx, ByteBuf @in, IList <object> @out)
        {
            int messageCode = @in.readInt();

            switch (messageCode)
            {
            case InitialMagicMessage.MESSAGE_CODE:
            {
                string magic = StringMarshal.unmarshal(@in);
                @out.Add(new InitialMagicMessage(magic));
                return;
            }

            case 0:
            {
//JAVA TO C# CONVERTER TODO TASK: Method reference constructor syntax is not converted by Java to C# Converter:
                ApplicationProtocolResponse applicationProtocolResponse = DecodeProtocolResponse(ApplicationProtocolResponse::new, ByteBuf.readInt, @in);

                @out.Add(applicationProtocolResponse);
                return;
            }

            case 1:
            {
//JAVA TO C# CONVERTER TODO TASK: Method reference constructor syntax is not converted by Java to C# Converter:
                ModifierProtocolResponse modifierProtocolResponse = DecodeProtocolResponse(ModifierProtocolResponse::new, StringMarshal.unmarshal, @in);

                @out.Add(modifierProtocolResponse);
                return;
            }

            case 2:
            {
                int statusCodeValue = @in.readInt();
                Optional <StatusCode> statusCode = StatusCode.fromCodeValue(statusCodeValue);
                if (statusCode.Present)
                {
                    @out.Add(new SwitchOverResponse(statusCode.get()));
                }
                else
                {
                    // TODO
                }
                return;
            }

            default:
                // TODO
                return;
            }
        }
Пример #3
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();
            }
        }
Пример #4
0
 public override void Handle(ApplicationProtocolResponse applicationProtocolResponse)
 {
     Out.writeInt(0);
     EncodeProtocolResponse(applicationProtocolResponse, ByteBuf.writeInt);
 }