@Override protected boolean onSettings(ByteBuffer buffer, Map<Integer, Integer> settings) { frameRef.set(new SettingsFrame(settings, false)); return true; }
@Override protected boolean onSettings(ByteBuffer buffer, Map<Integer, Integer> settings) { frameRef.set(new SettingsFrame(settings, false)); return true; }
protected boolean onSettings(ByteBuffer buffer, Map<Integer, Integer> settings) frameRef.set(new SettingsFrame(settings, false)); return true;
protected boolean onSettings(ByteBuffer buffer, Map<Integer, Integer> settings) frameRef.set(new SettingsFrame(settings, false)); return true;
protected boolean onSettings(ByteBuffer buffer, Map<Integer, Integer> settings) { Integer enablePush = settings.get(SettingsFrame.ENABLE_PUSH); if (enablePush != null && enablePush != 0 && enablePush != 1) return connectionFailure(buffer, ErrorCode.PROTOCOL_ERROR.code, "invalid_settings_enable_push"); Integer initialWindowSize = settings.get(SettingsFrame.INITIAL_WINDOW_SIZE); // Values greater than Integer.MAX_VALUE will overflow to negative. if (initialWindowSize != null && initialWindowSize < 0) return connectionFailure(buffer, ErrorCode.FLOW_CONTROL_ERROR.code, "invalid_settings_initial_window_size"); Integer maxFrameLength = settings.get(SettingsFrame.MAX_FRAME_SIZE); if (maxFrameLength != null && (maxFrameLength < Frame.DEFAULT_MAX_LENGTH || maxFrameLength > Frame.MAX_MAX_LENGTH)) return connectionFailure(buffer, ErrorCode.PROTOCOL_ERROR.code, "invalid_settings_max_frame_size"); SettingsFrame frame = new SettingsFrame(settings, hasFlag(Flags.ACK)); reset(); notifySettings(frame); return true; }
protected boolean onSettings(ByteBuffer buffer, Map<Integer, Integer> settings) { Integer enablePush = settings.get(SettingsFrame.ENABLE_PUSH); if (enablePush != null && enablePush != 0 && enablePush != 1) return connectionFailure(buffer, ErrorCode.PROTOCOL_ERROR.code, "invalid_settings_enable_push"); Integer initialWindowSize = settings.get(SettingsFrame.INITIAL_WINDOW_SIZE); // Values greater than Integer.MAX_VALUE will overflow to negative. if (initialWindowSize != null && initialWindowSize < 0) return connectionFailure(buffer, ErrorCode.FLOW_CONTROL_ERROR.code, "invalid_settings_initial_window_size"); Integer maxFrameLength = settings.get(SettingsFrame.MAX_FRAME_SIZE); if (maxFrameLength != null && (maxFrameLength < Frame.DEFAULT_MAX_LENGTH || maxFrameLength > Frame.MAX_MAX_LENGTH)) return connectionFailure(buffer, ErrorCode.PROTOCOL_ERROR.code, "invalid_settings_max_frame_size"); SettingsFrame frame = new SettingsFrame(settings, hasFlag(Flags.ACK)); reset(); notifySettings(frame); return true; }
@Override public void onPreface() { // SPEC: send a SETTINGS frame upon receiving the preface. Map<Integer, Integer> settings = notifyPreface(this); if (settings == null) settings = Collections.emptyMap(); SettingsFrame settingsFrame = new SettingsFrame(settings, false); WindowUpdateFrame windowFrame = null; int sessionWindow = getInitialSessionRecvWindow() - FlowControlStrategy.DEFAULT_WINDOW_SIZE; if (sessionWindow > 0) { updateRecvWindow(sessionWindow); windowFrame = new WindowUpdateFrame(0, sessionWindow); } if (windowFrame == null) frames(null, Callback.NOOP, settingsFrame, Frame.EMPTY_ARRAY); else frames(null, Callback.NOOP, settingsFrame, windowFrame); }
@Override public void onOpen() { Map<Integer, Integer> settings = listener.onPreface(getSession()); if (settings == null) settings = new HashMap<>(); settings.computeIfAbsent(SettingsFrame.INITIAL_WINDOW_SIZE, k -> client.getInitialStreamRecvWindow()); settings.computeIfAbsent(SettingsFrame.MAX_CONCURRENT_STREAMS, k -> client.getMaxConcurrentPushedStreams()); Integer maxFrameLength = settings.get(SettingsFrame.MAX_FRAME_SIZE); if (maxFrameLength != null) getParser().setMaxFrameLength(maxFrameLength); PrefaceFrame prefaceFrame = new PrefaceFrame(); SettingsFrame settingsFrame = new SettingsFrame(settings, false); ISession session = getSession(); int windowDelta = client.getInitialSessionRecvWindow() - FlowControlStrategy.DEFAULT_WINDOW_SIZE; if (windowDelta > 0) { session.updateRecvWindow(windowDelta); session.frames(null, this, prefaceFrame, settingsFrame, new WindowUpdateFrame(0, windowDelta)); } else { session.frames(null, this, prefaceFrame, settingsFrame); } }
SettingsFrame replyFrame = new SettingsFrame(Collections.emptyMap(), true); settings(replyFrame, Callback.NOOP);
SettingsFrame replyFrame = new SettingsFrame(Collections.emptyMap(), true); settings(replyFrame, Callback.NOOP);