Argus API
Argus Camera API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
EventQueue.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * * Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * * Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  * * Neither the name of NVIDIA CORPORATION nor the names of its
13  * contributors may be used to endorse or promote products derived
14  * from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
17  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
24  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29 #ifndef _ARGUS_EVENT_QUEUE_H
30 #define _ARGUS_EVENT_QUEUE_H
31 
32 namespace Argus
33 {
34 
35 /**
36  * An EventQueue object, as returned by IEventProvider::createEventQueue.
37  */
39 {
40 protected:
42 };
43 
44 /**
45  * @class IEventQueue
46  *
47  * The interface available to an EventQueue.
48  */
49 DEFINE_UUID(InterfaceID, IID_EVENT_QUEUE, 944b11f6,e512,49ad,8573,fc,82,3e,02,25,ed);
50 
51 class IEventQueue : public Interface
52 {
53 public:
54  static const InterfaceID& id() { return IID_EVENT_QUEUE; }
55 
56  /**
57  * Returns the event types that this queue will receive.
58  * @param[out] eventTypes, this vector will be populated with the event types registered to this
59  * queue.
60  *
61  * @returns success/status of the call.
62  */
63  virtual Status getEventTypes(std::vector<EventType>* types) const = 0;
64 
65  /**
66  * Returns the next event in the queue (that is, the event at index 0). The returned
67  * event will be removed from the queue, though the object will remain valid
68  * according to the rules described by waitForEvents().
69  * If the queue is empty, returns NULL.
70  */
71  virtual const Event* getNextEvent() = 0;
72 
73  /**
74  * Returns the number of events in the queue.
75  */
76  virtual uint32_t getSize() const = 0;
77 
78  /**
79  * Returns the event with the given index, where index 0 corresponds to the oldest
80  * event and [getSize() - 1] is the newest. The returned event is not removed
81  * from the queue. If index is not in [0, getSize()-1], NULL is returned.
82  */
83  virtual const Event* getEvent(uint32_t index) const = 0;
84 
85 protected:
87 };
88 
89 } // namespace Argus
90 
91 #endif // _ARGUS_EVENT_QUEUE_H