<div dir="ltr"><div><div><div><div><div><div><div><div><div>Hi all,<br></div> the attached patch does:<br></div>- EnumIterator, which now uses autoconf to detect std::underlying_type<br></div>- Removes header masks in HttpHeader.cc and HttpReply in favor of..<br></div>- gperf-generated header table with flags describing headers all collected in one place<br></div>- replaces HttpHeader::getEntry with explicit vector iteration<br></div>- Implements and uses Http::HeaderTable.lookup(string-or-Http::HdrType) to look up headers in the gperf-generated hash<br></div>- small optimizationi in HttpHeader::getLastEntry thanks to reverse iterators<br clear="all">- use erase-remove pattern in HttpHeader::compact in place of resize()<br></div>- use std:: algorithms instead of explicit loop in HttpHeader::delById<br></div><div>- gets rid of httpHeaderCalcMask - masks are still used elsewhere but generating them is now easier thanks to WholeEnum<type><br></div><div>- some readability improvements<br></div><div>- refactor HeaderManglers::track to avoid overloading of meaning the enumEnd_ enumerator - please help me checking carefully I haven't altered functionality here<br></div><div>- implements a case-insensitve hash function for SBuf<br></div><div>- all known headers are now unconditionally parsed. May not be acted upon if some functions are not compiled in<br></div><div>- LookupTable now uses an unordered_map instead of map for backing storage. No user-visible change for SBuf and std::string users unless they wish to have a custom hasher<br><br></div><div>Most code has been run-tested (most notable exception: HeaderManglers), farm-build-, coadvisor- and polygraph- tested. The main focus of this refactoring is correctness and readability, c++11-ification and recovering from the performance regression that was introduced ~10 days ago.<br></div><br><div><div><div><div><div><div><div><div><div><div><div><div>-- <br><div class="gmail_signature"> Francesco</div>
</div></div></div></div></div></div></div></div></div></div></div></div></div>