diff options
Diffstat (limited to 'ACE/examples/APG/Naming/Temperature_Grapher.cpp')
-rw-r--r-- | ACE/examples/APG/Naming/Temperature_Grapher.cpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/ACE/examples/APG/Naming/Temperature_Grapher.cpp b/ACE/examples/APG/Naming/Temperature_Grapher.cpp new file mode 100644 index 00000000000..e11367af4a0 --- /dev/null +++ b/ACE/examples/APG/Naming/Temperature_Grapher.cpp @@ -0,0 +1,81 @@ +// $Id$ + +#include "ace/OS_NS_unistd.h" +#include "ace/Log_Msg.h" + +#include "Graph.h" +#include "Graphable_Element.h" +#include "Temperature_Grapher.h" + +// Listing 1 code/ch21 +void Temperature_Grapher::monitor (void) +{ + for (;;) + { + this->update_graph (); + ACE_OS::sleep (this->opt_.poll_interval ()); + } +} +// Listing 1 + +// Listing 2 code/ch21 +void Temperature_Grapher::update_graph (void) +{ + Name_Binding_Ptr lastUpdate + (this->naming_context_.fetch ("lastUpdate")); + + if (!lastUpdate.get ()) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("No data to graph\n"))); + return; + } + // Listing 2 + + // Listing 3 code/ch21 + Name_Binding_Ptr lastGraphed + (this->naming_context_.fetch ("lastGraphed")); + + if (lastGraphed.get () && + lastGraphed->int_value () == lastUpdate->int_value ()) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Data already graphed\n"))); + return; + } + // Listing 3 + + // Listing 4 code/ch21 + ACE_BINDING_SET set; + if (this->naming_context_.list_name_entries + (set, "history[") != 0) + { + ACE_DEBUG ((LM_INFO, + ACE_TEXT ("There's nothing to graph\n"))); + return; + } + // Listing 4 + + // Listing 5 code/ch21 + Graphable_Element_List graphable; + ACE_BINDING_ITERATOR set_iterator (set); + for (ACE_Name_Binding *entry = 0; + set_iterator.next (entry) != 0; + set_iterator.advance ()) + { + Name_Binding binding (entry); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%s\t%s\t%s\n"), + binding.type (), + binding.name (), + binding.value ())); + + Graphable_Element *ge = new Graphable_Element (entry); + graphable.push_back (*ge); + } + // Listing 5 + + // Listing 6 code/ch21 + Graph g; + g.graph (lastUpdate->value (), graphable); + this->naming_context_.rebind ("lastGraphed", + lastUpdate->int_value ()); + // Listing 6 +} |