Full Program

Dependencies:   TCPEthernetEverything

Committer:
lachu
Date:
Tue Jan 24 22:20:09 2017 +0000
Revision:
1:07a56731e6d1
Parent:
0:ca66419d3b8b
ok

Who changed what in which revision?

UserRevisionLine numberNew 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 };