fix us/ns handling
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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++;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user