📄 htbp_stream.cpp
字号:
/* -*- C++ -*- *///=============================================================================/** * @file HTBP_Stream.cpp * * $Id: HTBP_Stream.cpp 79343 2007-08-14 21:49:55Z mesnier_p $ * * @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, ACE_TEXT("ACE::HTBP::Stream::") ACE_TEXT("recv(buf,n,flags) called, but no ") ACE_TEXT("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, ACE_TEXT("ACE::HTBP::Stream::") ACE_TEXT("recv(buf,n) called, but no ") ACE_TEXT("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, ACE_TEXT("ACE::HTBP::Stream::") ACE_TEXT("recv(iov,iovcnt) called, but no ") ACE_TEXT("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, ACE_TEXT("ACE::HTBP::Stream::") ACE_TEXT("recv(io_vec) called, but no ") ACE_TEXT("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_TEXT("ACE::HTBP::Stream: Asynch ") ACE_TEXT("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_TEXT("ACE::HTBP::Stream: Asynch ") ACE_TEXT("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_TEXT("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_TEXT("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_TEXT("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_TEXT("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_TEXT("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_TEXT("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_TEXT("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 + -