Construct all HHWheelTimer instances with the factory method
authorChad Parry <cparry@fb.com>
Fri, 13 May 2016 18:56:03 +0000 (11:56 -0700)
committerFacebook Github Bot 6 <facebook-github-bot-6-bot@fb.com>
Fri, 13 May 2016 19:08:25 +0000 (12:08 -0700)
commit6da3b849193da48ae68bad4bab8dda171e0f1aaf
tree03e734ed08794c070d7fd33948d7fcc33d1fc9bf
parent2f1ac6903006adf712cc3ae1641ba527e1b45dee
Construct all HHWheelTimer instances with the factory method

Summary:
This diff standardizes `HHWheelTimer` construction. It's not that safe to allow anyone to call `new HHWheelTimer` because the caller needs to remember to call `DelayedDestruction::destroy`.

Once callers are made to be safer, I'll be able to change the `HHWheelTimer` to use standard smart pointers instead of `DelayedDestruction`.

This picks up some work that I started in D2627941 but had to postpone.

This was mostly a mechanical change:

  ( fbgs -ls 'new HHWheelTimer' ; fbgs -ls 'new folly::HHWheelTimer' ) | xargs perl -pi -e 's/\bnew\s+((?:folly::)?HHWheelTimer)\b/$1::newTimer/g'

Then I manually inspected the code. I reverted `folly/io/async/HHWheelTimer.h`, since the `newTimer` factory method is the one place that we still want to call `new HHWheelTimer`. I manually edited `proxygen/lib/utils/SharedWheelTimer.cpp`, since that was using a `shared_ptr` with a custom destructor, which isn't needed anymore. I reverted `common/io/async/d` since the D shim is meant to pass around only raw pointers. I had to replace each instance of `foo.reset(…)` with `foo = …` . Then I made manual edits to `common/clientpool/ClientPool2-inl.h` because that code wants to store the timer in a `ThreadLocalPtr`.

Reviewed By: yfeldblum

Differential Revision: D3237530

fbshipit-source-id: 96bfb6987098618ad5430c21b1314f385f04a93d
folly/futures/ThreadWheelTimekeeper.cpp
folly/io/async/test/HHWheelTimerTest.cpp