private void reset() { settings.clear(); state = State.COUNT; cursor = 0; count = 0; idAndFlags = 0; value = 0; }
public Settings(Settings original, boolean immutable) { Map<ID, Settings.Setting> copy = new HashMap<>(original.size()); copy.putAll(original.settings); settings = immutable ? Collections.unmodifiableMap(copy) : copy; }
private void onSettings() { SettingsFrame frame = new SettingsFrame(controlFrameParser.getVersion(), controlFrameParser.getFlags(), new Settings(settings, true)); controlFrameParser.onControlFrame(frame); reset(); }
private void onSettings(SettingsFrame frame) { Settings.Setting windowSizeSetting = frame.getSettings().get(Settings.ID.INITIAL_WINDOW_SIZE); if (windowSizeSetting != null) { int windowSize = windowSizeSetting.value(); setWindowSize(windowSize); if (LOG.isDebugEnabled()) LOG.debug("Updated session window size to {}", windowSize); } Settings.Setting maxConcurrentStreamsSetting = frame.getSettings().get(Settings.ID.MAX_CONCURRENT_STREAMS); if (maxConcurrentStreamsSetting != null) { int maxConcurrentStreamsValue = maxConcurrentStreamsSetting.value(); maxConcurrentLocalStreams = maxConcurrentStreamsValue; if (LOG.isDebugEnabled()) LOG.debug("Updated session maxConcurrentLocalStreams to {}", maxConcurrentStreamsValue); } SettingsInfo settingsInfo = new SettingsInfo(frame.getSettings(), frame.isClearPersisted()); notifyOnSettings(listener, settingsInfo); }
@Override public ByteBuffer generate(ControlFrame frame) { SettingsFrame settingsFrame = (SettingsFrame)frame; Settings settings = settingsFrame.getSettings(); int size = settings.size(); int frameBodyLength = 4 + 8 * size; int totalLength = ControlFrame.HEADER_LENGTH + frameBodyLength; ByteBuffer buffer = getByteBufferPool().acquire(totalLength, Generator.useDirectBuffers); BufferUtil.clearToFill(buffer); generateControlFrameHeader(settingsFrame, frameBodyLength, buffer); buffer.putInt(size); for (Settings.Setting setting : settings) { int id = setting.id().code(); byte flags = setting.flag().code(); int idAndFlags = convertIdAndFlags(frame.getVersion(), id, flags); buffer.putInt(idAndFlags); buffer.putInt(setting.value()); } buffer.flip(); return buffer; }