---
name: "ACE_POSIX_AIOCB_Proactor"
section: "3"
platform: "linux"
package: "libace-doc"
version: "5.0.7-4"
release: "Debian 2.2 (Potato)"
platforms: ["linux"]
url: "https://new.carta.tech/ACE_POSIX_AIOCB_Proactor"
---

# ACE\_POSIX\_AIOCB\_Proactor(3)

This Proactor makes use of Asynchronous I/O Control Blocks (AIOCB) to notify/get the completion status of the aio\_ operations issued.

## NAME

ACE\_POSIX\_AIOCB\_Proactor -

This Proactor makes use of Asynchronous I/O Control Blocks (AIOCB) to notify/get the completion status of the aio\_ operations issued.

## SYNOPSIS

```
#include <ace/POSIX_Proactor.h>
class ACE_POSIX_AIOCB_Proactor : public ACE_POSIX_Proactor
{
  public:
    friend class ACE_AIOCB_Notify_Pipe_Manager;
    friend class ACE_POSIX_AIOCB_Asynch_Operation;
    ACE_POSIX_AIOCB_Proactor (void);
    virtual ~ACE_POSIX_AIOCB_Proactor (void);
    virtual int handle_events (ACE_Time_Value &wait_time);
    virtual int handle_events (void);
    virtual int post_completion (ACE_POSIX_Asynch_Result *result);
    virtual ACE_Asynch_Read_Stream_Impl *create_asynch_read_stream (
        void
        );
    virtual ACE_Asynch_Write_Stream_Impl *create_asynch_write_stream (
        void
        );
    virtual ACE_Asynch_Read_File_Impl *create_asynch_read_file (void);
    virtual ACE_Asynch_Write_File_Impl *create_asynch_write_file (
        void
        );
    virtual ACE_Asynch_Accept_Impl *create_asynch_accept (void);
    virtual ACE_Asynch_Transmit_File_Impl *create_asynch_transmit_file (
        void
        );
  protected:
    virtual int handle_events (unsigned long milli_seconds);
    void application_specific_code (
        ACE_POSIX_Asynch_Result *asynch_result,
        u_long bytes_transferred,
        int success,
        const void *completion_key,
        u_long error
        );
    int register_aio_with_proactor (ACE_POSIX_Asynch_Result *result);
    ACE_AIOCB_Notify_Pipe_Manager* aiocb_notify_pipe_manager_;
    aiocb *aiocb_list_ [ACE_RTSIG_MAX];
    ACE_POSIX_Asynch_Result *result_list_ [ACE_RTSIG_MAX];
    size_t aiocb_list_max_size_;
    size_t aiocb_list_cur_size_;
};
```

## DESCRIPTION

## Methods used to create Asynch\_IO objects. We create the right

objects here in these methods.

```
virtual ACE_Asynch_Read_Stream_Impl *create_asynch_read_stream (void);
```

```
virtual ACE_Asynch_Write_Stream_Impl *create_asynch_write_stream (
    void
    );
```

```
virtual ACE_Asynch_Read_File_Impl *create_asynch_read_file (void);
```

```
virtual ACE_Asynch_Write_File_Impl *create_asynch_write_file (void);
```

```
virtual ACE_Asynch_Accept_Impl *create_asynch_accept (void);
```

```
virtual ACE_Asynch_Transmit_File_Impl *create_asynch_transmit_file (
    void
    );
```

## AUTHOR

Irfan Pyarali irfan@cs.wustl.edu, Tim Harrison harrison@cs.wustl.edu and Alexander Babu Arulanthu alex@cs.wustl.edu

## LIBRARY

ace
