|
@@ -3,13 +3,15 @@
|
|
* Company: Lynar Studios
|
|
* Company: Lynar Studios
|
|
* E-Mail: webmaster@lynarstudios.com
|
|
* E-Mail: webmaster@lynarstudios.com
|
|
* Created: 2022-11-16
|
|
* Created: 2022-11-16
|
|
- * Changed: 2022-11-17
|
|
|
|
|
|
+ * Changed: 2022-11-18
|
|
*
|
|
*
|
|
* */
|
|
* */
|
|
|
|
|
|
#include <ls_std/network/socket/Socket.hpp>
|
|
#include <ls_std/network/socket/Socket.hpp>
|
|
#if defined(unix) || defined(__APPLE__)
|
|
#if defined(unix) || defined(__APPLE__)
|
|
#include <sys/socket.h>
|
|
#include <sys/socket.h>
|
|
|
|
+#include <netinet/in.h>
|
|
|
|
+#include <arpa/inet.h>
|
|
#endif
|
|
#endif
|
|
#include <ls_std/network/core/ProtocolFamilyMapper.hpp>
|
|
#include <ls_std/network/core/ProtocolFamilyMapper.hpp>
|
|
#include <ls_std/network/core/ProtocolMapper.hpp>
|
|
#include <ls_std/network/core/ProtocolMapper.hpp>
|
|
@@ -17,7 +19,17 @@
|
|
ls::std::network::Socket::Socket(const ls::std::network::SocketParameter& _parameter) : ls::std::core::Class("Socket"),
|
|
ls::std::network::Socket::Socket(const ls::std::network::SocketParameter& _parameter) : ls::std::core::Class("Socket"),
|
|
parameter(_parameter)
|
|
parameter(_parameter)
|
|
{
|
|
{
|
|
- this->initialized = ls::std::network::Socket::_initUnix(_parameter);
|
|
|
|
|
|
+ #if defined(unix) || defined(__APPLE__)
|
|
|
|
+ this->unixDescriptor = ls::std::network::Socket::_initUnix(_parameter);
|
|
|
|
+ this->initialized = this->unixDescriptor != -1;
|
|
|
|
+ #endif
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+bool ls::std::network::Socket::connect()
|
|
|
|
+{
|
|
|
|
+ #if defined(unix) || defined(__APPLE__)
|
|
|
|
+ return ls::std::network::Socket::_connectUnix();
|
|
|
|
+ #endif
|
|
}
|
|
}
|
|
|
|
|
|
bool ls::std::network::Socket::isInitialized() const
|
|
bool ls::std::network::Socket::isInitialized() const
|
|
@@ -25,6 +37,20 @@ bool ls::std::network::Socket::isInitialized() const
|
|
return this->initialized;
|
|
return this->initialized;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#if defined(unix) || defined(__APPLE__)
|
|
|
|
+bool ls::std::network::Socket::_connectUnix() const
|
|
|
|
+{
|
|
|
|
+ sockaddr_in socketAddressUnix{}; // TODO: put everything inside a dedicated mapper
|
|
|
|
+ socketAddressUnix.sin_port = htons(this->parameter.socketAddress.port);
|
|
|
|
+
|
|
|
|
+ ls::std::network::ProtocolFamily protocolFamily = ls::std::network::ProtocolFamilyMapper::from(this->parameter.protocolFamilyType);
|
|
|
|
+ socketAddressUnix.sin_family = protocolFamily.unixDomain;
|
|
|
|
+ inet_aton(this->parameter.socketAddress.ipAddress.c_str(), &socketAddressUnix.sin_addr);
|
|
|
|
+
|
|
|
|
+ return ::connect(this->unixDescriptor, reinterpret_cast<const sockaddr *>(&socketAddressUnix), sizeof(socketAddressUnix)) == 0;
|
|
|
|
+}
|
|
|
|
+#endif
|
|
|
|
+
|
|
bool ls::std::network::Socket::_init(const ls::std::network::SocketParameter &_parameter)
|
|
bool ls::std::network::Socket::_init(const ls::std::network::SocketParameter &_parameter)
|
|
{
|
|
{
|
|
#if defined(unix) || defined(__APPLE__)
|
|
#if defined(unix) || defined(__APPLE__)
|