summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2013-07-27 00:33:10 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2013-07-27 00:33:10 +0200
commitcb5d5a9397928b0c1c844f35e5cae14a52955526 (patch)
tree638d2e03cb30aa546ff4e06ef9fea6302851c7e5
parentf97d1e15699d281911274911f83acbdc07e1f27e (diff)
downloadgmrf-cb5d5a9397928b0c1c844f35e5cae14a52955526.tar
gmrf-cb5d5a9397928b0c1c844f35e5cae14a52955526.zip
More small optimizations
-rw-r--r--mmss/gmrf.cpp4
-rw-r--r--mmss/iface.cpp2
-rw-r--r--mmss/log.cpp4
-rw-r--r--mmss/mmss.cpp5
-rw-r--r--mmss/queue.hpp6
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() {