Ocean
Loading...
Searching...
No Matches
PackagedTCPClient.h
Go to the documentation of this file.
1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8#ifndef FACEBOOK_NETWORK_PACKAGED_TCP_CLIENT_H
9#define FACEBOOK_NETWORK_PACKAGED_TCP_CLIENT_H
10
14
15namespace Ocean
16{
17
18namespace Network
19{
20
21/**
22 * This class implements a TCP client with internal package handling.
23 * Each message is prefixed with a PackagedSocket::PackageHeader, so that the receiver can tell messages apart again after TCP has split or merged them.
24 * @see PackagedSocket::PackageHeader for the layout.
25 * @ingroup network
26 */
27class OCEAN_NETWORK_EXPORT PackagedTCPClient :
28 virtual public TCPClient,
29 virtual protected PackagedSocket
30{
31 public:
32
33 /**
34 * Creates a new TCP client.
35 */
36 PackagedTCPClient() = default;
37
38 /**
39 * Destructs a TCP client.
40 */
41 ~PackagedTCPClient() override = default;
42
43 protected:
44
45 /**
46 * Internal event function to send data.
47 * @see ConnectionOrientedClient::onSend().
48 */
49 size_t onSend(const void* data, const size_t size) override;
50
51 /**
52 * Internal event function for received data.
53 * @see ConnectionOrientedClient::onReceived().
54 */
55 void onReceived(const void* data, const size_t size) override;
56
57 protected:
58
59 /// The queue holding all memory blocks recently received and not yet process.
61
62 /// The memory block to be filled.
64
65 /// The memory block for the package header.
67};
68
69}
70
71}
72
73#endif // FACEBOOK_NETWORK_PACKAGED_TCP_CLIENT_H
This class implements a memory block.
Definition PackagedSocket.h:42
This class is the base class for all packaged sockets.
Definition PackagedSocket.h:35
std::queue< MemoryBlock > MemoryBlockQueue
Definition of a queue holding memory blocks.
Definition PackagedSocket.h:137
This class implements a TCP client with internal package handling.
Definition PackagedTCPClient.h:30
void onReceived(const void *data, const size_t size) override
Internal event function for received data.
size_t onSend(const void *data, const size_t size) override
Internal event function to send data.
MemoryBlock currentMemory_
The memory block to be filled.
Definition PackagedTCPClient.h:63
~PackagedTCPClient() override=default
Destructs a TCP client.
MemoryBlockQueue memoryQueue_
The queue holding all memory blocks recently received and not yet process.
Definition PackagedTCPClient.h:60
PackagedTCPClient()=default
Creates a new TCP client.
MemoryBlock currentPackageHeaderMemory_
The memory block for the package header.
Definition PackagedTCPClient.h:66
This class implements a TCP client.
Definition TCPClient.h:27
The namespace covering the entire Ocean framework.
Definition Accessor.h:15