X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;ds=sidebyside;f=source%2Ftime%2Ffunctions.cpp;h=30f8352588f1f73f778fd67f2082746ef56f085a;hb=5a6cba5fde2b2f538a7515f8293cc0a8d9589dfa;hp=77efa3f9608ce2dfd7838eec8c68a5e885ec8ec1;hpb=4e12ac57e93c052f716a6305ad8fc099c45899d1;p=anna.git diff --git a/source/time/functions.cpp b/source/time/functions.cpp index 77efa3f..30f8352 100644 --- a/source/time/functions.cpp +++ b/source/time/functions.cpp @@ -1,42 +1,14 @@ -// ANNA - Anna is Not 'N' Anymore -// -// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo -// -// https://bitbucket.org/testillano/anna -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Authors: eduardo.ramos.testillano@gmail.com -// cisco.tierra@gmail.com +// ANNA - Anna is Not Nothingness Anymore // +// // +// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo // +// // +// See project site at http://redmine.teslayout.com/projects/anna-suite // +// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE // // Local #include -#include +#include // Standard #include // getenv @@ -49,65 +21,54 @@ namespace anna { namespace time { -TZ shell_local_tz; +Timezone SystemTimezone; unsigned long long int SecondsReference; } } -void anna::time::functions::initialize() throw() { -//throw(anna::RuntimeException) { -// If the system is configured properly, the default time zone will be correct. You might set TZ if you are -// using a computer over a network from a different time zone, and would like times reported to you in the -// time zone local to you, rather than what is local to the computer. +void anna::time::functions::initialize() { static bool cached = false; - if(!cached) { - // The getenv() function need not be reentrant. A function that is not required to be reentrant is not - // required to be thread-safe. - const char *local_tz = getenv("TZ"); - shell_local_tz.set(local_tz); -// if (shell_local_tz.isUnset()) -// std::cout << "'TZ' enviroment variable is not defined on shell (it shouldn't be necesary)" << std::endl; -// setControlPoint(); + SystemTimezone.set(getenv("TZ")); SecondsReference = 0; cached = true; } } -void anna::time::functions::setControlPoint(unsigned long long int secondsTimestamp) throw() { +void anna::time::functions::setControlPoint(unsigned long long int secondsTimestamp) { SecondsReference = secondsTimestamp ? secondsTimestamp : (::time(NULL)); } -unsigned long long int anna::time::functions::getSecondsReference() throw() { +unsigned long long int anna::time::functions::getSecondsReference() { return SecondsReference; } -const anna::time::TZ & anna::time::functions::getLocalTz(void) throw() { - return (shell_local_tz); +const anna::time::Timezone & anna::time::functions::getSystemTimezone(void) { + return (SystemTimezone); } -bool anna::time::functions::initialized(void) throw() { - return (shell_local_tz.isInitialized()); +bool anna::time::functions::initialized(void) { + return (SystemTimezone.isInitialized()); } -unsigned long long int anna::time::functions::unixSeconds(void) throw() { +unsigned long long int anna::time::functions::unixSeconds(void) { return (::time(NULL)); } -unsigned long long int anna::time::functions::unixMilliseconds() throw() { +unsigned long long int anna::time::functions::unixMilliseconds() { struct timeval tv; gettimeofday(&tv, NULL); return (tv.tv_sec * 1000) + (tv.tv_usec / 1000); } -unsigned long long int anna::time::functions::lapsedMilliseconds() throw() { +unsigned long long int anna::time::functions::lapsedMilliseconds() { struct timeval tv; gettimeofday(&tv, NULL); return ((tv.tv_sec - SecondsReference) * 1000) + (tv.tv_usec / 1000); } -unsigned long long int anna::time::functions::unixMicroseconds(void) throw() { +unsigned long long int anna::time::functions::unixMicroseconds(void) { struct timeval tv; gettimeofday(&tv, NULL); unsigned long long int result(tv.tv_sec); @@ -115,7 +76,7 @@ unsigned long long int anna::time::functions::unixMicroseconds(void) throw() { return result += tv.tv_usec; } -std::string anna::time::functions::currentTimeAsString(void) throw() { +std::string anna::time::functions::currentTimeAsString(void) { struct timeval tv; gettimeofday(&tv, NULL); struct tm *tm;