aboutsummaryrefslogtreecommitdiffstats
path: root/logd
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2019-03-21 14:24:11 +0000
committerGeir Storli <geirst@verizonmedia.com>2019-03-21 14:24:11 +0000
commit5b94546d42899040caf285948b6e1c305d4fb2ed (patch)
tree634da86f1f15db9a9f23b1b361d12695323db29b /logd
parent22af1049211b69490223aeec835d2aa6f052d564 (diff)
Create interface for a Forwarder as seen from the log file Watcher.
Diffstat (limited to 'logd')
-rw-r--r--logd/src/logd/forwarder.h19
-rw-r--r--logd/src/logd/legacy_forwarder.h12
-rw-r--r--logd/src/logd/watcher.cpp5
-rw-r--r--logd/src/logd/watcher.h6
4 files changed, 31 insertions, 11 deletions
diff --git a/logd/src/logd/forwarder.h b/logd/src/logd/forwarder.h
new file mode 100644
index 00000000000..a0a1c5f1ea5
--- /dev/null
+++ b/logd/src/logd/forwarder.h
@@ -0,0 +1,19 @@
+// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+namespace logdemon {
+
+/**
+ * Interface used to forward log lines to something.
+ */
+class Forwarder {
+public:
+ virtual ~Forwarder() {}
+ virtual void sendMode() = 0;
+ virtual void forwardLine(const char *line, const char *eol) = 0;
+ virtual int badLines() const = 0;
+ virtual void resetBadLines() = 0;
+};
+
+}
diff --git a/logd/src/logd/legacy_forwarder.h b/logd/src/logd/legacy_forwarder.h
index 7852219d9f0..da8dbcc82ab 100644
--- a/logd/src/logd/legacy_forwarder.h
+++ b/logd/src/logd/legacy_forwarder.h
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
+#include "forwarder.h"
#include <vespa/log/log.h>
#include <map>
#include <unordered_set>
@@ -25,8 +26,7 @@ public:
/**
* Class used to forward log lines to the logserver via a one-way text protocol.
*/
-class LegacyForwarder
-{
+class LegacyForwarder : public Forwarder {
private:
int _logserverfd;
Metrics &_metrics;
@@ -45,13 +45,13 @@ public:
LegacyForwarder(Metrics &metrics);
~LegacyForwarder();
void forwardText(const char *text, int len);
- void forwardLine(const char *line, const char *eol);
+ void forwardLine(const char *line, const char *eol) override;
void setForwardMap(const ForwardMap & forwardMap) { _forwardMap = forwardMap; }
void setLogserverFD(int fd) { _logserverfd = fd; }
int getLogserverFD() { return _logserverfd; }
- void sendMode();
- int badLines() const { return _badLines; }
- void resetBadLines() { _badLines = 0; }
+ void sendMode() override;
+ int badLines() const override { return _badLines; }
+ void resetBadLines() override { _badLines = 0; }
};
}
diff --git a/logd/src/logd/watcher.cpp b/logd/src/logd/watcher.cpp
index 765e338fa72..a047c110f32 100644
--- a/logd/src/logd/watcher.cpp
+++ b/logd/src/logd/watcher.cpp
@@ -2,8 +2,9 @@
#include "config_subscriber.h"
#include "exceptions.h"
-#include "legacy_forwarder.h"
+#include "forwarder.h"
#include "watcher.h"
+#include <vespa/log/log.h>
#include <vespa/vespalib/util/sig_catch.h>
#include <fcntl.h>
#include <glob.h>
@@ -59,7 +60,7 @@ constexpr size_t G_BUFSIZE = 1024*1024;
} // namespace logdemon::<unnamed>
-Watcher::Watcher(ConfigSubscriber &cfs, LegacyForwarder &fw)
+Watcher::Watcher(ConfigSubscriber &cfs, Forwarder &fw)
: _buffer(G_BUFSIZE),
_confsubscriber(cfs),
_forwarder(fw),
diff --git a/logd/src/logd/watcher.h b/logd/src/logd/watcher.h
index cd4d9947fd8..2629da040f7 100644
--- a/logd/src/logd/watcher.h
+++ b/logd/src/logd/watcher.h
@@ -5,7 +5,7 @@
namespace logdemon {
-class LegacyForwarder;
+class Forwarder;
class ConfigSubscriber;
/**
@@ -16,14 +16,14 @@ class Watcher
private:
std::vector<char> _buffer;
ConfigSubscriber & _confsubscriber;
- LegacyForwarder & _forwarder;
+ Forwarder & _forwarder;
int _wfd;
char * getBuf() { return &_buffer[0]; }
long getBufSize() const { return _buffer.size(); }
public:
Watcher(const Watcher& other) = delete;
Watcher& operator=(const Watcher& other) = delete;
- Watcher(ConfigSubscriber &cfs, LegacyForwarder &fw);
+ Watcher(ConfigSubscriber &cfs, Forwarder &fw);
~Watcher();
void watchfile();