summaryrefslogtreecommitdiff
path: root/examples/APG/Active_Objects/AO2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/APG/Active_Objects/AO2.cpp')
-rw-r--r--examples/APG/Active_Objects/AO2.cpp215
1 files changed, 0 insertions, 215 deletions
diff --git a/examples/APG/Active_Objects/AO2.cpp b/examples/APG/Active_Objects/AO2.cpp
deleted file mode 100644
index eaa65baaf77..00000000000
--- a/examples/APG/Active_Objects/AO2.cpp
+++ /dev/null
@@ -1,215 +0,0 @@
-// $Id$
-
-#include "ace/config-lite.h"
-#if defined (ACE_HAS_THREADS)
-
-#include "ace/OS_NS_unistd.h"
-#include "ace/Activation_Queue.h"
-#include "ace/Task.h"
-#include "ace/Future.h"
-#include "ace/Auto_Ptr.h"
-
-class HA_ControllerAgent
-{
- // Proxy to the HA_Controller that is on the network.
-public:
- HA_ControllerAgent ()
- {
- ACE_TRACE
- (ACE_TEXT ("HA_ControllerAgent::HA_ControllerAgent"));
- status_result_ = 1;
- }
-
- int status_update (void)
- {
- ACE_TRACE (ACE_TEXT ("HA_ControllerAgent::status_update"));
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("Obtaining a status_update in %t ")
- ACE_TEXT ("thread of control\n")));
- // Simulate sending message to controller
- // and getting status.
- ACE_OS::sleep (2);
- return next_result_id ();
- }
-
-private:
- int next_result_id (void)
- {
- ACE_TRACE (ACE_TEXT ("HA_ControllerAgent::next_cmd_id"));
- return status_result_++;
- }
-
- int status_result_;
-};
-
-class StatusUpdate : public ACE_Method_Request
-{
-public:
- StatusUpdate (HA_ControllerAgent& controller,
- ACE_Future<int>& returnVal)
- : controller_(controller), returnVal_(returnVal)
- {
- ACE_TRACE (ACE_TEXT ("StatusUpdate::StatusUpdate"));
- }
-
- virtual int call (void)
- {
- ACE_TRACE (ACE_TEXT ("StatusUpdate::call"));
-
- // status_update with the controller.
- this->returnVal_.set (this->controller_.status_update ());
- return 0;
- }
-
-private:
- HA_ControllerAgent& controller_;
- ACE_Future<int> returnVal_;
-};
-
-class ExitMethod : public ACE_Method_Request
-{
-public:
- virtual int call (void)
- {
- // Cause exit.
- return -1;
- }
-};
-
-class Scheduler : public ACE_Task_Base
-{
-public:
- Scheduler ()
- {
- ACE_TRACE (ACE_TEXT ("Scheduler::Scheduler"));
- this->activate ();
- }
-
- virtual int svc (void)
- {
- ACE_TRACE (ACE_TEXT ("Scheduler::svc"));
-
- while (1)
- {
- // Dequeue the next method object
- auto_ptr<ACE_Method_Request>
- request (this->activation_queue_.dequeue ());
-
- // Invoke the method request.
- if (request->call () == -1)
- break;
- }
-
- return 0;
- }
-
- int enqueue (ACE_Method_Request *request)
- {
- ACE_TRACE (ACE_TEXT ("Scheduler::enqueue"));
- return this->activation_queue_.enqueue (request);
- }
-
-private:
- ACE_Activation_Queue activation_queue_;
-};
-
-class HA_ControllerAgentProxy
-{
- // This acts as a Proxy to the controller impl object.
-public:
- ACE_Future<int> status_update (void)
- {
- ACE_TRACE
- (ACE_TEXT ("HA_ControllerAgentProxy::status_update"));
- ACE_Future<int> result;
-
- // Create and enqueue a method request on the scheduler.
- this->scheduler_.enqueue
- (new StatusUpdate (this->controller_, result));
-
- // Return Future to the client.
- return result;
- }
-
- void exit (void)
- {
- ACE_TRACE (ACE_TEXT ("HA_ControllerAgentProxy::exit"));
- this->scheduler_.enqueue (new ExitMethod);
- }
-
-private:
- Scheduler scheduler_;
- HA_ControllerAgent controller_;
-};
-
-// Listing 1 code/ch15
-class CompletionCallBack : public ACE_Future_Observer<int>
-{
-public:
- CompletionCallBack (HA_ControllerAgentProxy& proxy)
- : proxy_(proxy)
- { }
-
- virtual void update (const ACE_Future<int>& future)
- {
- int result;
- ((ACE_Future<int>)future).get (result);
- ACE_DEBUG ((LM_INFO,
- ACE_TEXT ("(%t) New Status %d\n"), result));
- if (result == 10)
- this->proxy_.exit ();
- }
-
-private:
- HA_ControllerAgentProxy& proxy_;
-};
-// Listing 1
-// Listing 2 code/ch15
-int ACE_TMAIN (int, ACE_TCHAR *[])
-{
- HA_ControllerAgentProxy controller;
- ACE_Future<int> results[10];
- CompletionCallBack cb (controller);
-
- for (int i = 0 ; i < 10; i++)
- {
- results[i] = controller.status_update ();
- results[i].attach (&cb);
- }
-
- ACE_Thread_Manager::instance ()->wait ();
- return 0;
-}
-// Listing 2
-
-#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
-template class ACE_Future<int>;
-template class ACE_Future_Rep<int>;
-template class ACE_Future_Observer<int>;
-template class ACE_Unbounded_Set<ACE_Future_Observer<int> *>;
-template class ACE_Node<ACE_Future_Observer<int> *>;
-template class ACE_Unbounded_Set_Iterator<ACE_Future_Observer<int> *>;
-template class ACE_Atomic_Op<ACE_Null_Mutex, unsigned int>;
-template class ACE_Atomic_Op_Ex<ACE_Null_Mutex, unsigned int>;
-#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
-#pragma instantiate ACE_Future<int>
-#pragma instantiate ACE_Future_Rep<int>
-#pragma instantiate ACE_Future_Observer<int>
-#pragma instantiate ACE_Unbounded_Set<ACE_Future_Observer<int> *>
-#pragma instantiate ACE_Node<ACE_Future_Observer<int> *>
-#pragma instantiate ACE_Unbounded_Set_Iterator<ACE_Future_Observer<int> *>
-#pragma instantiate ACE_Atomic_Op<ACE_Null_Mutex, unsigned int>
-#pragma instantiate ACE_Atomic_Op_Ex<ACE_Null_Mutex, unsigned int>
-#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
-
-#else
-#include "ace/OS_main.h"
-#include "ace/OS_NS_stdio.h"
-
-int ACE_TMAIN (int, ACE_TCHAR *[])
-{
- ACE_OS::puts (ACE_TEXT ("This example requires threads."));
- return 0;
-}
-
-#endif /* ACE_HAS_THREADS */