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

📄 htbp_stream.cpp

📁 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework)
💻 CPP
字号:
/* -*- C++ -*- *///=============================================================================/** *  @file    HTBP_Stream.cpp * *  HTBP_Stream.cpp,v 1.3 2005/11/27 12:11:35 ossama Exp * *  @author Phil Mesnier, Priyanka Gontla *///=============================================================================#include "HTBP_Stream.h"#include "HTBP_Session.h"#include "HTBP_Filter_Factory.h"#include "ace/Message_Block.h"ACE_BEGIN_VERSIONED_NAMESPACE_DECL// Initialization and termination methods./// Constructor.ACE::HTBP::Stream::Stream (ACE::HTBP::Session *s)  : session_ (s){  if (s == 0)    // create a temporary session to be replaced on first recv.    ACE_NEW (session_, ACE::HTBP::Session);  session_->stream (this);}/// Destructor.ACE::HTBP::Stream::~Stream (void){}  /// Dump the state of an object.voidACE::HTBP::Stream::dump (void) const{}//---------------------------------------------------------------------------// = I/O functions./// Recv an <n> byte buffer from the connected socket.ssize_tACE::HTBP::Stream::recv (void *buf,                 size_t n,                 int flags,                 const ACE_Time_Value *timeout) const{  if (this->session_->inbound() == 0)    {      errno = EWOULDBLOCK;      ACE_ERROR_RETURN ((LM_ERROR,"recv(buf,n,flags) called, but no "                         "inbound channel connected to stream\n"),-1);    }  return this->session_->inbound()->recv(buf,n,flags,timeout);}  /// Recv an <n> byte buffer from the connected socket.ssize_tACE::HTBP::Stream::recv (void *buf,                 size_t n,                 const ACE_Time_Value *timeout) const{  if (this->session_->inbound() == 0)    {      errno = EWOULDBLOCK;      ACE_ERROR_RETURN ((LM_ERROR,"recv(buf,n) called, but no "                         "inbound channel connected to stream\n"),-1);    }  return this->session_->inbound()->recv(buf,n,timeout);}  /// Recv an <iovec> of size <n> from the connected socket.ssize_tACE::HTBP::Stream::recvv (iovec iov[],                  int iovcnt,                  const ACE_Time_Value *timeout) const{  if (this->session_->inbound() == 0)    {      errno = EWOULDBLOCK;      ACE_ERROR_RETURN ((LM_ERROR,"recv(iov,iovcnt) called, but no "                         "inbound channel connected to stream\n"),-1);    }  return this->session_->inbound()->recvv(iov,iovcnt,timeout);}ssize_tACE::HTBP::Stream::recvv (iovec *io_vec,                  const ACE_Time_Value *timeout) const{  if (this->session_->inbound() == 0)    {      errno = EWOULDBLOCK;      ACE_ERROR_RETURN ((LM_ERROR,"recv(io_vec) called, but no "                         "inbound channel connected to stream\n"),-1);    }  return this->session_->inbound()->recvv(io_vec,timeout);}ssize_tACE::HTBP::Stream::recv (void *,                 size_t,                 ACE_OVERLAPPED *) const{  errno = ENOTSUP;  ACE_ERROR_RETURN ((LM_ERROR, "ACE::HTBP::Stream: Asynch recv not supported\n"),-1);}ssize_tACE::HTBP::Stream::send (const void *buf,                 size_t n,                 int flags,                 const ACE_Time_Value *timeout) const{  if (this->session_->outbound() == 0)    {      ACE_Message_Block *msg = 0;      ACE_NEW_RETURN (msg,ACE_Message_Block(n),-1);      msg->copy ((const char *)buf,n);      // probably ought to separately enqueue the flags and put the data buf      // in a continuation message      // Also, the timeout poses another interesting problem.      return this->session_->enqueue(msg);    }  return this->session_->outbound()->send(buf,n,flags,timeout);}ssize_tACE::HTBP::Stream::send (const void *buf,                 size_t n,                 const ACE_Time_Value *timeout) const{  if (this->session_->outbound() == 0)    {      ACE_Message_Block *msg = 0;      ACE_NEW_RETURN (msg,ACE_Message_Block(n),-1);      msg->copy ((const char *)buf,n);      return this->session_->enqueue(msg);    }  return this->session_->outbound()->send(buf,n,timeout);}ssize_tACE::HTBP::Stream::sendv (const iovec iov[],                  int iovcnt,                  const ACE_Time_Value *timeout) const{  if (this->session_->outbound() == 0)    {      ACE_Message_Block *msg = 0;      size_t total = 0;      int i = 0;      for (; i < iovcnt; i++)        total += iov[i].iov_len;      ACE_NEW_RETURN (msg,ACE_Message_Block(total),-1);      for (i = 0; i < iovcnt; i++)        msg->copy ((const char *)iov[i].iov_base,iov[i].iov_len);      return this->session_->enqueue(msg);    }  return this->session_->outbound()->sendv(iov,iovcnt,timeout);}ssize_tACE::HTBP::Stream::send (const void *,                 size_t ,                 ACE_OVERLAPPED *) const{  errno = ENOTSUP;  ACE_ERROR_RETURN ((LM_ERROR, "ACE::HTBP::Stream: Asynch send not supported\n"),-1);}ssize_tACE::HTBP::Stream::recv_n (void *,                   size_t ,                   int ,                   const ACE_Time_Value *,                   size_t *) const{  errno = ENOTSUP;  ACE_ERROR_RETURN ((LM_ERROR, "ACE::HTBP::Stream: recv_n not supported\n"),-1);}  /// Try to recv exactly <len> bytes into <buf> from the connected socket.ssize_tACE::HTBP::Stream::recv_n (void *,                   size_t ,                   const ACE_Time_Value *,                   size_t *) const{  errno = ENOTSUP;  ACE_ERROR_RETURN ((LM_ERROR, "ACE::HTBP::Stream: recv_n not supported\n"),-1);}  /// Receive an <iovec> of size <iovcnt> from the connected socket.ssize_tACE::HTBP::Stream::recvv_n (iovec [],                   int ,                   const ACE_Time_Value *,                   size_t *) const{  errno = ENOTSUP;  ACE_ERROR_RETURN ((LM_ERROR, "ACE::HTBP::Stream: recvv_n not supported\n"),-1);}  /// Try to send exactly <len> bytes from <buf> to the connection socket.ssize_tACE::HTBP::Stream::send_n (const void *,                   size_t ,                   int ,                   const ACE_Time_Value *,                   size_t *) const{  errno = ENOTSUP;  ACE_ERROR_RETURN ((LM_ERROR, "ACE::HTBP::Stream: send_n not supported\n"),-1);}  /// Try to send exactly <len> bytes from <buf> to the connected socket.ssize_tACE::HTBP::Stream::send_n (const void *,                   size_t ,                   const ACE_Time_Value *,                   size_t *) const{  errno = ENOTSUP;  ACE_ERROR_RETURN ((LM_ERROR, "ACE::HTBP::Stream: send_n not supported\n"),-1);}  /// Send all the <message_block>s chained through their <next> and  /// <cont> pointers.  This call uses the underlying OS gather-write  /// operation to reduce the domain-crossing penalty.ssize_tACE::HTBP::Stream::send_n (const ACE_Message_Block *,                   const ACE_Time_Value *,                   size_t *) const{  errno = ENOTSUP;  ACE_ERROR_RETURN ((LM_ERROR, "ACE::HTBP::Stream: send_n not supported\n"),-1);}  /// Send an <iovec> of size <iovcnt> to the connected socket.ssize_tACE::HTBP::Stream::sendv_n (const iovec [],                    int,                    const ACE_Time_Value *,                    size_t *) const{  errno = ENOTSUP;  ACE_ERROR_RETURN ((LM_ERROR, "ACE::HTBP::Stream: sendv_n not supported\n"),-1);}intACE::HTBP::Stream::close_reader (void){  return this->session_->close_inbound();}intACE::HTBP::Stream::close_writer (void){  return this->session_->close_outbound();}intACE::HTBP::Stream::close (void){  return this->session_->close();}intACE::HTBP::Stream::enable (int value) const{  return this->session_->enable(value);}intACE::HTBP::Stream::disable (int value) const{  return this->session_->disable(value);}intACE::HTBP::Stream::get_local_addr (ACE::HTBP::Addr &local_addr) const{  local_addr = this->session_->local_addr ();  return 0;}intACE::HTBP::Stream::get_remote_addr (ACE::HTBP::Addr &peer_addr) const{  peer_addr = this->session_->peer_addr();  return 0;}ACE::HTBP::Session *ACE::HTBP::Stream::session (void) const{  return this->session_;}voidACE::HTBP::Stream::session (ACE::HTBP::Session *s){  delete this->session_;  this->session_ = s;  s->stream (this);}ACE_HANDLEACE::HTBP::Stream::get_handle (void) const{  return ACE_INVALID_HANDLE;}voidACE::HTBP::Stream::set_handle (ACE_HANDLE ){}ACE_END_VERSIONED_NAMESPACE_DECL

⌨️ 快捷键说明

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