class mrpt::io::CPipeBaseEndPoint

Overview

Common interface of read & write pipe end-points.

#include <mrpt/io/CPipe.h>

class CPipeBaseEndPoint: public mrpt::io::CStream
{
public:
    // fields

    unsigned int timeout_read_start_us {0};
    unsigned int timeout_read_between_us {0};

    // construction

    CPipeBaseEndPoint();
    CPipeBaseEndPoint(const CPipeBaseEndPoint&);
    CPipeBaseEndPoint(const std::string& serialized);

    // methods

    CPipeBaseEndPoint& operator = (const CPipeBaseEndPoint&);
    std::string serialize();
    bool isOpen() const;
    void close();
    virtual size_t Read(void* Buffer, size_t Count);
    virtual size_t Write(const void* Buffer, size_t Count);
    virtual uint64_t Seek(int64_t of, CStream::TSeekOrigin o = sFromBeginning);
    virtual uint64_t getTotalBytesCount() const;
    virtual uint64_t getPosition() const;
};

// direct descendants

class CPipeReadEndPoint;
class CPipeWriteEndPoint;

Inherited Members

public:
    // methods

    virtual size_t Read(void* Buffer, size_t Count) = 0;
    virtual size_t Write(const void* Buffer, size_t Count) = 0;
    virtual uint64_t getTotalBytesCount() const = 0;
    virtual uint64_t getPosition() const = 0;

Fields

unsigned int timeout_read_start_us {0}

(Default=0) Timeout for read operations: microseconds (us) to wait for the first byte.

0 means infinite timeout.

unsigned int timeout_read_between_us {0}

(Default=0) Timeout between burst reads operations: microseconds (us) to wait between two partial reads inside one large read.

0 means infinite timeout.

Construction

CPipeBaseEndPoint(const std::string& serialized)

De-serializes one end-point description, for example, from a parent process.

Methods

std::string serialize()

Converts the end-point into a string suitable for reconstruction at a child process.

This invalidates this object, since only one real end-point can exist at once.

bool isOpen() const

Returns false if the pipe was closed due to some error.

void close()

Closes the pipe (normally not needed to be called by users, automatically done at destructor)

virtual size_t Read(void* Buffer, size_t Count)

Introduces a pure virtual method responsible for reading from the stream.

virtual size_t Write(const void* Buffer, size_t Count)

Introduces a pure virtual method responsible for writing to the stream.

Write attempts to write up to Count bytes to Buffer, and returns the number of bytes actually written.

virtual uint64_t Seek(int64_t of, CStream::TSeekOrigin o = sFromBeginning)

Without effect in this class.

virtual uint64_t getTotalBytesCount() const

Without effect in this class.

virtual uint64_t getPosition() const

Without effect in this class.