return true;
}
-RemoteLogger::RemoteLogger(const ComboAddress& remote, uint16_t timeout, uint64_t maxQueuedBytes, uint8_t reconnectWaitTime, bool asyncConnect): d_writer(maxQueuedBytes), d_remote(remote), d_maxQueuedBytes(maxQueuedBytes), d_timeout(timeout), d_reconnectWaitTime(reconnectWaitTime), d_asyncConnect(asyncConnect)
+RemoteLogger::RemoteLogger(const ComboAddress& remote, uint16_t timeout, uint64_t maxQueuedBytes, uint8_t reconnectWaitTime, bool asyncConnect): d_writer(maxQueuedBytes), d_remote(remote), d_timeout(timeout), d_reconnectWaitTime(reconnectWaitTime), d_asyncConnect(asyncConnect)
{
if (!d_asyncConnect) {
reconnect();
/* we don't want to take the lock while trying to reconnect */
std::unique_lock<std::mutex> lock(d_mutex);
if (d_socket) { // check if it is set
+ /* if flush() returns false, it means that we couldn't flush anything yet
+ either because there is nothing to flush, or because the outgoing TCP
+ buffer is full. That's fine by us */
d_writer.flush(d_socket->getHandle());
}
else {
}
catch(const std::exception& e)
{
- cerr<<"Thead died on: "<<e.what()<<endl;
+ cerr << "Remote Logger's maintenance thead died on: " << e.what() << endl;
+}
+catch(...) {
+ cerr << "Remote Logger's maintenance thead died on unknown exception" << endl;
}
RemoteLogger::~RemoteLogger()
ComboAddress d_remote;
std::atomic<uint64_t> d_drops{0};
std::atomic<uint64_t> d_queued{0};
- uint64_t d_maxQueuedBytes;
std::unique_ptr<Socket> d_socket{nullptr};
uint16_t d_timeout;
uint8_t d_reconnectWaitTime;