注意
本文档适用于 Ceph 的开发版本。
CephContext
CephContext 代表了 Ceph 集群的单一视图。它包括配置、一组性能计数器(PerfCounters)和一个心跳映射。您可以在 src/common/ceph_context.h 中找到有关 CephContext 的更多信息。
通常,您的应用程序中只有一个 CephContext,名为 g_ceph_context。然而,在库代码中,库用户可能会初始化多个 CephContexts。例如,如果他多次调用 rados_create,就会发生这种情况。
发出日志消息需要 ceph context。为什么会这样?嗯,如果没有 CephContext,我们就不知道哪些日志消息被禁用,哪些被启用。dout() 宏隐式引用 g_ceph_context,因此不能在库代码中使用。在守护程序中使用 dout 和 derr 是可以的,但在库代码中,您必须使用 ldout 和 lderr,并传入您自己的 CephContext 对象。编译器将强制执行此限制。