Change QpackHeaderTable::observer_ type and swap RegisterObserver() argument order.

No functional change, prework for fixing a crasher.  The motivation for moving
away from std::priority is that it does not allow deletion of random elements.

gfe-relnote: n/a, change to QUIC v99-only code.  Protected by existing disabled gfe2_reloadable_flag_quic_enable_version_99.
PiperOrigin-RevId: 272559408
Change-Id: I3f18909201e218627eee3638249aea007b317cd1
diff --git a/quic/core/qpack/qpack_header_table.cc b/quic/core/qpack/qpack_header_table.cc
index bb28f72..30f15a5 100644
--- a/quic/core/qpack/qpack_header_table.cc
+++ b/quic/core/qpack/qpack_header_table.cc
@@ -131,10 +131,13 @@
   }
 
   // Notify and deregister observers whose threshold is met, if any.
-  while (!observers_.empty() &&
-         observers_.top().required_insert_count <= inserted_entry_count()) {
-    Observer* observer = observers_.top().observer;
-    observers_.pop();
+  while (!observers_.empty()) {
+    auto it = observers_.begin();
+    if (it->first > inserted_entry_count()) {
+      break;
+    }
+    Observer* observer = it->second;
+    observers_.erase(it);
     observer->OnInsertCountReachedThreshold();
   }
 
@@ -188,10 +191,10 @@
   max_entries_ = maximum_dynamic_table_capacity / 32;
 }
 
-void QpackHeaderTable::RegisterObserver(Observer* observer,
-                                        uint64_t required_insert_count) {
+void QpackHeaderTable::RegisterObserver(uint64_t required_insert_count,
+                                        Observer* observer) {
   DCHECK_GT(required_insert_count, 0u);
-  observers_.push({observer, required_insert_count});
+  observers_.insert({required_insert_count, observer});
 }
 
 uint64_t QpackHeaderTable::draining_index(float draining_fraction) const {
@@ -219,11 +222,6 @@
   return it->InsertionIndex();
 }
 
-bool QpackHeaderTable::ObserverWithThreshold::operator>(
-    const ObserverWithThreshold& other) const {
-  return required_insert_count > other.required_insert_count;
-}
-
 void QpackHeaderTable::EvictDownToCurrentCapacity() {
   while (dynamic_table_size_ > dynamic_table_capacity_) {
     DCHECK(!dynamic_entries_.empty());