ACE_POSIX_Asynch_Read_Dgram_Result Class Reference

This is class provides concrete implementation for ACE_Asynch_Read_Dgram::Result class. More...

#include <POSIX_Asynch_IO.h>

Inheritance diagram for ACE_POSIX_Asynch_Read_Dgram_Result:

Inheritance graph
[legend]
Collaboration diagram for ACE_POSIX_Asynch_Read_Dgram_Result:

Collaboration graph
[legend]
List of all members.

Public Member Functions

size_t bytes_to_read (void) const
ACE_Message_Blockmessage_block (void) const
 Message block which contains the read data.

int remote_address (ACE_Addr &addr) const
 The address of where the packet came from.

sockaddr * saddr (void) const
int flags (void) const
 The flags used in the read.

ACE_HANDLE handle (void) const
 I/O handle used for reading.


Protected Member Functions

 ACE_POSIX_Asynch_Read_Dgram_Result (const ACE_Handler::Proxy_Ptr &handler_proxy, ACE_HANDLE handle, ACE_Message_Block *message_block, size_t bytes_to_read, int flags, int protocol_family, const void *act, ACE_HANDLE event, int priority, int signal_number=0)
virtual void complete (size_t bytes_transferred, int success, const void *completion_key, u_long error)
 Proactor will call this method when the read completes.

virtual ~ACE_POSIX_Asynch_Read_Dgram_Result (void)
 Destructor.


Protected Attributes

size_t bytes_to_read_
 Bytes requested when the asynchronous read was initiated.

ACE_Message_Blockmessage_block_
 Message block for reading the data into.

ACE_Addrremote_address_
 The address of where the packet came from.

int addr_len_
int flags_
 The flags used in the read.

ACE_HANDLE handle_
 I/O handle used for reading.


Friends

class ACE_POSIX_Asynch_Read_Dgram
 Factory classes will have special permissions.

class ACE_POSIX_Proactor
 Proactor class has special permission.


Detailed Description

This is class provides concrete implementation for ACE_Asynch_Read_Dgram::Result class.

Definition at line 1229 of file POSIX_Asynch_IO.h.


Constructor & Destructor Documentation

ACE_POSIX_Asynch_Read_Dgram_Result::ACE_POSIX_Asynch_Read_Dgram_Result const ACE_Handler::Proxy_Ptr handler_proxy,
ACE_HANDLE  handle,
ACE_Message_Block message_block,
size_t  bytes_to_read,
int  flags,
int  protocol_family,
const void *  act,
ACE_HANDLE  event,
int  priority,
int  signal_number = 0
[protected]
 

Constructor is protected since creation is limited to ACE_Asynch_Read_Dgram factory.

Definition at line 2186 of file POSIX_Asynch_IO.cpp.

References ACE_NEW, and ACE_Handler::Proxy_Ptr.

02196   : ACE_POSIX_Asynch_Result
02197       (handler_proxy, act, event, 0, 0, priority, signal_number),
02198     bytes_to_read_ (bytes_to_read),
02199     message_block_ (message_block),
02200     remote_address_ (0),
02201     addr_len_ (0),
02202     flags_ (flags),
02203     handle_ (handle)
02204 {
02205   ACE_UNUSED_ARG (protocol_family);
02206   this->aio_fildes = handle;
02207   this->aio_nbytes = bytes_to_read;
02208   ACE_NEW (this->remote_address_, ACE_INET_Addr);
02209 }

ACE_POSIX_Asynch_Read_Dgram_Result::~ACE_POSIX_Asynch_Read_Dgram_Result void   )  [protected, virtual]
 

Destructor.

Definition at line 2237 of file POSIX_Asynch_IO.cpp.

References remote_address_.

02238 {
02239   delete this->remote_address_;
02240 }


Member Function Documentation

size_t ACE_POSIX_Asynch_Read_Dgram_Result::bytes_to_read void   )  const [virtual]
 

The number of bytes which were requested at the start of the asynchronous read.

Implements ACE_Asynch_Read_Dgram_Result_Impl.

Definition at line 2139 of file POSIX_Asynch_IO.cpp.

02140 {
02141   return this->bytes_to_read_;
02142 }

void ACE_POSIX_Asynch_Read_Dgram_Result::complete size_t  bytes_transferred,
int  success,
const void *  completion_key,
u_long  error
[protected, virtual]
 

Proactor will call this method when the read completes.

Implements ACE_Asynch_Result_Impl.

Definition at line 2212 of file POSIX_Asynch_IO.cpp.

References ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::get(), ACE_Handler::handle_read_dgram(), remote_address_, and ACE_Addr::set_size().

