⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 recordingdevice.h

📁 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework)
💻 H
字号:
/* -*- C++ -*- */// RecordingDevice.h,v 1.2 2004/01/01 23:03:38 shuston Exp#ifndef RECORDING_DEVICE_H#define RECORDING_DEVICE_H#include "ace/FILE_Addr.h"#include "ace/Event_Handler.h"#include "ace/Log_Msg.h"#include "ace/Reactor.h"#include "ace/Semaphore.h"class CallerId;class MessageType;class RecordingDevice{public:  RecordingDevice ()  {    // Initialize the semaphore so that we don't block on the    // first call to wait_for_activity().  }  virtual ~RecordingDevice ()  {  }  virtual const ACE_TCHAR *get_name (void) const  {    return ACE_TEXT ("UNKNOWN");  }  virtual int init (int, ACE_TCHAR *[])  {    return 0;  }  // Answer the incoming call  virtual int answer_call (void) = 0;  // Fetch some form of caller identification at the hardware level.  virtual CallerId *retrieve_callerId (void) = 0;  // Fetch the message at the location specified by 'addr' and play  // it for the caller.  virtual int play_message (ACE_FILE_Addr &addr) = 0;  // Record data from our physical device into the file at the  // specified address. Return the number of bytes recorded.  virtual MessageType *record_message (ACE_FILE_Addr &addr) = 0;  // Release the RecordingDevice to accept another incoming call  virtual void release (void)  {    this->release_semaphore ();  }  // Get the handler of the device so that wait_for_activity() can  // wait for data to arrive.  virtual ACE_Event_Handler *get_handler (void) const  {    return 0;  }  virtual RecordingDevice *wait_for_activity (void)  {    // Block on a semaphore until it says we're ready to do    // work.    ACE_DEBUG ((LM_DEBUG,                ACE_TEXT ("Waiting for semaphore\n")));    this->acquire_semaphore ();    // Use the reactor to wait for activity on our handle    ACE_Reactor reactor;    ACE_Event_Handler *handler = this->get_handler ();    ACE_DEBUG ((LM_DEBUG,                ACE_TEXT ("Handler is %@\n"),                (void *)handler));    reactor.register_handler (this->get_handler (),                              ACE_Event_Handler::READ_MASK);    reactor.handle_events ();    // Error-check this...    // Leave the semaphore locked so that we'll block until    // recording_complete() is invoked.    return this;  }protected:  void acquire_semaphore (void)  {    this->semaphore_.acquire ();  }  void release_semaphore (void)  {    // Reset the semaphore so that wait_for_activity() will    // unblock.    ACE_DEBUG ((LM_DEBUG,                ACE_TEXT ("Releasing semaphore\n")));    this->semaphore_.release ();  }private:  ACE_Semaphore semaphore_;};#include "RecordingDevice_Text.h"#include "RecordingDevice_USRVM.h"#include "RecordingDevice_QC.h"#include "RecordingDeviceFactory.h"#endif /* RECORDING_DEVICE_H */

⌨️ 快捷键说明

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