mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-04-26 08:57:26 +02:00
63 lines
1.5 KiB
C++
63 lines
1.5 KiB
C++
/*
|
|
* Copyright (c)2013-2021 ZeroTier, Inc.
|
|
*
|
|
* Use of this software is governed by the Business Source License included
|
|
* in the LICENSE.TXT file in the project's root directory.
|
|
*
|
|
* Change Date: 2026-01-01
|
|
*
|
|
* On the date above, in accordance with the Business Source License, use
|
|
* of this software will be governed by version 2.0 of the Apache License.
|
|
*/
|
|
/****/
|
|
|
|
#ifndef ZT_CALLCONTEXT_HPP
|
|
#define ZT_CALLCONTEXT_HPP
|
|
|
|
#include "Constants.hpp"
|
|
|
|
namespace ZeroTier {
|
|
|
|
/**
|
|
* A per-API-call equivalent to the runtime
|
|
*
|
|
* This captures several things that are passed into API calls and follow
|
|
* the call chain. Some such as tPtr may be supplied to callbacks.
|
|
*/
|
|
class CallContext
|
|
{
|
|
public:
|
|
ZT_INLINE CallContext(const int64_t c, const int64_t t, void *const p) :
|
|
clock(c),
|
|
ticks(t),
|
|
tPtr(p)
|
|
{}
|
|
|
|
/**
|
|
* Real world time in milliseconds since Unix epoch or -1 if unknown.
|
|
*
|
|
* This is used for things like checking certificate expiration. If it's
|
|
* not known then the value may be inferred from peers/roots or some
|
|
* features may be disabled.
|
|
*/
|
|
const int64_t clock;
|
|
|
|
/**
|
|
* Monotonic process or system clock in milliseconds since an arbitrary point.
|
|
*
|
|
* This is never -1 or undefined and is used for most timings.
|
|
*/
|
|
const int64_t ticks;
|
|
|
|
/**
|
|
* An arbitrary pointer users pass into calls that follows the call chain
|
|
*
|
|
* By passing this back to callbacks state can be kept by the caller using
|
|
* a mechanism that is faster (on most platforms) than thread-local storage.
|
|
*/
|
|
void *const tPtr;
|
|
};
|
|
|
|
} // namespace ZeroTier
|
|
|
|
#endif
|