MADARA  3.4.1
ZMQContext.cpp
Go to the documentation of this file.
1 #include "ZMQContext.h"
2 #include <zmq.h>
4 
6 
8 
10 {
12  "ZMQContext::set_context:"
13  " setting the context\n");
14 
15  if (context != context_)
16  {
18  "ZMQContext::set_context:"
19  " context is different from new context. Destroying old context.\n");
20 
21  destroy_context();
22 
24  "ZMQContext::set_context:"
25  " updating context and reference count.\n");
26 
27  context_ = context;
28  references_ = 1;
29 
31  "ZMQContext::set_context:"
32  " result: context=%p, references=%d\n",
33  context_, int(references_));
34  }
35 }
36 
38 {
39  if (context_ == 0)
40  {
42  "ZMQContext::add_ref:"
43  " context didn't exist. Creating new context.\n",
44  context_, int(references_));
45 
46  references_ = 1;
47  context_ = zmq_ctx_new();
48  }
49  else
50  {
51  ++references_;
52  }
53 
55  "ZMQContext::add_ref:"
56  " result: context=%p, references=%d\n",
57  context_, int(references_));
58 }
59 
61 {
62  if (references_ > 0)
63  {
65  "ZMQContext::rem_ref:"
66  " removing reference from context.\n",
67  context_, int(references_));
68 
69  --references_;
70 
71  if (references_ == 0)
72  {
73  destroy_context();
74  }
75  }
76 
78  "ZMQContext::rem_ref:"
79  " result: context=%p, references=%d\n",
80  context_, int(references_));
81 }
82 
84 {
85  if (context_ != 0)
86  {
88  "ZMQContext::destroy_context:"
89  " destroying context.\n",
90  context_, int(references_));
91 
92  zmq_ctx_destroy(context_);
93  context_ = 0;
94  references_ = 0;
95  }
96 }
97 
102 {
103  destroy_context();
104 }
#define madara_logger_ptr_log(loggering, level,...)
Fast version of the madara::logger::log method for Logger pointers.
Definition: Logger.h:41
const ThreadSafeContext * context_
A class that manages a ZMQ context.
Definition: ZMQContext.h:24
void rem_ref(void)
Removes a reference to the context.
Definition: ZMQContext.cpp:60
void destroy_context(void)
Destroys the underlying context.
Definition: ZMQContext.cpp:83
void set_context(void *context)
Retrieves the underlying ZMQ context.
Definition: ZMQContext.cpp:9
void add_ref(void)
Adds a reference to the context.
Definition: ZMQContext.cpp:37
T get(const KnowledgeRecord &kr)
Get the value of a KnowlegeRecord.
Definition: GetRecord.h:121
MADARA_EXPORT utility::Refcounter< logger::Logger > global_logger
MADARA_EXPORT ZMQContext zmq_context
Definition: ZMQContext.cpp:5