Program Listing for File ecal_time.h#
↰ Return to documentation for file (ecal/core/include/ecal/ecal_time.h
)
/* ========================= eCAL LICENSE =================================
*
* Copyright (C) 2016 - 2019 Continental Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* ========================= eCAL LICENSE =================================
*/
#pragma once
#include <ecal/ecal_os.h>
#include <string>
#include <chrono>
namespace eCAL
{
namespace Time
{
ECAL_API std::string GetName();
ECAL_API long long GetMicroSeconds();
ECAL_API long long GetNanoSeconds();
ECAL_API bool SetNanoSeconds(long long time_);
ECAL_API bool IsSynchronized();
ECAL_API bool IsMaster();
ECAL_API void SleepForNanoseconds(long long duration_nsecs_);
ECAL_API void GetStatus(int& error_, std::string* status_message_);
template<class _Rep,
class _Period> inline
void sleep_for(const std::chrono::duration<_Rep, _Period>& _Rel_time) {
long long duration_nsecs = (std::chrono::duration_cast<std::chrono::nanoseconds>(_Rel_time)).count();
SleepForNanoseconds(duration_nsecs);
}
/* @cond */
struct ecal_clock
{
typedef std::chrono::nanoseconds duration;
typedef duration::rep rep;
typedef duration::period period;
typedef std::chrono::time_point<ecal_clock> time_point;
static const bool is_steady = false;
static time_point now()
{
return time_point (duration(GetNanoSeconds()));
}
};
/* @endcond */
}
}