public override void Handle(ModifierProtocolRequest modifierProtocolRequest) { EnsureMagic(); ModifierProtocolResponse response; Optional <Protocol_ModifierProtocol> selected = _modifierProtocolRepository.select(modifierProtocolRequest.ProtocolName(), SupportedVersionsFor(modifierProtocolRequest)); if (selected.Present) { Protocol_ModifierProtocol modifierProtocol = selected.get(); _protocolStackBuilder.modifier(modifierProtocol); response = new ModifierProtocolResponse(SUCCESS, modifierProtocol.category(), modifierProtocol.implementation()); } else { response = ModifierProtocolResponse.Failure(modifierProtocolRequest.ProtocolName()); } _channel.writeAndFlush(response); }
private ISet <string> SupportedVersionsFor(ModifierProtocolRequest request) { return(_modifierProtocolRepository.supportedProtocolFor(request.ProtocolName()).map(supported => supported.mutuallySupportedVersionsFor(request.Versions())).orElse(Collections.emptySet())); }