/* now.cc
****************************************************************************************************************
****************************************************************************************************************

    Copyright (C) 2026 Askar Almatov

    This file is part of Trafficmeter.

    Trafficmeter is free software: you can redistribute it and/or modify it under the terms of the GNU General
    Public License as published by the Free Software Foundation, either version 3 of the License, or (at your
    option) any later version.

    Trafficmeter is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
    License for more details.

    You should have received a copy of the GNU General Public License along with Trafficmeter. If not, see
    <http://www.gnu.org/licenses/>.
*/

#include "now.h"

using namespace trafficmeter;

using std::atomic;
using std::ostream;

atomic<const char*>     Now::format_a_ = "%FT%T%z -- ";

/**************************************************************************************************************/
Now::Now() : currentTime_( time(nullptr) )
{
}

/**************************************************************************************************************/
void
Now::hideDate()
{
    format_a_ = "%T ";
}

/**************************************************************************************************************/
void
Now::nothing()
{
    format_a_ = "";
}

/**************************************************************************************************************/
namespace trafficmeter
{
    ostream&
    operator<<( ostream& out, const Now& now )
    {
        struct tm   timeComponents;
        char        timeString[ 32 ];

        localtime_r( &now.currentTime_, &timeComponents );
        strftime( timeString, sizeof(timeString), Now::format_a_, &timeComponents );
        out << timeString;
        return out;
    }
}

