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-2024 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};
virtual int createSocket()=0
Creates socket handle.
std::vector-like growing array for byte storage.
Definition AByteBuffer.h:31
Represents an ipv4 address with port.
Definition AInet4Address.h:25
Represents an input stream.
Definition IInputStream.h:26
virtual size_t read(char *dst, size_t size)=0
Reads up to size bytes from stream. Blocking (waiting for new data) is allowed.
Definition IOutputStream.h:18
virtual void write(const char *src, size_t size)=0
Writes exact size bytes to stream. Blocking (waiting for write all data) is allowed.