SNode.C
Loading...
Searching...
No Matches
core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT > Class Template Reference

#include <SocketConnection.h>

Inheritance diagram for core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT >:
Collaboration diagram for core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT >:

Public Member Functions

 SocketConnectionT ()=delete
int getFd () const final
void setTimeout (const utils::Timeval &timeout) final
void setReadTimeout (const utils::Timeval &timeout) final
void setWriteTimeout (const utils::Timeval &timeout) final
const SocketAddressgetBindAddress () const final
const SocketAddressgetLocalAddress () const final
const SocketAddressgetRemoteAddress () const final
std::size_t readFromPeer (char *chunk, std::size_t chunkLen) final
void sendToPeer (const char *chunk, std::size_t chunkLen) final
bool streamToPeer (core::pipe::Source *source) final
void streamEof () final
void shutdownRead () final
void shutdownWrite () final
void close () final
ConfiggetConfig () const
std::size_t getTotalSent () const override
std::size_t getTotalQueued () const override
std::size_t getTotalRead () const override
std::size_t getTotalProcessed () const override
void sendToPeer (const std::string &data)
Public Member Functions inherited from core::socket::stream::SocketConnection
 SocketConnection (int fd, const net::config::ConfigInstance *config)
 SocketConnection (const SocketConnection &)=delete
void setSocketContext (SocketContext *socketContext)
void sendToPeer (const std::string &data)
void sentToPeer (const std::vector< uint8_t > &data)
void sentToPeer (const std::vector< char > &data)
const std::string & getInstanceName () const
const std::string & getConnectionName () const
SocketContextgetSocketContext () const
std::string getOnlineSince () const
std::string getOnlineDuration () const
const net::config::ConfigInstancegetConfigInstance () const

Protected Types

using Super = core::socket::stream::SocketConnection
using Config = ConfigT
using PhysicalSocket = PhysicalSocketT
using SocketReader = SocketReaderT
using SocketWriter = SocketWriterT
using SocketAddress = typename PhysicalSocket::SocketAddress

Protected Member Functions

 SocketConnectionT (PhysicalSocket &&physicalSocket, const std::function< void()> &onDisconnect, const std::shared_ptr< Config > &config)
 ~SocketConnectionT () override
void doWriteShutdown (const std::function< void()> &onShutdown) override
void onWriteError (int errnum)
void onReadError (int errnum)
Protected Member Functions inherited from core::socket::stream::SocketConnection
virtual ~SocketConnection ()
void setSocketContext (const std::shared_ptr< SocketContextFactory > &socketContextFactory)

Private Member Functions

void onReceivedFromPeer (std::size_t available) final
bool onSignal (int signum) final
void readTimeout () final
void writeTimeout () final
void unobservedEvent () final

Private Attributes

PhysicalSocket physicalSocket
std::function< void()> onDisconnect
SocketAddress localAddress {}
SocketAddress remoteAddress {}
std::shared_ptr< Configconfig

Additional Inherited Members

Protected Attributes inherited from core::socket::stream::SocketConnection
core::socket::stream::SocketContextsocketContext = nullptr
core::socket::stream::SocketContextnewSocketContext = nullptr
std::string instanceName
std::string connectionName
std::chrono::time_point< std::chrono::system_clock > onlineSinceTimePoint

Detailed Description

template<typename PhysicalSocketT, typename SocketReaderT, typename SocketWriterT, typename ConfigT>
class core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT >

Definition at line 158 of file SocketConnection.h.

Member Typedef Documentation

◆ Config

template<typename PhysicalSocketT, typename SocketReaderT, typename SocketWriterT, typename ConfigT>
using core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT >::Config = ConfigT
protected

Definition at line 165 of file SocketConnection.h.

◆ PhysicalSocket

template<typename PhysicalSocketT, typename SocketReaderT, typename SocketWriterT, typename ConfigT>
using core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT >::PhysicalSocket = PhysicalSocketT
protected

Definition at line 166 of file SocketConnection.h.

◆ SocketAddress

