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;
}