module hunt.http.codec.http.encode.HeaderGenerator;

import hunt.io.ByteBuffer;
import hunt.io.BufferUtils;

import hunt.http.codec.http.frame.Frame;
import hunt.http.codec.http.frame.FrameType;

class HeaderGenerator {
	private int maxFrameSize = Frame.DEFAULT_MAX_LENGTH;
	
	ByteBuffer generate(FrameType frameType, int capacity, int length, int flags, int streamId) {
		ByteBuffer header = BufferUtils.allocate(capacity);
		header.put(cast(byte)((length & 0x00_FF_00_00) >>> 16));
        header.put(cast(byte)((length & 0x00_00_FF_00) >>> 8));
        header.put(cast(byte)((length & 0x00_00_00_FF)));
        header.put(cast(byte)frameType);
        header.put(cast(byte)flags);
        header.put!int(streamId);
        return header;
	}

	int getMaxFrameSize() {
		return maxFrameSize;
	}

	void setMaxFrameSize(int maxFrameSize) {
		this.maxFrameSize = maxFrameSize;
	}
	
}