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

📄 recordingdevice_text.cpp

📁 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework)
💻 CPP
字号:
/* * RecordingDevice_Text.cpp,v 1.6 2004/10/06 16:27:14 shuston Exp * * A RecordingDevice that listens to a socket and collects text. */#include "MessageInfo.h"#include "RecordingDevice.h"#include "RecordingDevice_Text.h"#include "Util.h"TextListenerAcceptor::TextListenerAcceptor (void)  : ACE_Event_Handler(), RecordingDevice(){ }// ACE_Event_Handler interfaceint TextListenerAcceptor::open (ACE_INET_Addr &addr){  if (this->acceptor_.open (addr, 1) == -1)    ACE_ERROR_RETURN ((LM_ERROR,                       ACE_TEXT ("%p\n"),                       ACE_TEXT ("acceptor open")),                      -1);  return 0;}ACE_HANDLE TextListenerAcceptor::get_handle (void) const{  return this->acceptor_.get_handle ();}int TextListenerAcceptor::handle_input (ACE_HANDLE){  ACE_DEBUG ((LM_INFO,              ACE_TEXT ("TextListenerAcceptor - connection request\n" )));  return 0;}int TextListenerAcceptor::accept (ACE_SOCK_Stream &peer){  return this->acceptor_.accept (peer);}// RecordingDevice interface// Open a listening socket on the port specified by argv.int TextListenerAcceptor::init (int argc, ACE_TCHAR *argv[]){  ACE_UNUSED_ARG(argc);  ACE_INET_Addr addr (argv[1]);  if (this->open (addr) < 0)    ACE_ERROR_RETURN ((LM_ERROR,                       ACE_TEXT ("%p\n"),                       ACE_TEXT ("TextListener - open")),                      -1);  return 0;}ACE_Event_Handler *TextListenerAcceptor::get_handler (void) const{  return (ACE_Event_Handler *)this;}RecordingDevice *TextListenerAcceptor::wait_for_activity (void){  this->RecordingDevice::wait_for_activity ();  return new TextListener (this);}int TextListenerAcceptor::answer_call (void){  return -1;}CallerId *TextListenerAcceptor::retrieve_callerId (void){  return 0;}int TextListenerAcceptor::play_message (ACE_FILE_Addr &addr){  ACE_UNUSED_ARG(addr);  return 0;}MessageType *TextListenerAcceptor::record_message (ACE_FILE_Addr &addr){  ACE_UNUSED_ARG(addr);  return 0;}// Listing 01 code/ch18TextListener::TextListener (TextListenerAcceptor *acceptor)  : acceptor_(acceptor){  ACE_TRACE ("TextListener ctor");  ACE_NEW (this->command_stream_, CommandStream (&(this->peer_)));  this->command_stream_->open (0);}// Listing 01const ACE_TCHAR *TextListener::get_name (void) const{  return ACE_TEXT ("TextListener");}// Listing 02 code/ch18int TextListener::answer_call (void){  ACE_DEBUG ((LM_DEBUG,              ACE_TEXT ("TextListener::answer_call()\n")));  Command *c = new Command ();  c->command_ = Command::CMD_ANSWER_CALL;  c->extra_data_ = this->acceptor_;  c = this->command_stream_->execute (c);  ACE_DEBUG ((LM_DEBUG,              ACE_TEXT ("TextListener::answer_call() ")              ACE_TEXT ("result is %d\n"),              c->numeric_result_));  return c->numeric_result_;}// Listing 02// Listing 03 code/ch18CallerId *TextListener::retrieve_callerId (void){  ACE_DEBUG ((LM_DEBUG,              ACE_TEXT ("TextListener::retrieve_callerId()\n")));  Command *c = new Command ();  c->command_ = Command::CMD_RETRIEVE_CALLER_ID;  c = this->command_stream_->execute (c);  CallerId *caller_id = new CallerId (c->result_);  return caller_id;}// Listing 03// Listing 04 code/ch18int TextListener::play_message (ACE_FILE_Addr &addr){  MessageType *type = Util::identify_message (addr);  if (type->is_text ())    {      Command *c = new Command ();      c->command_ = Command::CMD_PLAY_MESSAGE;      c->extra_data_ = &addr;      c = this->command_stream_->execute (c);      return c->numeric_result_;    }  ACE_FILE_Addr temp (ACE_TEXT ("/tmp/outgoing_message.text"));  ACE_FILE_IO *file;  if (type->is_audio ())    file = Util::audio_to_text (addr, temp);  else if (type->is_video ())    file = Util::video_to_text (addr, temp);  else    ACE_ERROR_RETURN      ((LM_ERROR, ACE_TEXT ("Invalid message type %d\n"),        type->get_codec ()), -1);  int rval = this->play_message (temp);  file->remove ();  return rval;}// Listing 04// Listing 05 code/ch18MessageType *TextListener::record_message (ACE_FILE_Addr &addr){  Command *c = new Command ();  c->command_ = Command::CMD_RECORD_MESSAGE;  c->extra_data_ = &addr;  c = this->command_stream_->execute (c);  if (c->numeric_result_ == -1)    return 0;  return new MessageType (MessageType::RAWTEXT, addr);}// Listing 05// Listing 06 code/ch18void TextListener::release (void){  delete this;}// Listing 06

⌨️ 快捷键说明

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