AUI Framework  master
Cross-platform module-based framework for developing C++20 desktop applications
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
17#include "AAbstractSocket.h"
18#include "AUI/IO/IInputStream.h"
19#include "AUI/IO/IOutputStream.h"
20
21#include "AInet4Address.h"
22
23class AByteBuffer;
24
29class API_AUI_NETWORK ATcpSocket: public AAbstractSocket, public IInputStream, public IOutputStream
30{
31friend class ATcpServerSocket;
32public:
33
34 ATcpSocket(const AInet4Address& destinationAddress);
35
36 ~ATcpSocket() override;
37
38 size_t read(char* dst, size_t size) override;
39 void write(const char* buffer, size_t size) override;
40
41
42protected:
43 ATcpSocket(int handle, const AInet4Address& selfAddr)
44 : AAbstractSocket(handle, selfAddr)
45 {
46 }
47
48 int createSocket() override;
49};
Base class for all sockets.
Definition: AAbstractSocket.h:26
virtual int createSocket()=0
Create socket handle. Use ::socket()
std::vector-like growing array for byte storage.
Definition: AByteBuffer.h:31
Represents an ipv4 address with port.
Definition: AInet4Address.h:25
TCP server socket.
Definition: ATcpServerSocket.h:22
A bidirectional TCP connection (either a client connection or returned by ATcpServerSocket).
Definition: ATcpSocket.h:30
Represents an input stream.
Definition: IInputStream.h:26
Definition: IOutputStream.h:20
virtual void write(const char *src, size_t size)=0
Writes exact size bytes to stream. Blocking (waiting for write all data) is allowed.
void API_AUI_XML read(const _< IInputStream > &is, const _< IXmlDocumentVisitor > &visitor)
Parses xml from the input stream to the IXmlDocumentVisitor.
Definition: AXml.cpp:20