summaryrefslogtreecommitdiff
path: root/trunk/TAO/examples/OBV/Typed_Events/Client_i.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/TAO/examples/OBV/Typed_Events/Client_i.cpp')
-rw-r--r--trunk/TAO/examples/OBV/Typed_Events/Client_i.cpp121
1 files changed, 121 insertions, 0 deletions
diff --git a/trunk/TAO/examples/OBV/Typed_Events/Client_i.cpp b/trunk/TAO/examples/OBV/Typed_Events/Client_i.cpp
new file mode 100644
index 00000000000..bbadaefee44
--- /dev/null
+++ b/trunk/TAO/examples/OBV/Typed_Events/Client_i.cpp
@@ -0,0 +1,121 @@
+//$Id$
+
+#include "Client_i.h"
+#include "Event_Types_impl.h"
+
+#include "tao/ORB_Core.h"
+
+#include "ace/Get_Opt.h"
+#include "ace/OS_NS_sys_time.h"
+
+int
+Checkpoint_Client_i::run (const char *name,
+ int argc,
+ char *argv[])
+{
+ // Initialize the client (read ior...).
+ if (checkpoint.init (name,argc, argv) == -1)
+ return -1;
+
+ // Set random seed
+ ACE_Time_Value now (ACE_OS::gettimeofday ());
+ ACE_OS::srand ((unsigned int) now.sec () );
+
+ ACE_DECLARE_NEW_CORBA_ENV;
+
+ ACE_TRY
+ {
+ // Make factories to unmarshal OBV, when getting back a list
+ // of events which raised an alarm condition.
+
+ // TAO_OBV_REGISTER_FACTORY (Event_factory);
+ // This one not (see header file)
+
+ TAO_OBV_REGISTER_FACTORY (Temperature_factory, Temperature);
+ TAO_OBV_REGISTER_FACTORY (Position_factory, Position);
+ TAO_OBV_REGISTER_FACTORY (Log_Msg_factory, Log_Msg);
+ TAO_OBV_REGISTER_FACTORY (Event_List_factory, Event_List);
+ TAO_OBV_REGISTER_FACTORY (Event_List_Link_factory, Event_List_Link);
+
+ ACE_DEBUG ((LM_DEBUG, "Send some random events:\n"));
+
+ CORBA::Float temperature = random_number (29, 34);
+ Temperature_var t_e (static_cast<Temperature*> (new Temperature_impl (temperature)));
+ t_e->origin_id_ (KITCHEN);
+ t_e->do_print ();
+ checkpoint->put_event (t_e ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ temperature = random_number (25,30);
+ t_e = new Temperature_impl (temperature);
+ t_e->origin_id_ (BATHROOM);
+ t_e->do_print ();
+ checkpoint->put_event (t_e ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ Point point = { random_number (0,4),
+ random_number (0,4),
+ random_number (0,4) };
+ Position_var p_e (static_cast<Position*> (new Position_impl (point)));
+ p_e->origin_id_ (JONAS);
+ p_e->do_print ();
+ checkpoint->put_event (p_e ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+
+ int urgent = (random_number (0,2) > 1) ? 1 : 0;
+ const char *a_text = (random_number (0,2) > 1) ? "Coffee is cold."
+ : "I want pasta.";
+ Log_Msg_var l_e (static_cast<Log_Msg*> (new Log_Msg_impl (urgent, a_text)));
+ l_e->origin_id_ (JONAS);
+ l_e->do_print ();
+ checkpoint->put_event (l_e ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+
+ ACE_DEBUG ((LM_DEBUG, "\nNow getting the alarms:\n"));
+
+ Event_List_var list (checkpoint->get_critical_events (ACE_ENV_SINGLE_ARG_PARAMETER));
+ ACE_TRY_CHECK;
+
+ for (Event_List_Iterator i (list); i.next (); i.advance ())
+ {
+ i.next ()-> do_print ();
+ }
+
+ if (checkpoint.shutdown () == 1)
+ checkpoint->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER);
+
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,"\n Exception in RMI");
+ return -1;
+ }
+ ACE_ENDTRY;
+ ACE_CHECK_RETURN (-1);
+
+ return 0;
+}
+
+// Constructor.
+Checkpoint_Client_i::Checkpoint_Client_i (void)
+{
+ //no-op
+}
+
+//Destructor.
+Checkpoint_Client_i::~Checkpoint_Client_i (void)
+{
+ //no-op
+}
+
+
+// A random number in the range of min to max.
+CORBA::Float random_number (double min, double max)
+{
+ double range = max - min;
+ return static_cast<CORBA::Float> ((min + (range * ACE_OS::rand () / (RAND_MAX + 1.0))));
+}
+