diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2013-07-27 00:33:10 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2013-07-27 00:33:10 +0200 |
commit | cb5d5a9397928b0c1c844f35e5cae14a52955526 (patch) | |
tree | 638d2e03cb30aa546ff4e06ef9fea6302851c7e5 | |
parent | f97d1e15699d281911274911f83acbdc07e1f27e (diff) | |
download | gmrf-cb5d5a9397928b0c1c844f35e5cae14a52955526.tar gmrf-cb5d5a9397928b0c1c844f35e5cae14a52955526.zip |
More small optimizations
-rw-r--r-- | mmss/gmrf.cpp | 4 | ||||
-rw-r--r-- | mmss/iface.cpp | 2 | ||||
-rw-r--r-- | mmss/log.cpp | 4 | ||||
-rw-r--r-- | mmss/mmss.cpp | 5 | ||||
-rw-r--r-- | mmss/queue.hpp | 6 |
5 files changed, 12 insertions, 9 deletions
diff --git a/mmss/gmrf.cpp b/mmss/gmrf.cpp index d6eecbc..c71f681 100644 --- a/mmss/gmrf.cpp +++ b/mmss/gmrf.cpp @@ -88,11 +88,11 @@ void gmrf_schedule(gmrf_t *gmrf, gmrf_scheduled_func f, void *arg, unsigned dela std::shared_ptr<MMSS::scheduled_t> scheduled = std::make_shared<MMSS::scheduled_t>(); - scheduled->node = node; + scheduled->node = std::move(node); scheduled->f = f; scheduled->arg = arg; - gmrf->mmss->scheduled_queue.put(scheduled, gmrf->mmss->now+delay); + gmrf->mmss->scheduled_queue.put(std::move(scheduled), gmrf->mmss->now+delay); } gmrf_time_t gmrf_now(gmrf_t *gmrf) { diff --git a/mmss/iface.cpp b/mmss/iface.cpp index c011255..e4ddec7 100644 --- a/mmss/iface.cpp +++ b/mmss/iface.cpp @@ -70,7 +70,7 @@ void enqueue(context_t *mmss, const std::shared_ptr<iface_t> &source, const std: packet->data.reset(new uint8_t[len]); std::memcpy(packet->data.get(), data, len); - mmss->packet_queue.put(packet, mmss->now+1); + mmss->packet_queue.put(std::move(packet), mmss->now+1); } } diff --git a/mmss/log.cpp b/mmss/log.cpp index b66cf6f..4e57f12 100644 --- a/mmss/log.cpp +++ b/mmss/log.cpp @@ -37,10 +37,10 @@ void logf(context_t *mmss, int priority, const char *format, ...) { std::va_list ap; va_start(ap, format); - vsnprintf(buf+pos, sizeof(buf)-pos, format, ap); + std::vsnprintf(buf+pos, sizeof(buf)-pos, format, ap); va_end(ap); - fprintf(stderr, "%s\n", buf); + std::fprintf(stderr, "%s\n", buf); } } diff --git a/mmss/mmss.cpp b/mmss/mmss.cpp index 548425f..c3a4bc2 100644 --- a/mmss/mmss.cpp +++ b/mmss/mmss.cpp @@ -69,7 +69,7 @@ void main(int argc, char *argv[]) { context_t mmss; config_t conf = {}; - read_config(&mmss, &conf, "babel_test.mmss"); + //read_config(&mmss, &conf, "babel_test.mmss"); std::shared_ptr<network_t> net0 = std::make_shared<network_t>(); std::shared_ptr<network_t> net1 = std::make_shared<network_t>(); @@ -96,6 +96,9 @@ void main(int argc, char *argv[]) { add_iface(node3, net1, "mmss1", &addr4); while (true) { + if (mmss.now > 1000000000) + break; + int timeout = get_queue_timeout(&mmss); if (timeout < 0) { diff --git a/mmss/queue.hpp b/mmss/queue.hpp index 1b1d2af..8efaa97 100644 --- a/mmss/queue.hpp +++ b/mmss/queue.hpp @@ -39,7 +39,7 @@ template<typename T> class timeout_queue_t { std::shared_ptr<T> data; uint64_t timeout; - element_t(const std::shared_ptr<T> &data0, uint64_t timeout0) : data(data0), timeout(timeout0) {} + element_t(std::shared_ptr<T> &&data0, uint64_t timeout0) : data(std::move(data0)), timeout(timeout0) {} }; context_t *mmss; @@ -49,13 +49,13 @@ template<typename T> class timeout_queue_t { public: timeout_queue_t(context_t *mmss0) : mmss(mmss0) {} - void put(const std::shared_ptr<T> &data, uint64_t timeout) { + void put(std::shared_ptr<T> &&data, uint64_t timeout) { auto it = queue.begin(), end = queue.end(); while (it != end && it->timeout < timeout) ++it; - queue.insert(it, element_t(data, timeout)); + queue.emplace(it, std::move(data), timeout); } std::shared_ptr<T> get() { |