博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ace 学习手记 20050829
阅读量:4211 次
发布时间:2019-05-26

本文共 4065 字,大约阅读时间需要 13 分钟。

编译vc下:

解开压缩包以后 创建一个config.h 的文件

#define ACE_HAS_STANDARD_CPP_LIBRARY 1

#include "ace/config-win32.h"

打开工程文件就可以编译库了。

编译工程 需要注意的是 路径设置 一般我会在环境变量 path 和 include 设置相应参数

然后设置为多线程编译  可惜了 我不能用editplus 编译了 要用vc 参数不会

///

我决定从example  开始看代码:

// test_log_msg.cpp,v 4.20 2003/11/10 01:48:03 dhinton Exp

// ============================================================================

//
// = LIBRARY
//    examples/Log_Msg
//
// = FILENAME
//    test_log_msg.cpp
//
// = DESCRIPTION
//     This program tests the Log_Msg abstraction and demontrates
//     several use cases.
//
// = AUTHOR
//    Douglas Schmidt <>
//
// ============================================================================

#include "ace/OS_main.h"

// FUZZ: disable check_for_streams_include

#include "ace/streams.h"

#include "ace/Log_Msg.h"

#include "ace/OS_NS_unistd.h"
#include "ace/OS_NS_stdlib.h"

ACE_RCSID(Log_Msg, test_log_msg, "test_log_msg.cpp,v 4.20 2003/11/10 01:48:03 dhinton Exp")

static void

cleanup (void)
{
  ACE_DEBUG ((LM_INFO,
              "leaving (%P)!/n"));
}

static void

cause_error (void)
{
  errno = EWOULDBLOCK;
  ACE_ERROR ((LM_DEBUG,
              "would block/n"));
}

int