template<typename PhysicalSocketT, typename SocketReaderT, typename SocketWriterT, typename ConfigT>
using core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT >::SocketAddress = typename PhysicalSocket::SocketAddress
protected

Definition at line 169 of file SocketConnection.h.

◆ SocketReader

template<typename PhysicalSocketT, typename SocketReaderT, typename SocketWriterT, typename ConfigT>
using core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT >::SocketReader = SocketReaderT
protected

Definition at line 167 of file SocketConnection.h.

◆ SocketWriter

template<typename PhysicalSocketT, typename SocketReaderT, typename SocketWriterT, typename ConfigT>
using core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT >::SocketWriter = SocketWriterT
protected

Definition at line 168 of file SocketConnection.h.

◆ Super

template<typename PhysicalSocketT, typename SocketReaderT, typename SocketWriterT, typename ConfigT>
using core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT >::Super = core::socket::stream::SocketConnection
protected

Definition at line 163 of file SocketConnection.h.

Constructor & Destructor Documentation

◆ SocketConnectionT() [1/2]

template<typename PhysicalSocketT, typename SocketReaderT, typename SocketWriterT, typename ConfigT>
core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT >::SocketConnectionT ( )
delete

◆ SocketConnectionT() [2/2]

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::SocketConnectionT ( PhysicalSocket && physicalSocket,
const std::function< void()> & onDisconnect,
const std::shared_ptr< Config > & config )
protected

Definition at line 107 of file SocketConnection.hpp.

110 : SocketConnection(physicalSocket.getFd(), config.get())
111 , SocketReader(
113 [this](int errnum) {
114 {
116 if (errno == 0) {
117 LOG(TRACE) << connectionName << " OnReadError: EOF received";
118 } else {
119 PLOG(TRACE) << connectionName << " OnReadError";
120 }
121 }
123
125 },
126 config->getReadTimeout(),
127 config->getReadBlockSize(),
128 config->getTerminateTimeout())
129 , SocketWriter(
131 [this](int errnum) {
132 {
134 PLOG(TRACE) << connectionName << " OnWriteError";
135 }
137
139 },
140 config->getWriteTimeout(),
141 config->getWriteBlockSize(),
142 config->getTerminateTimeout())
147 , config(config) {
148 if (!SocketReader::enable(this->physicalSocket.getFd())) {
149 delete this;
150 } else if (!SocketWriter::enable(this->physicalSocket.getFd())) {
151 delete this;
152 } else {
154 }
155 }
SocketConnection(int fd, const net::config::ConfigInstance *config)
const std::string & getConnectionName() const

References core::socket::stream::SocketConnection::connectionName, core::socket::stream::SocketConnection::getConnectionName(), onReadError(), and utils::PreserveErrno::PreserveErrno().

Here is the call graph for this function:

◆ ~SocketConnectionT()

Definition at line 158 of file SocketConnection.hpp.

158 {
159 }

Member Function Documentation

◆ close()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
void core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::close ( )
finalvirtual

Implements core::socket::stream::SocketConnection.

Definition at line 254 of file SocketConnection.hpp.

254 {
257 }
260 }
261 }

Referenced by onReceivedFromPeer(), readTimeout(), and writeTimeout().

Here is the caller graph for this function:

◆ doWriteShutdown()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
void core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::doWriteShutdown ( const std::function< void()> & onShutdown)
overrideprotected

Definition at line 289 of file SocketConnection.hpp.

289 {
290 errno = 0;
291
293
294 LOG(TRACE) << connectionName << ": Shutdown (WR)";
295
296 if (physicalSocket.shutdown(PhysicalSocket::SHUT::WR) == 0) {
297 LOG(DEBUG) << connectionName << " Shutdown (WR): success";
298 } else {
299 PLOG(ERROR) << connectionName << " Shutdown (WR)";
300 }
301
302 onShutdown();
303 }
void setTimeout(const utils::Timeval &timeout) final

References core::socket::stream::SocketConnection::connectionName, physicalSocket, and setTimeout().

Here is the call graph for this function:

◆ getBindAddress()

