(ixbots) add new class to configure a bot to simplify passing options around

This commit is contained in:
Benjamin Sergeant
2020-05-12 19:08:16 -07:00
parent cc72494b63
commit 2e904801a0
18 changed files with 109 additions and 188 deletions

View File

@ -13,6 +13,7 @@ set (IXBOTS_SOURCES
set (IXBOTS_HEADERS
ixbots/IXCobraBot.h
ixbots/IXCobraBotConfig.h
ixbots/IXCobraToSentryBot.h
ixbots/IXCobraToStatsdBot.h
ixbots/IXCobraToStdoutBot.h

View File

@ -17,14 +17,16 @@
namespace ix
{
int64_t CobraBot::run(const CobraConfig& config,
const std::string& channel,
const std::string& filter,
const std::string& position,
bool enableHeartbeat,
int heartBeatTimeout,
int runtime)
int64_t CobraBot::run(const CobraBotConfig& botConfig)
{
auto config = botConfig.cobraConfig;
auto channel = botConfig.channel;
auto filter = botConfig.filter;
auto position = botConfig.position;
auto enableHeartbeat = botConfig.enableHeartbeat;
auto heartBeatTimeout = botConfig.heartBeatTimeout;
auto runtime = botConfig.runtime;
ix::CobraConnection conn;
conn.configure(config);
conn.connect();

View File

@ -8,7 +8,7 @@
#include <atomic>
#include <functional>
#include <ixcobra/IXCobraConfig.h>
#include "IXCobraBotConfig.h"
#include <json/json.h>
#include <stddef.h>
@ -25,14 +25,7 @@ namespace ix
public:
CobraBot() = default;
int64_t run(const CobraConfig& config,
const std::string& channel,
const std::string& filter,
const std::string& position,
bool enableHeartbeat,
int heartBeatTimeout,
int runtime);
int64_t run(const CobraBotConfig& botConfig);
void setOnBotMessageCallback(const OnBotMessageCallback& callback);
private:

View File

@ -0,0 +1,24 @@
/*
* IXCobraBotConfig.h
* Author: Benjamin Sergeant
* Copyright (c) 2020 Machine Zone, Inc. All rights reserved.
*/
#pragma once
#include <string>
#include <ixcobra/IXCobraConfig.h>
namespace ix
{
struct CobraBotConfig
{
CobraConfig cobraConfig;
std::string channel;
std::string filter;
std::string position = std::string("$");
bool enableHeartbeat = true;
int heartBeatTimeout = 60;
int runtime = -1;
};
} // namespace ix

View File

@ -16,15 +16,9 @@
namespace ix
{
int64_t cobra_to_sentry_bot(const CobraConfig& config,
const std::string& channel,
const std::string& filter,
const std::string& position,
int64_t cobra_to_sentry_bot(const CobraBotConfig& config,
SentryClient& sentryClient,
bool verbose,
bool enableHeartbeat,
int heartBeatTimeout,
int runtime)
bool verbose)
{
CobraBot bot;
bot.setOnBotMessageCallback([&sentryClient, &verbose](const Json::Value& msg,
@ -77,12 +71,6 @@ namespace ix
});
});
return bot.run(config,
channel,
filter,
position,
enableHeartbeat,
heartBeatTimeout,
runtime);
return bot.run(config);
}
} // namespace ix

View File

@ -6,19 +6,13 @@
#pragma once
#include <cstdint>
#include <ixcobra/IXCobraConfig.h>
#include "IXCobraBotConfig.h"
#include <ixsentry/IXSentryClient.h>
#include <string>
namespace ix
{
int64_t cobra_to_sentry_bot(const CobraConfig& config,
const std::string& channel,
const std::string& filter,
const std::string& position,
int64_t cobra_to_sentry_bot(const CobraBotConfig& config,
SentryClient& sentryClient,
bool verbose,
bool enableHeartbeat,
int heartBeatTimeout,
int runtime);
bool verbose);
} // namespace ix

View File

@ -53,23 +53,13 @@ namespace ix
return val;
}
int64_t cobra_to_statsd_bot(const ix::CobraConfig& config,
const std::string& channel,
const std::string& filter,
const std::string& position,
int64_t cobra_to_statsd_bot(const ix::CobraBotConfig& config,
StatsdClient& statsdClient,
const std::string& fields,
const std::string& gauge,
const std::string& timer,
bool verbose,
bool enableHeartbeat,
int heartBeatTimeout,
int runtime)
bool verbose)
{
ix::CobraConnection conn;
conn.configure(config);
conn.connect();
auto tokens = parseFields(fields);
CobraBot bot;
@ -142,12 +132,6 @@ namespace ix
sentCount++;
});
return bot.run(config,
channel,
filter,
position,
enableHeartbeat,
heartBeatTimeout,
runtime);
return bot.run(config);
}
} // namespace ix

View File

@ -7,22 +7,16 @@
#include <cstdint>
#include <ixbots/IXStatsdClient.h>
#include <ixcobra/IXCobraConfig.h>
#include "IXCobraBotConfig.h"
#include <stddef.h>
#include <string>
namespace ix
{
int64_t cobra_to_statsd_bot(const ix::CobraConfig& config,
const std::string& channel,
const std::string& filter,
const std::string& position,
int64_t cobra_to_statsd_bot(const ix::CobraBotConfig& config,
StatsdClient& statsdClient,
const std::string& fields,
const std::string& gauge,
const std::string& timer,
bool verbose,
bool enableHeartbeat,
int heartBeatTimeout,
int runtime);
bool verbose);
} // namespace ix

View File

@ -63,15 +63,9 @@ namespace ix
}
}
int64_t cobra_to_stdout_bot(const CobraConfig& config,
const std::string& channel,
const std::string& filter,
const std::string& position,
int64_t cobra_to_stdout_bot(const ix::CobraBotConfig& config,
bool fluentd,
bool quiet,
bool enableHeartbeat,
int heartBeatTimeout,
int runtime)
bool quiet)
{
CobraBot bot;
auto jsonWriter = makeStreamWriter();
@ -89,12 +83,6 @@ namespace ix
sentCount++;
});
return bot.run(config,
channel,
filter,
position,
enableHeartbeat,
heartBeatTimeout,
runtime);
return bot.run(config);
}
} // namespace ix

View File

@ -6,19 +6,13 @@
#pragma once
#include <cstdint>
#include <ixcobra/IXCobraConfig.h>
#include "IXCobraBotConfig.h"
#include <stddef.h>
#include <string>
namespace ix
{
int64_t cobra_to_stdout_bot(const ix::CobraConfig& config,
const std::string& channel,
const std::string& filter,
const std::string& position,
int64_t cobra_to_stdout_bot(const ix::CobraBotConfig& config,
bool fluentd,
bool quiet,
bool enableHeartbeat,
int heartBeatTimeout,
int runtime);
bool quiet);
} // namespace ix