Index: net/tools/quic/quic_epoll_connection_helper.cc |
diff --git a/net/tools/quic/quic_epoll_connection_helper.cc b/net/tools/quic/quic_epoll_connection_helper.cc |
index 853f0d0257195a1d7aa4a18b63bea8add550307c..ec68754b06904add575322c0adaa1f09123c77ca 100644 |
--- a/net/tools/quic/quic_epoll_connection_helper.cc |
+++ b/net/tools/quic/quic_epoll_connection_helper.cc |
@@ -21,8 +21,9 @@ namespace { |
class QuicEpollAlarm : public QuicAlarm { |
public: |
- QuicEpollAlarm(EpollServer* epoll_server, QuicAlarm::Delegate* delegate) |
- : QuicAlarm(delegate), |
+ QuicEpollAlarm(EpollServer* epoll_server, |
+ QuicArenaScopedPtr<Delegate> delegate) |
+ : QuicAlarm(std::move(delegate)), |
epoll_server_(epoll_server), |
epoll_alarm_impl_(this) {} |
@@ -78,7 +79,19 @@ QuicRandom* QuicEpollConnectionHelper::GetRandomGenerator() { |
QuicAlarm* QuicEpollConnectionHelper::CreateAlarm( |
QuicAlarm::Delegate* delegate) { |
- return new QuicEpollAlarm(epoll_server_, delegate); |
+ return new QuicEpollAlarm(epoll_server_, |
+ QuicArenaScopedPtr<QuicAlarm::Delegate>(delegate)); |
+} |
+ |
+QuicArenaScopedPtr<QuicAlarm> QuicEpollConnectionHelper::CreateAlarm( |
+ QuicArenaScopedPtr<QuicAlarm::Delegate> delegate, |
+ QuicConnectionArena* arena) { |
+ if (arena != nullptr) { |
+ return arena->New<QuicEpollAlarm>(epoll_server_, std::move(delegate)); |
+ } else { |
+ return QuicArenaScopedPtr<QuicAlarm>( |
+ new QuicEpollAlarm(epoll_server_, std::move(delegate))); |
+ } |
} |
QuicBufferAllocator* QuicEpollConnectionHelper::GetBufferAllocator() { |