X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Fmsg%2Fasync%2Fdpdk%2Fqueue.h;fp=src%2Fceph%2Fsrc%2Fmsg%2Fasync%2Fdpdk%2Fqueue.h;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=984ddca134ddf94951713e5e8f6d24a02b9b4a4e;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/src/msg/async/dpdk/queue.h b/src/ceph/src/msg/async/dpdk/queue.h deleted file mode 100644 index 984ddca..0000000 --- a/src/ceph/src/msg/async/dpdk/queue.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * This file is open source software, licensed to you under the terms - * of the Apache License, Version 2.0 (the "License"). See the NOTICE file - * distributed with this work for additional information regarding copyright - * ownership. You may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Copyright (C) 2014 Cloudius Systems, Ltd. - */ - -#ifndef CEPH_MSG_DPDK_QUEUE_H_ -#define CEPH_MSG_DPDK_QUEUE_H_ - -#include - -#include "circular_buffer.h" - -template -class queue { - std::queue> _q; - size_t _max; - - public: - explicit queue(size_t size): _max(size) {} - - // Push an item. - // - // Returns false if the queue was full and the item was not pushed. - bool push(T&& a); - - // pops an item. - T pop(); - - // Consumes items from the queue, passing them to @func, until @func - // returns false or the queue it empty - // - // Returns false if func returned false. - template - bool consume(Func&& func); - - // Returns true when the queue is empty. - bool empty() const; - - // Returns true when the queue is full. - bool full() const; - - size_t size() const { return _q.size(); } - - // Destroy any items in the queue - void clear() { - while (!_q.empty()) { - _q.pop(); - } - } -}; - -template -inline bool queue::push(T&& data) { - if (_q.size() < _max) { - _q.push(std::move(data)); - notify_not_empty(); - return true; - } else { - return false; - } -} - -template -inline T queue::pop() { - T data = std::move(_q.front()); - _q.pop(); - return data; -} - -template -inline bool queue::empty() const { - return _q.empty(); -} - -template -inline bool queue::full() const { - return _q.size() == _max; -} - -#endif /* CEPH_MSG_DPDK_QUEUE_H_ */