ACE_TMAIN (int argc, ACE_TCHAR *argv[])
{
  // Note that the default behavior is to log to STDERR...

  int counter = 1 ;

  if (argc > 1)

    {
      if (ACE_LOG_MSG->open (argv[0],
                             ACE_Log_Msg::OSTREAM) == -1)
        ACE_ERROR ((LM_ERROR,
                    "cannot open logger!!!/n"));

      cause_error ();

      // Check to see what happened.
      if (ACE_LOG_MSG->op_status () == -1
          && ACE_LOG_MSG->errnum () == EWOULDBLOCK)
        ACE_DEBUG ((LM_DEBUG,
                    "op_status and errnum work!/n"));
      else
        ACE_ERROR ((LM_ERROR,
                    "op_status and errnum failed!/n"));
    }
  else
    {
      if (ACE_LOG_MSG->open (argv[0]) == -1)
        ACE_ERROR ((LM_ERROR,
                    "cannot open logger!!!/n"));

      cause_error ();

      // Check to see what happened.

      if (ACE_LOG_MSG->op_status () == -1
          && ACE_LOG_MSG->errnum () == EWOULDBLOCK)
        ACE_DEBUG ((LM_DEBUG,
                    "op_status and errnum work!/n"));
      else
        ACE_ERROR ((LM_ERROR,
                    "op_status and errnum failed!/n"));

      // Exercise many different combinations of STDERR and OSTREAM.

      ACE_DEBUG ((LM_INFO,

                  "%10f, %*s%s = %d/n",
                  3.1416 * counter++,
                  8,
                  "",
                  "hello",
                  10000));

      ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM);

      ACE_LOG_MSG->msg_ostream (&cout);

      ACE_DEBUG ((LM_INFO,

                  "%10f, %*s%s = %d/n",
                  3.1416 * counter,
                  8,
                  "",
                  "world",
                  10000 * counter++));

      ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR);

      ACE_DEBUG ((LM_INFO,

                  "%10f, %*s%s = %d/n",
                  3.1416 * counter,
                  8,
                  "",
                  "world",
                  10000 * counter++));

      ACE_LOG_MSG->msg_ostream (0);

      ACE_LOG_MSG->set_flags (ACE_Log_Msg::STDERR);

      ACE_DEBUG ((LM_INFO,

                  "%10f, %*s%s = %d/n",
                  3.1416 * counter,
                  8,
                  "",
                  "world",
                  10000 * counter++));

      ACE_LOG_MSG->clr_flags (ACE_Log_Msg::OSTREAM);

      ACE_LOG_MSG->msg_ostream (&cerr);

      ACE_DEBUG ((LM_INFO,

                  "%10f, %*s%s = %d/n",
                  3.1416 * counter,
                  8,
                  "",
                  "world",
                  10000 * counter++));

      static int array[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048};

      // Print out the binary bytes of the array in hex form.

      ACE_LOG_MSG->log_hexdump (LM_DEBUG,
                                (char *) array,
                                sizeof array);

      // Disable the LM_DEBUG and LM_INFO messages at the process level.

      u_long priority_mask =
        ACE_LOG_MSG->priority_mask (ACE_Log_Msg::PROCESS);
      ACE_CLR_BITS (priority_mask,
                    LM_DEBUG | LM_INFO);
      ACE_LOG_MSG->priority_mask (priority_mask,
                                  ACE_Log_Msg::PROCESS);

      ACE_DEBUG ((LM_INFO,

                  "This LM_INFO message should not print!/n"));
      ACE_DEBUG ((LM_DEBUG,
                  "This LM_DEBUG message should not print!/n"));

      ACE_SET_BITS (priority_mask,

                    LM_INFO);
      ACE_LOG_MSG->priority_mask (priority_mask,
                                  ACE_Log_Msg::PROCESS);

      ACE_DEBUG ((LM_INFO,

                  "This LM_INFO message should print!/n"));
      ACE_DEBUG ((LM_DEBUG,
                  "This LM_DEBUG message should not print!/n"));

      ACE_CLR_BITS (priority_mask, LM_INFO);

      ACE_LOG_MSG->priority_mask (priority_mask,
                                  ACE_Log_Msg::PROCESS);

      ACE_DEBUG ((LM_INFO,

                  "This LM_INFO message should not print!/n"));
      ACE_DEBUG ((LM_DEBUG,
                  "This LM_DEBUG message should not print!/n"));

      char badname[] = "badname";

      char *l_argv[2];

      l_argv[0] = badname;
      l_argv[1] = 0;

      if (ACE_OS::execv (badname,

                         l_argv) == -1)
        {
          ACE_ERROR ((LM_ERROR,
                      "%n: (%x), %p%r/n",
                      10000,
                      badname,
                      cleanup));
          ACE_OS::_exit ();
        }
    }
  return 0;
}

转载地址:http://xskmi.baihongyu.com/

你可能感兴趣的文章
第一次炒股小记
查看>>
《redis in action》ZSet相关命令
查看>>
《redis in action》redis发布订阅
查看>>
《redis in action》sort排序命令
查看>>
《redis in action》redis事务
查看>>
《redis in action》key的自动过期
查看>>
《redis in action》redis持久化简介
查看>>
《redis in action》redis快照
查看>>
《redis in action》Redis aof持久化
查看>>
《redis in action》开启aof日志
查看>>
CS224N研究热点2_Linear Algebraic Structure of Word Senses, with Applications to Polysemy(对于一词多义的向量表示研究)
查看>>
Java编程中,什么数据类型适合用来表示价格?
查看>>
ssh出错:sign_and_send_pubkey: signing failed: agent refused operation
查看>>
Zookeeper启动成功,但无法查看status
查看>>
OCFS2+ASM 的RAC安装文档
查看>>
Oracle RAC Failover 详解
查看>>
批处理 自动修改 IP 地址
查看>>
Oracle RAC LoadBalance
查看>>
v$sql,v$sqlarea,v$sqltext 和 v$sql_plan 说明
查看>>
ORA-31623 When Submitting a Datapump Job [ID 308388.1]
查看>>