Implements core::socket::stream::SocketConnection.

Definition at line 183 of file SocketConnection.hpp.

183 {
184 return physicalSocket.getBindAddress();
185 }

◆ getConfig()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
Config & core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::getConfig ( ) const

Definition at line 264 of file SocketConnection.hpp.

264 {
265 return *config;
266 }

References config.

◆ getFd()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
int core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::getFd ( ) const
finalvirtual

Implements core::socket::stream::SocketConnection.

Definition at line 177 of file SocketConnection.hpp.

177 {
178 return physicalSocket.getFd();
179 }

References physicalSocket.

◆ getLocalAddress()

Implements core::socket::stream::SocketConnection.

Definition at line 189 of file SocketConnection.hpp.

189 {
190 return localAddress;
191 }

Referenced by tls::getClient(), legacy::getLegacyClient(), and main().

Here is the caller graph for this function:

◆ getRemoteAddress()

Implements core::socket::stream::SocketConnection.

Definition at line 195 of file SocketConnection.hpp.

195 {
196 return remoteAddress;
197 }

References remoteAddress.

Referenced by tls::getClient(), legacy::getLegacyClient(), and main().

Here is the caller graph for this function:

◆ getTotalProcessed()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
std::size_t core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::getTotalProcessed ( ) const
overridevirtual

Implements core::socket::stream::SocketConnection.

Definition at line 284 of file SocketConnection.hpp.

284 {
286 }
std::size_t getTotalProcessed() const

◆ getTotalQueued()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
std::size_t core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::getTotalQueued ( ) const
overridevirtual

Implements core::socket::stream::SocketConnection.

Definition at line 274 of file SocketConnection.hpp.

274 {
276 }

◆ getTotalRead()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
std::size_t core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::getTotalRead ( ) const
overridevirtual

Implements core::socket::stream::SocketConnection.

Definition at line 279 of file SocketConnection.hpp.

279 {
281 }

◆ getTotalSent()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
std::size_t core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::getTotalSent ( ) const
overridevirtual

Implements core::socket::stream::SocketConnection.

Definition at line 269 of file SocketConnection.hpp.

269 {
271 }

◆ onReadError()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
void core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::onReadError ( int errnum)
protected

Definition at line 334 of file SocketConnection.hpp.

334 {
335 socketContext->onReadError(errnum);
336 }
core::socket::stream::SocketContext * socketContext

References core::socket::stream::SocketContext::onReadError(), and core::socket::stream::SocketConnection::socketContext.

Referenced by SocketConnectionT().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ onReceivedFromPeer()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
void core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::onReceivedFromPeer ( std::size_t available)
finalprivate

Definition at line 306 of file SocketConnection.hpp.

306 {
307 std::size_t consumed = socketContext->readFromPeer();
308
309 if (available != 0 && consumed == 0) {
310 LOG(TRACE) << connectionName << ": Data available: " << available << " but nothing read";
311
312 close();
313
314 delete newSocketContext;
315 newSocketContext = nullptr;
316 } else if (newSocketContext != nullptr) { // Perform a pending SocketContextSwitch
317 socketContext->detach();
318
320 newSocketContext = nullptr;
321
322 socketContext->attach();
323
324 LOG(DEBUG) << connectionName << " SocketConnection: switch completed";
325 }
326 }
core::socket::stream::SocketContext * newSocketContext

References core::socket::stream::SocketContext::attach(), close(), core::socket::stream::SocketConnection::connectionName, core::socket::stream::SocketContext::detach(), core::socket::stream::SocketConnection::newSocketContext, core::socket::stream::SocketContext::readFromPeer(), and core::socket::stream::SocketConnection::socketContext.

Here is the call graph for this function:

◆ onSignal()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
bool core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::onSignal ( int signum)
finalprivate

Definition at line 339 of file SocketConnection.hpp.

