TSDuck v3.44-4659
MPEG Transport Stream Toolkit
Loading...
Searching...
No Matches
ts::NonBlockingDevice::IOSB Class Reference

This structure indicates the status of a non-blocking I/O. More...

#include <tsNonBlockingDevice.h>

Public Member Functions

void reset ()
 Reset the IOSB for a new I/O operation.
 

Static Public Member Functions

static IOSBParentIOSB (::OVERLAPPED *overlap)
 Check if an OVERLAPPED structure is part of an IOSB.
 

Public Attributes

std::shared_ptr< AncillaryDataapp_data {}
 Pointer to application data.
 
std::shared_ptr< AncillaryDataio_data {}
 Pointer to I/O data (Windows-specific).
 
::OVERLAPPED overlap {}
 OVERLAPPED structure for an asynchronous I/O (Windows-specific).
 
bool pending = false
 This boolean indicates if the I/O is pending.
 

Detailed Description

This structure indicates the status of a non-blocking I/O.

You must be a former OpenVMS expert to understand the name...

The subclasses which implement non-blocking I/O should use an IOSB* parameter for any I/O operation which can be non-blocking. Typically, if the instance of the subclass is in blocking mode (the default), this parameter must be null. When the instance is in non-blocking mode, this parameter must not be null.

See also
checkNonBlocking()

Member Function Documentation

◆ ParentIOSB()

static IOSB * ts::NonBlockingDevice::IOSB::ParentIOSB ( ::OVERLAPPED *  overlap)
static

Check if an OVERLAPPED structure is part of an IOSB.

Parameters
[in]overlapAddress of an OVERLAPPED structure.
Returns
Address of the IOSB which contains the OVERLAPPED or nullptr if overlap is not part of an IOSB.

Member Data Documentation

◆ pending

bool ts::NonBlockingDevice::IOSB::pending = false

This boolean indicates if the I/O is pending.

  • UNIX systems: The I/O would block and was not started. Retry later.
  • Windows systems: The I/O is started and will complete later. Use the field overlap to synchronize on the I/O completion.

◆ app_data

std::shared_ptr<AncillaryData> ts::NonBlockingDevice::IOSB::app_data {}

Pointer to application data.

This is typically set by the application before starting the I/O.

◆ io_data

std::shared_ptr<AncillaryData> ts::NonBlockingDevice::IOSB::io_data {}

Pointer to I/O data (Windows-specific).

This is typically set by "reactive I/O" before starting the asynchronous I/O.


The documentation for this class was generated from the following file: