summaryrefslogtreecommitdiffstats
path: root/logd/src/logd/legacy_forwarder.h
diff options
context:
space:
mode:
Diffstat (limited to 'logd/src/logd/legacy_forwarder.h')
-rw-r--r--logd/src/logd/legacy_forwarder.h21
1 files changed, 15 insertions, 6 deletions
diff --git a/logd/src/logd/legacy_forwarder.h b/logd/src/logd/legacy_forwarder.h
index db3bf84fd4f..bbd7ed840ae 100644
--- a/logd/src/logd/legacy_forwarder.h
+++ b/logd/src/logd/legacy_forwarder.h
@@ -2,6 +2,8 @@
#pragma once
#include "forwarder.h"
+#include <vespa/vespalib/stllike/string.h>
+#include <memory>
namespace logdemon {
@@ -12,8 +14,8 @@ struct Metrics;
*/
class LegacyForwarder : public Forwarder {
private:
- int _logserverfd;
Metrics &_metrics;
+ int _logserver_fd;
ForwardMap _forwardMap;
int _badLines;
const char *copystr(const char *b, const char *e) {
@@ -23,16 +25,23 @@ private:
ret[len] = '\0';
return ret;
}
+ void connect_to_logserver(const vespalib::string& logserver_host, int logserver_port);
+ void connect_to_dev_null();
bool parseLine(std::string_view line);
-public:
+ void forwardText(const char *text, int len);
LegacyForwarder(Metrics &metrics);
+
+public:
+ using UP = std::unique_ptr<LegacyForwarder>;
+ static LegacyForwarder::UP to_logserver(Metrics& metrics, const vespalib::string& logserver_host, int logserver_port);
+ static LegacyForwarder::UP to_dev_null(Metrics& metrics);
+ static LegacyForwarder::UP to_open_file(Metrics& metrics, int file_desc);
~LegacyForwarder();
- void forwardText(const char *text, int len);
+ void setForwardMap(const ForwardMap& forwardMap) { _forwardMap = forwardMap; }
+
+ // Implements Forwarder
void forwardLine(std::string_view line) override;
void flush() override {}
- void setForwardMap(const ForwardMap & forwardMap) { _forwardMap = forwardMap; }
- void setLogserverFD(int fd) { _logserverfd = fd; }
- int getLogserverFD() { return _logserverfd; }
void sendMode() override;
int badLines() const override { return _badLines; }
void resetBadLines() override { _badLines = 0; }