339 {
340 switch (signum) {
341 case SIGINT:
342 [[fallthrough]];
343 case SIGTERM:
344 [[fallthrough]];
345 case SIGABRT:
346 [[fallthrough]];
347 case SIGHUP:
348 LOG(DEBUG) << connectionName << ": Shutting down due to signal '" << strsignal(signum) << "' (SIG"
349 << utils::system::sigabbrev_np(signum) << " [" << signum << "])";
350 break;
351 case SIGALRM:
352 break;
353 }
354
355 return socketContext != nullptr ? socketContext->onSignal(signum) : true;
356 }
std::string sigabbrev_np(int sig)
Definition signal.cpp:59

References core::socket::stream::SocketConnection::connectionName, core::socket::SocketContext::onSignal(), utils::system::sigabbrev_np(), and core::socket::stream::SocketConnection::socketContext.

Here is the call graph for this function:

◆ onWriteError()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
void core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::onWriteError ( int errnum)
protected

Definition at line 329 of file SocketConnection.hpp.

329 {
330 socketContext->onWriteError(errnum);
331 }

References core::socket::stream::SocketContext::onWriteError(), and core::socket::stream::SocketConnection::socketContext.

Here is the call graph for this function:

◆ readFromPeer()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
std::size_t core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::readFromPeer ( char * chunk,
std::size_t chunkLen )
finalvirtual

Implements core::socket::stream::SocketConnection.

Definition at line 200 of file SocketConnection.hpp.

200 {
201 std::size_t ret = 0;
202
203 if (newSocketContext == nullptr) {
205 } else {
206 LOG(TRACE) << connectionName << " ReadFromPeer: New SocketContext != nullptr: SocketContextSwitch still in progress";
207 }
208
209 return ret;
210 }
std::size_t readFromPeer(char *chunk, std::size_t chunkLen)

◆ readTimeout()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
void core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::readTimeout ( )
finalprivate

Definition at line 359 of file SocketConnection.hpp.

359 {
360 LOG(WARNING) << connectionName << ": Read timeout";
361 close();
362 }

References close(), and core::socket::stream::SocketConnection::connectionName.

Here is the call graph for this function:

◆ sendToPeer() [1/2]

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
void core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::sendToPeer ( const char * chunk,
std::size_t chunkLen )
finalvirtual

Implements core::socket::stream::SocketConnection.

Definition at line 213 of file SocketConnection.hpp.

213 {
215 }
void sendToPeer(const char *chunk, std::size_t chunkLen)

◆ sendToPeer() [2/2]

template<typename PhysicalSocketT, typename SocketReaderT, typename SocketWriterT, typename ConfigT>
void core::socket::stream::SocketConnection::sendToPeer ( const std::string & data)

Definition at line 98 of file SocketConnection.cpp.

96 {
97 sendToPeer(data.data(), data.size());
98 }
void sendToPeer(const char *chunk, std::size_t chunkLen) final

◆ setReadTimeout()

template<typename PhysicalSocketT, typename SocketReaderT, typename SocketWriterT, typename ConfigT>
void core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT >::setReadTimeout ( const utils::Timeval & timeout)
finalvirtual

Implements core::socket::stream::SocketConnection.

Definition at line 168 of file SocketConnection.hpp.

168 {
170 }
void setTimeout(const utils::Timeval &timeout)

Referenced by setTimeout().

Here is the caller graph for this function:

◆ setTimeout()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
void core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::setTimeout ( const utils::Timeval & timeout)
finalvirtual

Implements core::socket::stream::SocketConnection.

Definition at line 162 of file SocketConnection.hpp.

162 {
165 }
void setReadTimeout(const utils::Timeval &timeout) final
void setWriteTimeout(const utils::Timeval &timeout) final

References setReadTimeout(), and setWriteTimeout().

Referenced by doWriteShutdown().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setWriteTimeout()

template<typename PhysicalSocketT, typename SocketReaderT, typename SocketWriterT, typename ConfigT>
void core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT >::setWriteTimeout ( const utils::Timeval & timeout)
finalvirtual

Implements core::socket::stream::SocketConnection.

Definition at line 172 of file SocketConnection.hpp.

172 {
174 }

Referenced by setTimeout().

Here is the caller graph for this function:

