2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
20#ifndef NET_IN_STREAM_SOCKETCLIENT_H
21#define NET_IN_STREAM_SOCKETCLIENT_H
23#include "core/socket/stream/SocketClient.h"
24#include "net/in/phy/stream/PhysicalSocketClient.h"
26#ifndef DOXYGEN_SHOULD_SKIP_THIS
34namespace net::in::stream {
36 template <
template <
typename PhysicalSocketClient,
typename ConfigSocketClientT>
typename SocketConnectorT,
37 typename ConfigSocketClientT,
38 typename SocketContextFactoryT,
53 void connect(
const std::string& ipOrHostname,
55 const std::function<
void(
const SocketAddress&, core::socket::State)>& onStatus)
const {
56 Super::getConfig().Remote::setHost(ipOrHostname).setPort(port);
61 void connect(
const std::string& ipOrHostname,
63 const std::string& bindHost,
64 const std::function<
void(
const SocketAddress&, core::socket::State)>& onStatus)
const {
65 Super::getConfig().Remote::setHost(ipOrHostname).setPort(port);
66 Super::getConfig().Local::setHost(bindHost);
71 void connect(
const std::string& ipOrHostname,
74 const std::function<
void(
const SocketAddress&, core::socket::State)>& onStatus)
const {
75 Super::getConfig().Remote::setHost(ipOrHostname).setPort(port);
76 Super::getConfig().Local::setHost(bindPort);
81 void connect(
const std::string& ipOrHostname,
83 const std::string& bindHost,
85 const std::function<
void(
const SocketAddress&, core::socket::State)>& onStatus)
const {
86 Super::getConfig().Remote::setHost(ipOrHostname).setPort(port);
87 Super::getConfig().Local::setHost(bindHost).setPort(bindPort);
SocketAddress localAddress
SocketAddress remoteAddress
void unobservedEvent() final
void onReadError(int errnum)
void shutdownRead() final
void onReceivedFromPeer(std::size_t available) final
void onWriteError(int errnum)
void setTimeout(const utils::Timeval &timeout) final
std::size_t readFromPeer(char *chunk, std::size_t chunkLen) final
bool onSignal(int signum) final
const SocketAddress & getRemoteAddress() const final
PhysicalSocket physicalSocket
SocketConnectionT(const std::string &instanceName, PhysicalSocket &&physicalSocket, const std::function< void()> &onDisconnect, const std::string &configuredServer, const SocketAddress &localAddress, const SocketAddress &remoteAddress, const utils::Timeval &readTimeout, const utils::Timeval &writeTimeout, std::size_t readBlockSize, std::size_t writeBlockSize, const utils::Timeval &terminateTimeout)
void doWriteShutdown(const std::function< void()> &onShutdown) override
bool streamToPeer(core::pipe::Source *source) final
SocketConnectionT()=delete
void shutdownWrite(bool forceClose) final
void sendToPeer(const char *chunk, std::size_t chunkLen) final
std::function< void()> onDisconnect
const SocketAddress & getLocalAddress() const final
void writeTimeout() final
~SocketConnectionT() override
std::string connectionName
virtual void shutdownRead()=0
const std::string & getConfiguredServer() const
virtual void sendToPeer(const char *chunk, std::size_t chunkLen)=0
core::socket::stream::SocketContext * newSocketContext
core::socket::stream::SocketContext * socketContext
void connectSocketContext(const std::shared_ptr< SocketContextFactory > &socketContextFactory)
void switchSocketContext(SocketContext *newSocketContext)
virtual const core::socket::SocketAddress & getLocalAddress() const =0
virtual ~SocketConnection()
virtual void setTimeout(const utils::Timeval &timeout)=0
void disconnectCurrentSocketContext()
void sentToPeer(const std::vector< uint8_t > &data)
const std::string & getConnectionName() const
void setSocketContext(SocketContext *socketContext)
std::string configuredServer
virtual const core::socket::SocketAddress & getRemoteAddress() const =0
virtual int getFd() const =0
virtual void streamEof()=0
void sendToPeer(const std::string &data)
virtual void shutdownWrite(bool forceClose)=0
virtual std::size_t readFromPeer(char *chunk, std::size_t chunkLen)=0
SocketConnection(const std::string &instanceName, int fd, const std::string &configuredServer)
virtual bool streamToPeer(core::pipe::Source *source)=0
const std::string & getInstanceName() const
SocketAddress remoteAddress
virtual void useNextSocketAddress()=0
void connectTimeout() final
SocketConnector(const SocketConnector &socketConnector)
std::function< void(const SocketAddress &, core::socket::State)> onStatus
std::function< void(SocketConnection *)> onConnected
PhysicalClientSocket physicalClientSocket
std::shared_ptr< Config > config
std::shared_ptr< core::socket::stream::SocketContextFactory > socketContextFactory
std::function< void(SocketConnection *)> onDisconnect
std::function< void(SocketConnection *)> onConnect
void unobservedEvent() final
void connectEvent() final
SocketConnector(const std::shared_ptr< core::socket::stream::SocketContextFactory > &socketContextFactory, const std::function< void(SocketConnection *)> &onConnect, const std::function< void(SocketConnection *)> &onConnected, const std::function< void(SocketConnection *)> &onDisconnect, const std::function< void(const SocketAddress &, core::socket::State)> &onStatus, const std::shared_ptr< Config > &config)
~SocketConnector() override
SocketConnection(const std::string &instanceName, PhysicalSocket &&physicalSocket, const std::function< void(SocketConnection *)> &onDisconnect, const std::string &configuredServer, const SocketAddress &localAddress, const SocketAddress &remoteAddress, const utils::Timeval &readTimeout, const utils::Timeval &writeTimeout, std::size_t readBlockSize, std::size_t writeBlockSize, const utils::Timeval &terminateTimeout)
SocketConnector(const std::shared_ptr< core::socket::stream::SocketContextFactory > &socketContextFactory, const std::function< void(SocketConnection *)> &onConnect, const std::function< void(SocketConnection *)> &onConnected, const std::function< void(SocketConnection *)> &onDisconnect, const std::function< void(const SocketAddress &, core::socket::State)> &onStatus, const std::shared_ptr< Config > &config)
SocketConnector(const SocketConnector &socketConnector)
void useNextSocketAddress() override
void connect(const std::string &ipOrHostname, uint16_t port, const std::string &bindHost, const std::function< void(const SocketAddress &, core::socket::State)> &onStatus) const
void connect(const std::string &ipOrHostname, uint16_t port, const std::string &bindHost, uint16_t bindPort, const std::function< void(const SocketAddress &, core::socket::State)> &onStatus) const
void connect(const std::string &ipOrHostname, uint16_t port, uint16_t bindPort, const std::function< void(const SocketAddress &, core::socket::State)> &onStatus) const
void connect(const std::string &ipOrHostname, uint16_t port, const std::function< void(const SocketAddress &, core::socket::State)> &onStatus) const
int main(int argc, char *argv[])