/* @file EventTimeFn2.hpp */ #pragma once #include "xo/refcnt/Refcounted.hpp" #include namespace xo { namespace reactor { template class EventTimeFn { public: using utc_nanos = xo::time::utc_nanos; using event_t = Event; public: static utc_nanos event_tm(event_t const & ev) { return ev.tm(); } utc_nanos operator()(event_t const & ev) const { return EventTimeFn::event_tm(ev); } }; template class EventTimeFn> { public: using utc_nanos = xo::time::utc_nanos; using event_t = xo::ref::rp; public: static utc_nanos event_tm(event_t const & ev) { return ev->tm(); } utc_nanos operator()(event_t const & ev) const { return EventTimeFn::event_tm(ev); } }; template class EventTimeFn { public: using utc_nanos = xo::time::utc_nanos; using event_t = T*; public: static utc_nanos event_tm(event_t ev) { return ev->tm(); } utc_nanos operator()(event_t const & ev) const { return EventTimeFn::event_tm(ev); } }; template class EventTimeFn> { public: using utc_nanos = xo::time::utc_nanos; using event_t = std::pair; public: static utc_nanos event_tm(event_t const & ev) { return ev.first; } utc_nanos operator()(event_t const & ev) const { return EventTimeFn::event_tm(ev); } }; } /*namespace reactor*/ } /*namespace xo*/ /* end EventTimeFn2.hpp */