package com.webpieces.http2parser.api.dto; import java.util.ArrayList; import java.util.List; import com.webpieces.http2parser.api.dto.lib.AbstractHttp2Frame; import com.webpieces.http2parser.api.dto.lib.Http2FrameType; import com.webpieces.http2parser.api.dto.lib.Http2Msg; import com.webpieces.http2parser.api.dto.lib.Http2MsgType; import com.webpieces.http2parser.api.dto.lib.Http2Setting; public class SettingsFrame extends AbstractHttp2Frame implements Http2Msg { /* flags */ private boolean ack = false; /* 0x1 */ /* payload */ // id 16bits // value 32bits //settings in the spec are ordered and are supposed to be applied in-order. //above this layer we apply them all at one time but others could apply them in-order private List<Http2Setting> settings = new ArrayList<Http2Setting>(); public SettingsFrame() { } public SettingsFrame(boolean ack) { this.ack = ack; } public boolean isAck() { return ack; } public void setAck(boolean ack) { this.ack = ack; } public void addSetting(Http2Setting setting) { settings.add(setting); } public List<Http2Setting> getSettings() { return settings; } public void setSettings(List<Http2Setting> settings2) { this.settings = settings2; } @Override public Http2FrameType getFrameType() { return Http2FrameType.SETTINGS; } @Override public Http2MsgType getMessageType() { return Http2MsgType.SETTINGS; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + (ack ? 1231 : 1237); result = prime * result + ((settings == null) ? 0 : settings.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; SettingsFrame other = (SettingsFrame) obj; if (ack != other.ack) return false; if (settings == null) { if (other.settings != null) return false; } else if (!settings.equals(other.settings)) return false; return true; } @Override public String toString() { return "SettingsFrame{" + super.toString() + ", ack=" + ack + ", settings=" + settings +"} "; } }