AUI Framework  develop
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
ATcpSocket.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#pragma once
   13
   14#include <AUI/Network.h>
   15
   16#include "AAbstractSocket.h"
   17#include "AUI/IO/IInputStream.h"
   18#include "AUI/IO/IOutputStream.h"
   19
   20#include "AInet4Address.h"
   21
   22class AByteBuffer;
   23
   28class API_AUI_NETWORK ATcpSocket : public AAbstractSocket, public IInputStream, public IOutputStream {
   29    friend class ATcpServerSocket;
   30
   31public:
   32    ATcpSocket(const AInet4Address& destinationAddress);
   33
   34    ~ATcpSocket() override;
   35
   36    size_t read(char* dst, size_t size) override;
   37    void write(const char* buffer, size_t size) override;
   38
   39protected:
   40    ATcpSocket(int handle, const AInet4Address& selfAddr) : AAbstractSocket(handle, selfAddr) {}
   41
   42    int createSocket() override;
   43};
std::vector-like growing array for byte storage.
Definition AByteBuffer.h:31
Represents an ipv4 address with port.
Definition AInet4Address.h:25
void write(const char *buffer, size_t size) override
Writes exact size bytes to stream. Blocking (waiting for write all data) is allowed.
int createSocket() override
Creates socket handle.
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