mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-28 17:03:38 +00:00
[traffxml] Purge expired messages
Signed-off-by: mvglasow <michael -at- vonglasow.com>
This commit is contained in:
@@ -265,6 +265,7 @@ MainWindow::MainWindow(Framework & framework)
|
||||
menuBar()->addMenu(fileMenu);
|
||||
|
||||
fileMenu->addAction("Open sample", QKeySequence("Ctrl+O"), this, &MainWindow::OnOpenTrafficSample);
|
||||
fileMenu->addAction("Purge expired messages", QKeySequence("Ctrl+P"), this, &MainWindow::OnPurgeExpiredMessages);
|
||||
fileMenu->addAction("Clear TraFF cache", QKeySequence("Ctrl+D"), this, &MainWindow::OnClearCache);
|
||||
|
||||
m_closeTrafficSampleAction = fileMenu->addAction("Close sample", QKeySequence("Ctrl+W"), this, &MainWindow::OnCloseTrafficSample);
|
||||
@@ -408,6 +409,11 @@ void MainWindow::OnOpenTrafficSample()
|
||||
#endif
|
||||
}
|
||||
|
||||
void MainWindow::OnPurgeExpiredMessages()
|
||||
{
|
||||
m_framework.GetTrafficManager().PurgeExpiredMessages();
|
||||
}
|
||||
|
||||
void MainWindow::OnClearCache()
|
||||
{
|
||||
m_framework.GetTrafficManager().Clear();
|
||||
|
||||
@@ -41,6 +41,11 @@ private:
|
||||
*/
|
||||
void OnOpenTrafficSample();
|
||||
|
||||
/**
|
||||
* Called when the user requests to purge expired messages.
|
||||
*/
|
||||
void OnPurgeExpiredMessages();
|
||||
|
||||
/**
|
||||
* Called when the user requests to clear the cache.
|
||||
*/
|
||||
|
||||
@@ -195,6 +195,21 @@ bool operator==(TraffLocation const & lhs, TraffLocation const & rhs)
|
||||
&& (lhs.m_to == rhs.m_to);
|
||||
}
|
||||
|
||||
IsoTime TraffMessage::GetEffectiveExpirationTime()
|
||||
{
|
||||
IsoTime result = m_expirationTime;
|
||||
if (m_startTime && m_startTime.value() > result)
|
||||
result = m_startTime.value();
|
||||
if (m_endTime && m_endTime.value() > result)
|
||||
result = m_endTime.value();
|
||||
return result;
|
||||
}
|
||||
|
||||
bool TraffMessage::IsExpired(IsoTime now)
|
||||
{
|
||||
return GetEffectiveExpirationTime() < now;
|
||||
}
|
||||
|
||||
std::optional<TrafficImpact> TraffMessage::GetTrafficImpact()
|
||||
{
|
||||
// no events, no impact
|
||||
|
||||
@@ -359,6 +359,27 @@ using MultiMwmColoring = std::map<MwmSet::MwmId, std::map<traffic::TrafficInfo::
|
||||
|
||||
struct TraffMessage
|
||||
{
|
||||
/**
|
||||
* @brief Gets the time after which this message effectively expires.
|
||||
*
|
||||
* The effective expiration time is the latest of `m_expirationTime`, `m_startTime` and
|
||||
* `m_endTime`. `nullopt` values are ignored.
|
||||
*
|
||||
* @return The effective expiration time for the message.
|
||||
*/
|
||||
IsoTime GetEffectiveExpirationTime();
|
||||
|
||||
/**
|
||||
* @brief Whether the message has expired.
|
||||
*
|
||||
* A message is considered to have expired if its effective expiration time (as returned by
|
||||
* `GetEffectiveExpirationTime()` refers to a point in time before `now`.
|
||||
*
|
||||
* @param now The reference time to compare to (usually current time)
|
||||
* @return True if the message has expired, false if not.
|
||||
*/
|
||||
bool IsExpired(IsoTime now);
|
||||
|
||||
/**
|
||||
* @brief Retrieves the traffic impact of all events.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user