AUI Framework  develop
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
APipe.h
    1/*
    2 * AUI Framework - Declarative UI toolkit for modern C++20
    3 * Copyright (C) 2020-2025 Alex2772 and Contributors
    4 *
    5 * SPDX-License-Identifier: MPL-2.0
    6 *
    7 * This Source Code Form is subject to the terms of the Mozilla Public
    8 * License, v. 2.0. If a copy of the MPL was not distributed with this
    9 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
   10 */
   11
   12//
   13// Created by alex2 on 15.11.2020.
   14//
   15
   16#pragma once
   17
   18
   19#include "IInputStream.h"
   20#include "IOutputStream.h"
   21
   32class API_AUI_CORE APipe: public IInputStream, public IOutputStream {
   33private:
   34    char mCircularBuffer[0x10000];
   35    uint16_t mReaderPos = 0;
   36    uint16_t mWriterPos = 0;
   37
   38    AMutex mMutex;
   39    AConditionVariable mConditionVariable;
   40
   41    bool mClosed = false;
   42
   43public:
   44    APipe();
   45    virtual ~APipe();
   46
   47    size_t read(char* dst, size_t size) override;
   48    void write(const char* src, size_t size) override;
   49
   50    size_t available();
   51
   52    void close();
   53
   54};
   55
   56
Represents a condition variable.
Definition AConditionVariable.h:24
void write(const char *src, size_t size) override
Writes exact size bytes to stream. Blocking (waiting for write all data) is allowed.
size_t read(char *dst, size_t size) override
Reads up to size bytes from stream. Blocking (waiting for new data) is allowed.
Represents an input stream.
Definition IInputStream.h:26
Definition IOutputStream.h:18
Basic syscall-based synchronization primitive.
Definition AMutex.h:33