mirror of
https://gitlab.ibr.cs.tu-bs.de/tschuber/ns-3-leo.git
synced 2025-06-08 10:03:58 +02:00
Add wrapper for waypoints file
This commit is contained in:
parent
8ab0bc023e
commit
9ead83462b
5 changed files with 202 additions and 0 deletions
103
utils/leo-input-fstream-container.cc
Normal file
103
utils/leo-input-fstream-container.cc
Normal file
|
@ -0,0 +1,103 @@
|
|||
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
|
||||
|
||||
#include "ns3/string.h"
|
||||
#include "ns3/time-data-calculators.h"
|
||||
#include "leo-input-fstream-container.h"
|
||||
|
||||
namespace ns3
|
||||
{
|
||||
|
||||
TypeId
|
||||
LeoWaypointInputFileStreamContainer::GetTypeId (void)
|
||||
{
|
||||
static TypeId tid = TypeId ("ns3::LeoWaypointInputFileStreamContainer")
|
||||
.SetGroupName ("Leo")
|
||||
.SetParent<Object> ()
|
||||
.AddConstructor<LeoWaypointInputFileStreamContainer> ()
|
||||
.AddAttribute ("File",
|
||||
"The path to the file opened in the stream",
|
||||
StringValue (),
|
||||
MakeStringAccessor (&LeoWaypointInputFileStreamContainer::m_filePath),
|
||||
MakeStringChecker ())
|
||||
.AddAttribute ("LastTime",
|
||||
"The minimum point in time for returned samples",
|
||||
TimeValue (),
|
||||
MakeTimeAccessor (&LeoWaypointInputFileStreamContainer::m_lastTime),
|
||||
MakeTimeChecker ())
|
||||
;
|
||||
return tid;
|
||||
}
|
||||
|
||||
LeoWaypointInputFileStreamContainer::LeoWaypointInputFileStreamContainer () :
|
||||
m_filePath (),
|
||||
m_input ()
|
||||
{
|
||||
}
|
||||
|
||||
LeoWaypointInputFileStreamContainer::LeoWaypointInputFileStreamContainer (string filePath, Time lastTime) :
|
||||
m_filePath (filePath),
|
||||
m_lastTime (lastTime)
|
||||
{
|
||||
}
|
||||
|
||||
LeoWaypointInputFileStreamContainer::~LeoWaypointInputFileStreamContainer ()
|
||||
{
|
||||
m_input.close ();
|
||||
}
|
||||
|
||||
bool
|
||||
LeoWaypointInputFileStreamContainer::GetNextSample (Waypoint &sample)
|
||||
{
|
||||
if (!m_input.is_open ())
|
||||
{
|
||||
m_input.open (m_filePath);
|
||||
}
|
||||
|
||||
if (!m_input.is_open ())
|
||||
{
|
||||
NS_ABORT_MSG ("Input stream is not open");
|
||||
}
|
||||
|
||||
if (m_input.bad ())
|
||||
{
|
||||
NS_ABORT_MSG ("Input stream is bad");
|
||||
}
|
||||
|
||||
while (!m_input.eof () && sample.time < m_lastTime)
|
||||
{
|
||||
m_input >> sample;
|
||||
}
|
||||
m_lastTime = sample.time;
|
||||
|
||||
return m_input.good ();
|
||||
}
|
||||
|
||||
void
|
||||
LeoWaypointInputFileStreamContainer::SetFile (const string path)
|
||||
{
|
||||
m_input.close ();
|
||||
m_filePath = path;
|
||||
m_input.open (m_filePath);
|
||||
}
|
||||
|
||||
string
|
||||
LeoWaypointInputFileStreamContainer::GetFile () const
|
||||
{
|
||||
return m_filePath;
|
||||
}
|
||||
|
||||
void
|
||||
LeoWaypointInputFileStreamContainer::SetLastTime (const Time lastTime)
|
||||
{
|
||||
m_input.clear ();
|
||||
m_input.seekg (0, std::ios::beg);
|
||||
m_lastTime = lastTime;
|
||||
}
|
||||
|
||||
Time
|
||||
LeoWaypointInputFileStreamContainer::GetLastTime () const
|
||||
{
|
||||
return m_lastTime;
|
||||
}
|
||||
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue