1161e2e84682b0b70467f96d572565149c292592eBrian Duddie/* 2161e2e84682b0b70467f96d572565149c292592eBrian Duddie * Copyright (C) 2017 The Android Open Source Project 3161e2e84682b0b70467f96d572565149c292592eBrian Duddie * 4161e2e84682b0b70467f96d572565149c292592eBrian Duddie * Licensed under the Apache License, Version 2.0 (the "License"); 5161e2e84682b0b70467f96d572565149c292592eBrian Duddie * you may not use this file except in compliance with the License. 6161e2e84682b0b70467f96d572565149c292592eBrian Duddie * You may obtain a copy of the License at 7161e2e84682b0b70467f96d572565149c292592eBrian Duddie * 8161e2e84682b0b70467f96d572565149c292592eBrian Duddie * http://www.apache.org/licenses/LICENSE-2.0 9161e2e84682b0b70467f96d572565149c292592eBrian Duddie * 10161e2e84682b0b70467f96d572565149c292592eBrian Duddie * Unless required by applicable law or agreed to in writing, software 11161e2e84682b0b70467f96d572565149c292592eBrian Duddie * distributed under the License is distributed on an "AS IS" BASIS, 12161e2e84682b0b70467f96d572565149c292592eBrian Duddie * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13161e2e84682b0b70467f96d572565149c292592eBrian Duddie * See the License for the specific language governing permissions and 14161e2e84682b0b70467f96d572565149c292592eBrian Duddie * limitations under the License. 15161e2e84682b0b70467f96d572565149c292592eBrian Duddie */ 16161e2e84682b0b70467f96d572565149c292592eBrian Duddie 17161e2e84682b0b70467f96d572565149c292592eBrian Duddie#include "chre/core/event_ref_queue.h" 18161e2e84682b0b70467f96d572565149c292592eBrian Duddie 19161e2e84682b0b70467f96d572565149c292592eBrian Duddie#include "chre/platform/assert.h" 20161e2e84682b0b70467f96d572565149c292592eBrian Duddie 21161e2e84682b0b70467f96d572565149c292592eBrian Duddienamespace chre { 22161e2e84682b0b70467f96d572565149c292592eBrian Duddie 235d9b2d68940f7dac47bf2fbad6f6069ed3b2faaaBrian DuddieEventRefQueue::~EventRefQueue() { 245d9b2d68940f7dac47bf2fbad6f6069ed3b2faaaBrian Duddie CHRE_ASSERT_LOG(empty(), "Potentially leaking events if queue not empty " 255d9b2d68940f7dac47bf2fbad6f6069ed3b2faaaBrian Duddie "when destroyed"); 265d9b2d68940f7dac47bf2fbad6f6069ed3b2faaaBrian Duddie} 275d9b2d68940f7dac47bf2fbad6f6069ed3b2faaaBrian Duddie 28161e2e84682b0b70467f96d572565149c292592eBrian Duddiebool EventRefQueue::push(Event *event) { 29161e2e84682b0b70467f96d572565149c292592eBrian Duddie CHRE_ASSERT(event != nullptr); 30161e2e84682b0b70467f96d572565149c292592eBrian Duddie 31161e2e84682b0b70467f96d572565149c292592eBrian Duddie bool pushed = mQueue.push(event); 32161e2e84682b0b70467f96d572565149c292592eBrian Duddie if (pushed) { 33161e2e84682b0b70467f96d572565149c292592eBrian Duddie event->incrementRefCount(); 34161e2e84682b0b70467f96d572565149c292592eBrian Duddie } 35161e2e84682b0b70467f96d572565149c292592eBrian Duddie 36161e2e84682b0b70467f96d572565149c292592eBrian Duddie return pushed; 37161e2e84682b0b70467f96d572565149c292592eBrian Duddie} 38161e2e84682b0b70467f96d572565149c292592eBrian Duddie 39161e2e84682b0b70467f96d572565149c292592eBrian DuddieEvent *EventRefQueue::pop() { 40161e2e84682b0b70467f96d572565149c292592eBrian Duddie CHRE_ASSERT(!mQueue.empty()); 41161e2e84682b0b70467f96d572565149c292592eBrian Duddie 42161e2e84682b0b70467f96d572565149c292592eBrian Duddie Event *event = mQueue.front(); 43161e2e84682b0b70467f96d572565149c292592eBrian Duddie mQueue.pop(); 44161e2e84682b0b70467f96d572565149c292592eBrian Duddie event->decrementRefCount(); 45161e2e84682b0b70467f96d572565149c292592eBrian Duddie 46161e2e84682b0b70467f96d572565149c292592eBrian Duddie return event; 47161e2e84682b0b70467f96d572565149c292592eBrian Duddie} 48161e2e84682b0b70467f96d572565149c292592eBrian Duddie 49161e2e84682b0b70467f96d572565149c292592eBrian Duddie} // namespace chre 50