Full Program
Dependencies: TCPEthernetEverything
eventqueue.h@1:07a56731e6d1, 2017-01-24 (annotated)
- Committer:
- lachu
- Date:
- Tue Jan 24 22:20:09 2017 +0000
- Revision:
- 1:07a56731e6d1
- Parent:
- 0:ca66419d3b8b
ok
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lachu | 0:ca66419d3b8b | 1 | /* |
lachu | 0:ca66419d3b8b | 2 | * (c) Copyright 2012 EVRYTHNG Ltd London / Zurich |
lachu | 0:ca66419d3b8b | 3 | * www.evrythng.com |
lachu | 0:ca66419d3b8b | 4 | * |
lachu | 0:ca66419d3b8b | 5 | * --- DISCLAIMER --- |
lachu | 0:ca66419d3b8b | 6 | * |
lachu | 0:ca66419d3b8b | 7 | * EVRYTHNG provides this source code "as is" and without warranty of any kind, |
lachu | 0:ca66419d3b8b | 8 | * and hereby disclaims all express or implied warranties, including without |
lachu | 0:ca66419d3b8b | 9 | * limitation warranties of merchantability, fitness for a particular purpose, |
lachu | 0:ca66419d3b8b | 10 | * performance, accuracy, reliability, and non-infringement. |
lachu | 0:ca66419d3b8b | 11 | * |
lachu | 0:ca66419d3b8b | 12 | * Author: Michel Yerly |
lachu | 0:ca66419d3b8b | 13 | * |
lachu | 0:ca66419d3b8b | 14 | */ |
lachu | 0:ca66419d3b8b | 15 | #include <queue> |
lachu | 0:ca66419d3b8b | 16 | #include <stdint.h> |
lachu | 0:ca66419d3b8b | 17 | |
lachu | 0:ca66419d3b8b | 18 | enum EventType { |
lachu | 0:ca66419d3b8b | 19 | EVT_SET_PROP, |
lachu | 0:ca66419d3b8b | 20 | EVT_GET_PROP |
lachu | 0:ca66419d3b8b | 21 | }; |
lachu | 0:ca66419d3b8b | 22 | |
lachu | 0:ca66419d3b8b | 23 | struct Event { |
lachu | 0:ca66419d3b8b | 24 | int64_t time; |
lachu | 0:ca66419d3b8b | 25 | EventType type; |
lachu | 0:ca66419d3b8b | 26 | }; |
lachu | 0:ca66419d3b8b | 27 | |
lachu | 0:ca66419d3b8b | 28 | class EventComparison |
lachu | 0:ca66419d3b8b | 29 | { |
lachu | 0:ca66419d3b8b | 30 | public: |
lachu | 0:ca66419d3b8b | 31 | bool operator() (const Event& lhs, const Event&rhs) const { |
lachu | 0:ca66419d3b8b | 32 | return (lhs.time>rhs.time); |
lachu | 0:ca66419d3b8b | 33 | } |
lachu | 0:ca66419d3b8b | 34 | }; |
lachu | 0:ca66419d3b8b | 35 | |
lachu | 0:ca66419d3b8b | 36 | class EventQueue |
lachu | 0:ca66419d3b8b | 37 | { |
lachu | 0:ca66419d3b8b | 38 | public: |
lachu | 0:ca66419d3b8b | 39 | void put(int64_t time, EventType type); |
lachu | 0:ca66419d3b8b | 40 | EventType waitNext(int64_t currentTime); |
lachu | 0:ca66419d3b8b | 41 | bool empty(); |
lachu | 0:ca66419d3b8b | 42 | int size(); |
lachu | 0:ca66419d3b8b | 43 | private: |
lachu | 0:ca66419d3b8b | 44 | std::priority_queue<Event, std::vector<Event>, EventComparison> queue; |
lachu | 0:ca66419d3b8b | 45 | }; |