• 大小: 3.13MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-21
  • 语言: 其他
  • 标签: ACE  源代码  

资源简介

ACE 程序员指南 配套源代码,书中的示例代码

资源截图

代码片段和文件信息

// $Id: AO.cpp 94310 2011-07-09 19:10:06Z schmidt $

#include “ace/config-lite.h“
#if defined (ACE_HAS_THREADS)

#include “ace/OS_NS_unistd.h“
#include “ace/Activation_Queue.h“
#include “ace/Method_Request.h“
#include “ace/Task.h“
#include “ace/Future.h“
#include “ace/Auto_Ptr.h“
// Listing 1 code/ch15
class HA_ControllerAgent
{
  // Proxy to the HA_Controller that is on the network.
public:
  HA_ControllerAgent ()
  {
    ACE_TRACE(“HA_ControllerAgent::HA_ControllerAgent“);
    status_result_ = 1;
  }

  int status_update (void)
  {
    ACE_TRACE (“HA_ControllerAgent::status_update“);
    ACE_DEBUG ((LM_DEBUG
                ACE_TEXT (“Obtaining a status_update in %t “)
                ACE_TEXT (“thread of control\n“)));
    // Simulate time to send message and get status.
    ACE_OS::sleep (2);
    return next_result_id ();
  }

private:
  int next_result_id (void)
  {
    ACE_TRACE (“HA_ControllerAgent::next_cmd_id“);
    return status_result_++;
  }

  int status_result_;
};
// Listing 1
// Listing 2 code/ch15
class StatusUpdate : public ACE_Method_Request
{
public:
  StatusUpdate (HA_ControllerAgent& controller
                ACE_Future& returnVal)
    : controller_(controller) returnVal_(returnVal)
  {
    ACE_TRACE (“StatusUpdate::StatusUpdate“);
  }

  virtual int call (void)
  {
    ACE_TRACE (“StatusUpdate::call“);

    // status_update with the controller.
    this->returnVal_.set (this->controller_.status_update ());
    return 0;
  }

private:
  HA_ControllerAgent& controller_;
  ACE_Future returnVal_;
};
// Listing 2
// Listing 3 code/ch15
class ExitMethod : public ACE_Method_Request
{
public:
  virtual int call (void)
  {
    // Cause exit.
    return -1;
  }
};
// Listing 3
// Listing 4 code/ch15
class Scheduler : public ACE_Task_base
{
public:
  Scheduler ()
  {
    ACE_TRACE (“Scheduler::Scheduler“);
    this->activate ();
  }

  virtual int svc (void)
  {
    ACE_TRACE (“Scheduler::svc“);

    while (1)
      {
        // Dequeue the next method object
        auto_ptr
          request (this->activation_queue_.dequeue ());

        // Invoke the method request.
        if (request->call () == -1)
          break;
      }

    return 0;
  }

  int enqueue (ACE_Method_Request *request)
  {
    ACE_TRACE (“Scheduler::enqueue“);
    return this->activation_queue_.enqueue (request);
  }

private:
  ACE_Activation_Queue activation_queue_;
};
// Listing 4
// Listing 5 code/ch15
class HA_ControllerAgentProxy
{
  // This acts as a Proxy to the controller impl object.
public:
  ACE_Future status_update (void)
  {
    ACE_TRACE(“HA_ControllerAgentProxy::status_update“);
    ACE_Future result;

    // Create and enqueue a method request on the scheduler.
    this->scheduler_.enqueue
      (new StatusUpdate (this->controller_ result));

    // Return Future to the cl

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-06-10 13:20  APG\
     目录           0  2014-06-30 11:12  APG\Active_objects\
     文件         284  2009-04-29 15:53  APG\Active_objects\active_objects.mpc
     文件        2716  2013-05-27 10:22  APG\Active_objects\Active_objects_vc10.sln
     文件        2709  2013-05-27 10:31  APG\Active_objects\Active_objects_vc9.sln
     文件        4176  2011-07-09 21:10  APG\Active_objects\AO.cpp
     文件        4294  2011-07-09 21:10  APG\Active_objects\AO2.cpp
     文件       17462  2013-05-27 10:22  APG\Active_objects\AO2_vc10.vcxproj
     文件         798  2013-05-27 10:22  APG\Active_objects\AO2_vc10.vcxproj.filters
     文件        9571  2013-05-27 10:31  APG\Active_objects\AO2_vc9.vcproj
     文件        2629  2014-06-30 11:12  APG\Active_objects\AO2_vc9.vcproj.LIUJINLI.liujinli_.user
     文件       17447  2013-05-27 10:22  APG\Active_objects\AO_vc10.vcxproj
     文件         797  2013-05-27 10:22  APG\Active_objects\AO_vc10.vcxproj.filters
     文件        9560  2013-05-27 10:31  APG\Active_objects\AO_vc9.vcproj
     文件        2629  2014-06-30 11:12  APG\Active_objects\AO_vc9.vcproj.LIUJINLI.liujinli_.user
     文件        1403  2013-05-27 10:16  APG\Active_objects\GNUmakefile
     文件        5051  2013-05-27 10:16  APG\Active_objects\GNUmakefile.AO
     文件        5058  2013-05-27 10:16  APG\Active_objects\GNUmakefile.AO2
     文件       84272  2013-05-27 10:22  APG\APG_vc10.sln
     文件       84055  2013-05-27 10:31  APG\APG_vc9.sln
     目录           0  2014-06-30 11:12  APG\Config\
     文件        1854  2008-03-04 15:51  APG\Config\ARGV_Example.cpp
     文件       17670  2013-05-27 10:22  APG\Config\ARGV_Example_vc10.vcxproj
     文件        1119  2013-05-27 10:22  APG\Config\ARGV_Example_vc10.vcxproj.filters
     文件        9798  2013-05-27 10:31  APG\Config\ARGV_Example_vc9.vcproj
     文件        2629  2014-06-30 11:12  APG\Config\ARGV_Example_vc9.vcproj.LIUJINLI.liujinli_.user
     文件         510  2009-04-29 15:53  APG\Config\config.mpc
     文件       17667  2013-05-27 10:22  APG\Config\Config_HA_Status_vc10.vcxproj
     文件        1116  2013-05-27 10:22  APG\Config\Config_HA_Status_vc10.vcxproj.filters
     文件        9807  2013-05-27 10:31  APG\Config\Config_HA_Status_vc9.vcproj
     文件        2629  2014-06-30 11:12  APG\Config\Config_HA_Status_vc9.vcproj.LIUJINLI.liujinli_.user
............此处省略804个文件信息

评论

共有 条评论