package com.webpieces.hpack.impl;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import com.twitter.hpack.Decoder;
import com.webpieces.hpack.api.UnmarshalState;
import com.webpieces.http2parser.api.Http2Memento;
import com.webpieces.http2parser.api.dto.lib.HasHeaderFragment;
import com.webpieces.http2parser.api.dto.lib.Http2Msg;
public class UnmarshalStateImpl implements UnmarshalState {
private HeaderDecoding decoding;
private Decoder decoder;
private Http2Memento lowLevelState;
private List<HasHeaderFragment> headersToCombine = new LinkedList<>();
private List<Http2Msg> parsedFrames = new ArrayList<>();
public UnmarshalStateImpl(Http2Memento lowLevelState, HeaderDecoding decoding, Decoder decoder) {
this.lowLevelState = lowLevelState;
this.decoding = decoding;
this.decoder = decoder;
}
@Override
public List<Http2Msg> getParsedFrames() {
return parsedFrames;
}
@Override
public int getLeftOverDataSize() {
return lowLevelState.getLeftOverData().getReadableSize();
}
public Http2Memento getLowLevelState() {
return lowLevelState;
}
public List<HasHeaderFragment> getHeadersToCombine() {
return headersToCombine;
}
public Decoder getDecoder() {
return decoder;
}
@Override
public void setDecoderMaxTableSize(int newSize) {
decoding.setMaxHeaderTableSize(decoder, newSize);
}
@Override
public void setIncomingMaxFrameSize(long maxFrameSize) {
lowLevelState.setIncomingMaxFrameSize(maxFrameSize);
}
public void clearParsedFrames() {
parsedFrames = new ArrayList<>();
}
}