02216 {
02217   // Copy the data which was returned by GetQueuedCompletionStatus
02218   this->bytes_transferred_ = bytes_transferred;
02219   this->success_ = success;
02220   this->completion_key_ = completion_key;
02221   this->error_ = error;
02222 
02223   // <errno> is available in the aiocb.
02224   ACE_UNUSED_ARG (error);
02225 
02226  this->remote_address_->set_size(this->addr_len_);
02227 
02228   // Create the interface result class.
02229   ACE_Asynch_Read_Dgram::Result result (this);
02230 
02231   // Call the application handler.
02232   ACE_Handler *handler = this->handler_proxy_.get ()->handler ();
02233   if (handler != 0)
02234     handler->handle_read_dgram (result);
02235 }

int ACE_POSIX_Asynch_Read_Dgram_Result::flags void   )  const [virtual]
 

The flags used in the read.

Implements ACE_Asynch_Read_Dgram_Result_Impl.

Definition at line 2168 of file POSIX_Asynch_IO.cpp.

02169 {
02170   return this->flags_;
02171 }

ACE_HANDLE ACE_POSIX_Asynch_Read_Dgram_Result::handle void   )  const [virtual]
 

I/O handle used for reading.

Implements ACE_Asynch_Read_Dgram_Result_Impl.

Definition at line 2174 of file POSIX_Asynch_IO.cpp.

02175 {
02176   return this->handle_;
02177 }

ACE_Message_Block * ACE_POSIX_Asynch_Read_Dgram_Result::message_block void   )  const [virtual]
 

Message block which contains the read data.

Implements ACE_Asynch_Read_Dgram_Result_Impl.

Definition at line 2180 of file POSIX_Asynch_IO.cpp.

02181 {
02182   return this->message_block_;
02183 }

int ACE_POSIX_Asynch_Read_Dgram_Result::remote_address ACE_Addr addr  )  const [virtual]
 

The address of where the packet came from.

Implements ACE_Asynch_Read_Dgram_Result_Impl.

Definition at line 2145 of file POSIX_Asynch_IO.cpp.

References ACE_Addr::get_size(), ACE_Addr::get_type(), remote_address_, and ACE_Addr::set_addr().

02146 {
02147   int retVal = -1;  // failure
02148 
02149   // make sure the addresses are of the same type
02150   if (addr.get_type () == this->remote_address_->get_type ())
02151   { // copy the remote_address_ into addr
02152     addr.set_addr (this->remote_address_->get_addr (),
02153                    this->remote_address_->get_size ());
02154     retVal = 0; // success
02155   }
02156 
02157   return retVal;
02158 }

sockaddr * ACE_POSIX_Asynch_Read_Dgram_Result::saddr void   )  const
 

Definition at line 2161 of file POSIX_Asynch_IO.cpp.

References ACE_Addr::get_addr(), and remote_address_.

02162 {
02163   return (sockaddr *) this->remote_address_->get_addr ();
02164 }


Friends And Related Function Documentation

friend class ACE_POSIX_Asynch_Read_Dgram [friend]
 

Factory classes will have special permissions.

Definition at line 1234 of file POSIX_Asynch_IO.h.

friend class ACE_POSIX_Proactor [friend]
 

Proactor class has special permission.

Definition at line 1237 of file POSIX_Asynch_IO.h.


Member Data Documentation

int ACE_POSIX_Asynch_Read_Dgram_Result::addr_len_ [protected]
 

Definition at line 1290 of file POSIX_Asynch_IO.h.

size_t ACE_POSIX_Asynch_Read_Dgram_Result::bytes_to_read_ [protected]
 

Bytes requested when the asynchronous read was initiated.

Definition at line 1282 of file POSIX_Asynch_IO.h.

int ACE_POSIX_Asynch_Read_Dgram_Result::flags_ [protected]
 

The flags used in the read.

Definition at line 1293 of file POSIX_Asynch_IO.h.

ACE_HANDLE ACE_POSIX_Asynch_Read_Dgram_Result::handle_ [protected]
 

I/O handle used for reading.

Definition at line 1296 of file POSIX_Asynch_IO.h.

ACE_Message_Block* ACE_POSIX_Asynch_Read_Dgram_Result::message_block_ [protected]
 

Message block for reading the data into.

Definition at line 1285 of file POSIX_Asynch_IO.h.

ACE_Addr* ACE_POSIX_Asynch_Read_Dgram_Result::remote_address_ [protected]
 

The address of where the packet came from.

Definition at line 1288 of file POSIX_Asynch_IO.h.

Referenced by complete(), remote_address(), saddr(), and ~ACE_POSIX_Asynch_Read_Dgram_Result().


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 11:26:37 2006 for ACE by doxygen 1.3.6