| 131 | EventsRouter EventsRouter::m_Instance; |
| 132 | |
| 133 | EventsInbox::EventsInbox(String filter, const String& filterSource) |
| 134 | : m_Timer(IoEngine::Get().GetIoContext()) |
| 135 | { |
| 136 | std::unique_lock<std::mutex> lock (m_FiltersMutex); |
| 137 | m_Filter = m_Filters.find(filter); |
| 138 | |
| 139 | if (m_Filter == m_Filters.end()) { |
| 140 | lock.unlock(); |
| 141 | |
| 142 | auto expr (ConfigCompiler::CompileText(filterSource, filter)); |
| 143 | |
| 144 | lock.lock(); |
| 145 | |
| 146 | m_Filter = m_Filters.find(filter); |
| 147 | |
| 148 | if (m_Filter == m_Filters.end()) { |
| 149 | m_Filter = m_Filters.emplace(std::move(filter), Filter{1, Expression::Ptr(expr.release())}).first; |
| 150 | } else { |
| 151 | ++m_Filter->second.Refs; |
| 152 | } |
| 153 | } else { |
| 154 | ++m_Filter->second.Refs; |
| 155 | } |
| 156 | } |
| 157 | |
| 158 | EventsInbox::~EventsInbox() |
| 159 | { |