console_input.cpp

来自「ace开发环境 用来开发网络程序 其运用了设计模式、多平台、C++等多种知识」· C++ 代码 · 共 88 行

CPP
88
字号
// $Id: Console_Input.cpp 53306 2003-11-05 09:38:58Z jwillemsen $// ============================================================================//// = LIBRARY//    examples//// = FILENAME//    Console_Input.cpp//// = DESCRIPTION////    This application tests the working of WFMO_Reactor when users//    are interested in console input.//// = AUTHOR//    Irfan Pyarali <irfan@cs.wustl.edu>//// ============================================================================#include "ace/Reactor.h"#include "ace/OS_NS_unistd.h"#include "ace/OS_NS_string.h"#include "ace/OS_main.h"ACE_RCSID(WFMO_Reactor, Console_Input, "$Id: Console_Input.cpp 53306 2003-11-05 09:38:58Z jwillemsen $")class Event_Handler : public ACE_Event_Handler{public:  Event_Handler (ACE_Reactor &reactor);  int handle_signal (int signum, siginfo_t * = 0, ucontext_t * = 0);  int handle_close (ACE_HANDLE handle,                    ACE_Reactor_Mask close_mask);};Event_Handler::Event_Handler (ACE_Reactor &reactor){  this->reactor (&reactor);  if (this->reactor ()->register_handler (this,                                          ACE_STDIN) != 0)    ACE_ERROR ((LM_ERROR,                "Registration with Reactor could not be done\n"));}intEvent_Handler::handle_signal (int, siginfo_t *, ucontext_t *){  ACE_TCHAR buffer[BUFSIZ];  int result = ACE_OS::read (ACE_STDIN, buffer, sizeof buffer);  buffer[result] = '\0';  if (result <= 0)    {      this->reactor ()->close ();      ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "ACE_OS::read"), -1);    }  if (ACE_OS::strcmp (ACE_TEXT("quit\r\n"), buffer) == 0)    this->reactor ()->close ();  ACE_DEBUG ((LM_DEBUG, "User input: %s", buffer));  return 0;}intEvent_Handler::handle_close (ACE_HANDLE,                             ACE_Reactor_Mask){  ACE_DEBUG ((LM_DEBUG, "Event_Handler removed from Reactor\n"));  return 0;}intACE_TMAIN (int, ACE_TCHAR *[]){  ACE_Reactor reactor;  Event_Handler handler (reactor);  int result = 0;  while (result != -1)    result = reactor.handle_events ();  return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?