1
0
mirror of https://github.com/ceph/ceph synced 2024-12-22 03:22:00 +00:00
ceph/doc/dev/context.rst
Tommi Virtanen 66ee58f691 doc: Move internals into a new section, /dev.
Most of the doc is user-oriented, let's isolate internals more.

Split into multiple files. Clean up RST.

Use Sphinx's graphviz plugin for graphs.

Signed-off-by: Tommi Virtanen <tommi.virtanen@dreamhost.com>
2011-09-01 13:28:12 -07:00

21 lines
997 B
ReStructuredText

=============
CephContext
=============
A CephContext represents a single view of the Ceph cluster. It comes complete
with a configuration, a set of performance counters (PerfCounters), and a
heartbeat map. You can find more information about CephContext in
src/common/ceph_context.h.
Generally, you will have only one CephContext in your application, called
g_ceph_context. However, in library code, it is possible that the library user
will initialize multiple CephContexts. For example, this would happen if he
called rados_create more than once.
A ceph context is required to issue log messages. Why is this? Well, without
the CephContext, we would not know which log messages were disabled and which
were enabled. The dout() macro implicitly references g_ceph_context, so it
can't be used in library code. It is fine to use dout and derr in daemons, but
in library code, you must use ldout and lderr, and pass in your own CephContext
object. The compiler will enforce this restriction.