func WriteHeaders(w io.Writer, headers map[string]string) error {
	// TODO(prashant): Since we are not writing length-prefixed data here,
	// we can write out to the buffer, and if it fills up, flush it.
	// Right now, we calculate the size of the required buffer and write it out.

	// Calculate the size of the buffer that we need.
	size := 2
	for k, v := range headers {
		size += 4 /* size of key/value lengths */
		size += len(k) + len(v)
	}

	buf := make([]byte, size)
	writeBuffer := typed.NewWriteBuffer(buf)
	writeBuffer.WriteUint16(uint16(len(headers)))
	for k, v := range headers {
		writeBuffer.WriteLen16String(k)
		writeBuffer.WriteLen16String(v)
	}

	if err := writeBuffer.Err(); err != nil {
		return err
	}

	// Safety check to ensure the bytes written calculation is correct.
	if writeBuffer.BytesWritten() != size {
		return fmt.Errorf(
			"writeHeaders size calculation wrong, expected to write %v bytes, only wrote %v bytes",
			size, writeBuffer.BytesWritten())
	}

	_, err := writeBuffer.FlushTo(w)
	return err
}
func WriteHeaders(w io.Writer, headers map[string]string) error {
	
	
	

	
	size := 2
	for k, v := range headers {
		size += 4 
		size += len(k) + len(v)
	}

	buf := make([]byte, size)
	writeBuffer := typed.NewWriteBuffer(buf)
	writeBuffer.WriteUint16(uint16(len(headers)))
	for k, v := range headers {
		writeBuffer.WriteLen16String(k)
		writeBuffer.WriteLen16String(v)
	}

	if err := writeBuffer.Err(); err != nil {
		return err
	}

	
	if writeBuffer.BytesWritten() != size {
		return fmt.Errorf(
			"writeHeaders size calculation wrong, expected to write %v bytes, only wrote %v bytes",
			size, writeBuffer.BytesWritten())
	}

	_, err := writeBuffer.FlushTo(w)
	return err
}
func WriteHeaders ( w io . Writer , headers map [ string ] string ) error { // TODO(prashant): Since we are not writing length-prefixed data here, // we can write out to the buffer, and if it fills up, flush it. // Right now, we calculate the size of the required buffer and write it out. // Calculate the size of the buffer that we need. size := 2 for k , v := range headers { size += 4 /* size of key/value lengths */ size += len ( k ) + len ( v ) } buf := make ( [ ] byte , size ) writeBuffer := typed . NewWriteBuffer ( buf ) writeBuffer . WriteUint16 ( uint16 ( len ( headers ) ) ) for k , v := range headers { writeBuffer . WriteLen16String ( k ) writeBuffer . WriteLen16String ( v ) } if err := writeBuffer . Err ( ) ; err != nil { return err } // Safety check to ensure the bytes written calculation is correct. if writeBuffer . BytesWritten ( ) != size { return fmt . Errorf ( " " , size , writeBuffer . BytesWritten ( ) ) } _ , err := writeBuffer . FlushTo ( w ) return err }
// WriteHeaders writes the given key-value pairs using the following encoding:
// len~2 (k~4 v~4)~len
WriteHeaders writes the given key - value pairs using the following encoding : len~2 ( k~4 v~4 ) ~len