public ByteBuffer encodeSettingsFrame()

in src/main/java/com/twitter/whiskey/net/SpdyFrameEncoder.java [116:140]


    public ByteBuffer encodeSettingsFrame(SpdySettings spdySettings) {
        Set<Integer> ids = spdySettings.ids();
        int numSettings = ids.size();

        byte flags = spdySettings.clearPreviouslyPersistedSettings() ?
                SPDY_SETTINGS_CLEAR : 0;
        int length = 4 + 8 * numSettings;
        ByteBuffer frame = ByteBuffer.allocateDirect(SPDY_HEADER_SIZE + length).order(ByteOrder.BIG_ENDIAN);
        writeControlFrameHeader(frame, SPDY_SETTINGS_FRAME, flags, length);
        frame.putInt(numSettings);
        for (Integer id : ids) {
            flags = 0;
            if (spdySettings.isPersistValue(id)) {
                flags |= SPDY_SETTINGS_PERSIST_VALUE;
            }
            if (spdySettings.isPersisted(id)) {
                flags |= SPDY_SETTINGS_PERSISTED;
            }
            frame.put(flags);
            writeMedium(frame, id);
            frame.putInt(spdySettings.getValue(id));
        }
        frame.flip();
        return frame;
    }