◆ shutdownRead()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
void core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::shutdownRead ( )
finalvirtual

Implements core::socket::stream::SocketConnection.

Definition at line 228 of file SocketConnection.hpp.

228 {
229 LOG(TRACE) << connectionName << ": Shutdown (RD)";
230
232
233 if (physicalSocket.shutdown(PhysicalSocket::SHUT::RD) == 0) {
234 LOG(DEBUG) << connectionName << " Shutdown (RD): success";
235 } else {
236 PLOG(ERROR) << connectionName << " Shutdown (RD)";
237 }
238 }

References core::socket::stream::SocketConnection::connectionName, and physicalSocket.

◆ shutdownWrite()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
void core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::shutdownWrite ( )
finalvirtual

Implements core::socket::stream::SocketConnection.

Definition at line 241 of file SocketConnection.hpp.

241 {
243 LOG(TRACE) << connectionName << ": Stop writing";
244
248 }
249 });
250 }
251 }
void shutdownWrite(const std::function< void()> &onShutdown)

References core::socket::stream::SocketConnection::connectionName.

◆ streamEof()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
void core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::streamEof ( )
finalvirtual

◆ streamToPeer()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
bool core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::streamToPeer ( core::pipe::Source * source)
finalvirtual

Implements core::socket::stream::SocketConnection.

Definition at line 218 of file SocketConnection.hpp.

218 {
220 }
bool streamToPeer(core::pipe::Source *source)

◆ unobservedEvent()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
void core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::unobservedEvent ( )
finalprivate

Definition at line 371 of file SocketConnection.hpp.

371 {
372 if (socketContext != nullptr) {
373 socketContext->detach();
374 }
375
376 onDisconnect();
377
378 LOG(DEBUG) << connectionName << ": disconnected";
379
380 delete this;
381 }

References core::socket::stream::SocketConnection::connectionName, core::socket::stream::SocketContext::detach(), onDisconnect, and core::socket::stream::SocketConnection::socketContext.

Here is the call graph for this function:

◆ writeTimeout()

template<typename PhysicalSocket, typename SocketReader, typename SocketWriter, typename Config>
void core::socket::stream::SocketConnectionT< PhysicalSocket, SocketReader, SocketWriter, Config >::writeTimeout ( )
finalprivate

Definition at line 365 of file SocketConnection.hpp.

365 {
366 LOG(WARNING) << connectionName << ": Write timeout";
367 close();
368 }

References close(), and core::socket::stream::SocketConnection::connectionName.

Here is the call graph for this function:

Member Data Documentation

◆ config

template<typename PhysicalSocketT, typename SocketReaderT, typename SocketWriterT, typename ConfigT>
std::shared_ptr<Config> core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT >::config
private

Definition at line 235 of file SocketConnection.h.

Referenced by getConfig().

◆ localAddress

template<typename PhysicalSocketT, typename SocketReaderT, typename SocketWriterT, typename ConfigT>
SocketAddress core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT >::localAddress {}
private

Definition at line 232 of file SocketConnection.h.

232{};

◆ onDisconnect

template<typename PhysicalSocketT, typename SocketReaderT, typename SocketWriterT, typename ConfigT>
std::function<void()> core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT >::onDisconnect
private

Definition at line 230 of file SocketConnection.h.

Referenced by unobservedEvent().

◆ physicalSocket

template<typename PhysicalSocketT, typename SocketReaderT, typename SocketWriterT, typename ConfigT>
PhysicalSocket core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT >::physicalSocket
private

Definition at line 228 of file SocketConnection.h.

Referenced by doWriteShutdown(), getFd(), and shutdownRead().

◆ remoteAddress

template<typename PhysicalSocketT, typename SocketReaderT, typename SocketWriterT, typename ConfigT>
SocketAddress core::socket::stream::SocketConnectionT< PhysicalSocketT, SocketReaderT, SocketWriterT, ConfigT >::remoteAddress {}
private

Definition at line 233 of file SocketConnection.h.

233{};

Referenced by getRemoteAddress().


The documentation for this class was generated from the following files: