1 #include "otsdaq-core/NetworkUtilities/TransmitterSocket.h"
2 #include "otsdaq-core/Macros/CoutMacros.h"
3 #include "otsdaq-core/MessageFacility/MessageFacility.h"
12 TransmitterSocket::TransmitterSocket(
void)
14 __COUT__ <<
"TransmitterSocket constructor " << __E__;
18 TransmitterSocket::TransmitterSocket(
const std::string& IPAddress,
unsigned int port)
21 __COUT__ <<
"TransmitterSocket constructor " << IPAddress <<
":" << port << __E__;
25 TransmitterSocket::~TransmitterSocket(
void) {}
28 int TransmitterSocket::send(
Socket& toSocket,
const std::string& buffer,
bool verbose)
31 std::lock_guard<std::mutex> lock(sendMutex_);
37 constexpr
size_t MAX_SEND_SIZE = 65500;
41 while(offset < buffer.size() && sts > 0)
43 auto thisSize = buffer.size() - offset > MAX_SEND_SIZE ? MAX_SEND_SIZE
44 : buffer.size() - offset;
48 __COUT__ <<
"Sending "
49 <<
" from: " << getIPAddress() <<
":"
50 << ntohs(socketAddress_.sin_port)
51 <<
" to: " << toSocket.getIPAddress() <<
":"
52 << ntohs(toSocket.getSocketAddress().sin_port)
53 <<
" size: " << thisSize
54 <<
" remaining = " << (buffer.size() - offset - thisSize)
74 sts = sendto(socketNumber_,
75 buffer.c_str() + offset,
78 (
struct sockaddr*)&(toSocket.getSocketAddress()),
85 __COUT__ <<
"Error writing buffer for port " << ntohs(socketAddress_.sin_port)
86 <<
": " << strerror(errno) << std::endl;
93 int TransmitterSocket::send(
Socket& toSocket,
94 const std::vector<uint16_t>& buffer,
98 std::lock_guard<std::mutex> lock(sendMutex_);
104 constexpr
size_t MAX_SEND_SIZE = 1500;
108 while(offset < buffer.size() && sts > 0)
110 auto thisSize = 2 * (buffer.size() - offset) > MAX_SEND_SIZE
112 : 2 * (buffer.size() - offset);
113 sts = sendto(socketNumber_,
117 (
struct sockaddr*)&(toSocket.getSocketAddress()),
118 sizeof(sockaddr_in));
124 __COUT__ <<
"Error writing buffer for port " << ntohs(socketAddress_.sin_port)
125 <<
": " << strerror(errno) << std::endl;
132 int TransmitterSocket::send(
Socket& toSocket,
133 const std::vector<uint32_t>& buffer,
137 std::lock_guard<std::mutex> lock(sendMutex_);
143 if(sendto(socketNumber_,
145 buffer.size() *
sizeof(uint32_t),
147 (
struct sockaddr*)&(toSocket.getSocketAddress()),
148 sizeof(sockaddr_in)) < (
int)(buffer.size() *
sizeof(uint32_t)))
150 __COUT__ <<
"Error writing buffer for port " << ntohs(socketAddress_.sin_port)