fix us/ns handling

This commit is contained in:
Mathieu Lacage
2006-09-04 13:18:16 +02:00
parent d6048b8a61
commit 79ba177ba4
4 changed files with 33 additions and 32 deletions

View File

@@ -141,7 +141,7 @@ SimulatorPrivate::next (void) const
{
assert (!m_events->is_empty ());
Scheduler::EventKey next_key = m_events->peek_next_key ();
return AbsTimeUs (next_key.m_ns);
return Time::abs_ns (next_key.m_ns);
}

View File

@@ -114,6 +114,33 @@ Time::destroy (void)
return Time ();
}
class AbsTimeS : public Time {
public:
AbsTimeS (double s);
};
class AbsTimeUs : public Time {
public:
AbsTimeUs (uint64_t us);
};
class RelTimeS : public Time {
public:
RelTimeS (double s);
};
class RelTimeUs : public Time {
public:
RelTimeUs (uint64_t us);
};
class NowTime : public Time {
public:
NowTime ();
};
class DestroyTime : public Time {
public:
DestroyTime ();
};
AbsTimeS::AbsTimeS (double s)
: Time ((uint64_t)(int64_t)(s * 1000000000.0))

View File

@@ -49,32 +49,6 @@ private:
bool m_is_destroy;
};
class AbsTimeS : public Time {
public:
AbsTimeS (double s);
};
class AbsTimeUs : public Time {
public:
AbsTimeUs (uint64_t us);
};
class RelTimeS : public Time {
public:
RelTimeS (double s);
};
class RelTimeUs : public Time {
public:
RelTimeUs (uint64_t us);
};
class NowTime : public Time {
public:
NowTime ();
};
class DestroyTime : public Time {
public:
DestroyTime ();
};
}; // namespace ns3

View File

@@ -55,8 +55,8 @@ Bench::read_distribution (std::istream &input)
double data;
while (!input.eof ()) {
if (input >> data) {
uint64_t us = (uint64_t) (data * 1000000);
m_distribution.push_back (us);
uint64_t ns = (uint64_t) (data * 1000000000);
m_distribution.push_back (ns);
} else {
input.clear ();
std::string line;
@@ -73,7 +73,7 @@ Bench::bench (void)
time.start ();
for (std::vector<uint64_t>::const_iterator i = m_distribution.begin ();
i != m_distribution.end (); i++) {
Simulator::schedule (AbsTimeUs (*i), &Bench::cb, this);
Simulator::schedule (Time::abs_ns (*i), &Bench::cb, this);
}
init = time.end ();
@@ -103,9 +103,9 @@ Bench::cb (void)
m_current = m_distribution.begin ();
}
if (g_debug) {
std::cerr << "event at " << Simulator::now ().s () << std::endl;
std::cerr << "event at " << Simulator::now ().s () << "s" << std::endl;
}
Simulator::schedule (AbsTimeUs (*m_current), &Bench::cb, this);
Simulator::schedule (Time::abs_ns (*m_current), &Bench::cb, this);
m_current++;
m_n++;
}