class ugcs::vsm::internal::Posix_file_handle

Overview

POSIX-specific implementation of system native file handle. More…

#include <posix_file_handle.h>

class Posix_file_handle: public ugcs::vsm::File_processor::Stream::Native_handle
{
public:
    // structs

    struct Io_cb;

    // construction

    Posix_file_handle(int fd, int write_fd = -1);

    Posix_file_handle(
        const std::string& path,
        const File_processor::Stream::Mode& mode,
        mode_t permissions = S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH
        );
};

Inherited Members

public:
    // typedefs

    typedef std::unique_ptr<Native_handle> Unique_ptr;

    // classes

    class Stream_ref_holder;

    // fields

    Read_request::Ptr cur_read_request;
    Write_request::Ptr cur_write_request;
    Io_request::Ptr cur_lock_request;
    Io_request::Ptr cur_unlock_request;
    bool is_closed = false;
    Stream::Ptr stream;
    Stream::Ptr write_active;
    Stream::Ptr read_active;

    // methods

    void Set_stream(Stream::Ptr stream);
    virtual void Write() = 0;
    virtual void Read() = 0;
    virtual Lock_result Try_lock() = 0;
    virtual bool Lock() = 0;
    virtual bool Unlock() = 0;
    virtual bool Cancel_write() = 0;
    virtual bool Cancel_read() = 0;
    virtual void Close() = 0;
    void Handle_write_abort();
    void Handle_read_abort();

Detailed Documentation

POSIX-specific implementation of system native file handle.

Construction

Posix_file_handle(int fd, int write_fd = -1)

Construct an instance based on already opened descriptors.

Posix_file_handle(
    const std::string& path,
    const File_processor::Stream::Mode& mode,
    mode_t permissions = S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH
    )

Construct an instance by opening a file specified by path.