Skip to content

Commit 3c67574

Browse files
committed
Clean up code
1 parent b5cf301 commit 3c67574

4 files changed

Lines changed: 73 additions & 21 deletions

File tree

libs/writer/writer_types/include/udp_writer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@ class UDPWriter final : public BaseWriter
2323
bool m_socketEstablished;
2424

2525
bool CreateSocket();
26+
bool TryToSend(const std::string& message);
2627
};

libs/writer/writer_types/include/uds_writer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,5 @@ class UDSWriter final : public BaseWriter
2222
bool m_socketEstablished;
2323

2424
bool CreateSocket();
25+
bool TryToSend(const std::string& message);
2526
};

libs/writer/writer_types/src/udp_writer.cpp

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ UDPWriter::UDPWriter(const std::string& host, int port) :
1717

1818
UDPWriter::~UDPWriter() { Close(); }
1919

20-
bool UDPWriter::CreateSocket()
20+
bool UDPWriter::CreateSocket() try
2121
{
2222
if (m_socketEstablished)
2323
{
@@ -38,28 +38,49 @@ bool UDPWriter::CreateSocket()
3838
Logger::info("UDPWriter: Socket created for {}:{}", m_host, m_port);
3939
return true;
4040
}
41-
42-
void UDPWriter::Write(const std::string& message)
41+
catch (const boost::system::system_error& ex)
4342
{
44-
if (false == this->m_socketEstablished && false == this->CreateSocket())
45-
{
46-
Logger::error("UDPWriter: Failed to write message, socket not established {}:{}", m_host, m_port);
47-
return;
48-
}
43+
Logger::error("UDP Writer: Boost exception: {}", ex.what());
44+
return false;
45+
}
4946

47+
bool UDPWriter::TryToSend(const std::string& message) try
48+
{
5049
boost::system::error_code ec;
5150
for (int i = 0; i < 3; i++)
5251
{
5352
size_t sent = m_socket->send_to(boost::asio::buffer(message.data(), message.size()), m_endpoint, 0, ec);
5453
if (ec || sent < message.size())
5554
{
5655
Logger::error("UDP Writer: Failed to send message - {}, sent {} bytes out of {}", ec.message(), sent, message.size());
56+
continue;
5757
}
58-
break;
58+
return true;
59+
}
60+
return false;
61+
}
62+
catch (const boost::system::system_error& ex)
63+
{
64+
Logger::error("UDP Writer: Boost exception: {}", ex.what());
65+
return false;
66+
}
67+
68+
void UDPWriter::Write(const std::string& message)
69+
{
70+
if (false == this->m_socketEstablished && false == this->CreateSocket())
71+
{
72+
Logger::error("UDPWriter: Failed to write message, socket not established {}:{}", m_host, m_port);
73+
return;
74+
}
75+
76+
if (TryToSend(message) == false)
77+
{
78+
Logger::error("UDP Writer: Failed to send message: {}", message);
79+
this->Close();
5980
}
6081
}
6182

62-
void UDPWriter::Close()
83+
void UDPWriter::Close() try
6384
{
6485
this->m_socketEstablished = false;
6586
if(m_socket && m_socket->is_open())
@@ -71,4 +92,8 @@ void UDPWriter::Close()
7192
Logger::error("UDP Writer: Error closing existing socket - {}", ec.message());
7293
}
7394
}
95+
}
96+
catch (const boost::system::system_error& ex)
97+
{
98+
Logger::error("UDP Writer: Boost exception: {}", ex.what());
7499
}

libs/writer/writer_types/src/uds_writer.cpp

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ UDSWriter::UDSWriter(const std::string& socketPath)
1616

1717
UDSWriter::~UDSWriter() { Close(); }
1818

19-
bool UDSWriter::CreateSocket()
19+
bool UDSWriter::CreateSocket() try
2020
{
2121
if (m_socketEstablished)
2222
{
@@ -37,28 +37,49 @@ bool UDSWriter::CreateSocket()
3737
Logger::info("UDS Writer: Socket created for {}", m_socketPath);
3838
return true;
3939
}
40-
41-
void UDSWriter::Write(const std::string& message)
40+
catch (const boost::system::system_error& ex)
4241
{
43-
if (false == this->m_socketEstablished && false == this->CreateSocket())
44-
{
45-
Logger::error("UDS Writer: Failed to write message, socket not established {}", m_socketPath);
46-
return;
47-
}
42+
Logger::error("UDS Writer: Boost exception: {}", ex.what());
43+
return false;
44+
}
4845

46+
bool UDSWriter::TryToSend(const std::string& message) try
47+
{
4948
boost::system::error_code ec;
5049
for (int i = 0; i < 3; i++)
5150
{
5251
size_t sent = m_socket->send_to(boost::asio::buffer(message), m_endpoint, 0, ec);
5352
if (ec || sent < message.size())
5453
{
5554
Logger::error("UDS Writer: Failed to send message - {}, sent {} bytes out of {}", ec.message(), sent, message.size());
55+
continue;
5656
}
57-
break;
58-
}
57+
return true;
58+
}
59+
return false;
60+
}
61+
catch (const boost::system::system_error& ex)
62+
{
63+
Logger::error("UDS Writer: Boost exception: {}", ex.what());
64+
return false;
5965
}
6066

61-
void UDSWriter::Close()
67+
void UDSWriter::Write(const std::string& message)
68+
{
69+
if (false == this->m_socketEstablished && false == this->CreateSocket())
70+
{
71+
Logger::error("UDS Writer: Failed to write message, socket not established {}", m_socketPath);
72+
return;
73+
}
74+
75+
if (false == this->TryToSend(message))
76+
{
77+
Logger::error("UDS Writer: Failed to send message: {}", message);
78+
this->Close();
79+
}
80+
}
81+
82+
void UDSWriter::Close() try
6283
{
6384
this->m_socketEstablished = false;
6485
if (m_socket != nullptr && m_socket->is_open())
@@ -71,3 +92,7 @@ void UDSWriter::Close()
7192
}
7293
}
7394
}
95+
catch (const boost::system::system_error& ex)
96+
{
97+
Logger::error("UDS Writer: Boost exception: {}", ex.what());
98+
}

0 commit comments

Comments
 (0)