(ws + cobra bots) add a cobra_to_cobra ws subcommand to subscribe to a channel and republish received events to a different channel
This commit is contained in:
		| @@ -5,6 +5,7 @@ | ||||
|  | ||||
| set (IXBOTS_SOURCES | ||||
|     ixbots/IXCobraBot.cpp | ||||
|     ixbots/IXCobraToCobraBot.cpp | ||||
|     ixbots/IXCobraToSentryBot.cpp | ||||
|     ixbots/IXCobraToStatsdBot.cpp | ||||
|     ixbots/IXCobraToStdoutBot.cpp | ||||
| @@ -16,6 +17,7 @@ set (IXBOTS_SOURCES | ||||
| set (IXBOTS_HEADERS | ||||
|     ixbots/IXCobraBot.h | ||||
|     ixbots/IXCobraBotConfig.h | ||||
|     ixbots/IXCobraToCobraBot.h | ||||
|     ixbots/IXCobraToSentryBot.h | ||||
|     ixbots/IXCobraToStatsdBot.h | ||||
|     ixbots/IXCobraToStdoutBot.h | ||||
|   | ||||
							
								
								
									
										43
									
								
								ixbots/ixbots/IXCobraToCobraBot.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								ixbots/ixbots/IXCobraToCobraBot.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| /* | ||||
|  *  IXCobraToCobraBot.cpp | ||||
|  *  Author: Benjamin Sergeant | ||||
|  *  Copyright (c) 2020 Machine Zone, Inc. All rights reserved. | ||||
|  */ | ||||
|  | ||||
| #include "IXCobraToCobraBot.h" | ||||
|  | ||||
| #include "IXCobraBot.h" | ||||
| #include <ixcobra/IXCobraMetricsPublisher.h> | ||||
| #include <sstream> | ||||
|  | ||||
| namespace ix | ||||
| { | ||||
|     int64_t cobra_to_cobra_bot(const ix::CobraBotConfig& cobraBotConfig, | ||||
|                                const std::string& republishChannel, | ||||
|                                const std::string& publisherRolename, | ||||
|                                const std::string& publisherRolesecret) | ||||
|     { | ||||
|         CobraBot bot; | ||||
|  | ||||
|         CobraMetricsPublisher cobraMetricsPublisher; | ||||
|         CobraConfig cobraPublisherConfig = cobraBotConfig.cobraConfig; | ||||
|         cobraPublisherConfig.rolename = publisherRolename; | ||||
|         cobraPublisherConfig.rolesecret = publisherRolesecret; | ||||
|         cobraMetricsPublisher.configure(cobraPublisherConfig, republishChannel); | ||||
|  | ||||
|         bot.setOnBotMessageCallback( | ||||
|             [&republishChannel, &cobraMetricsPublisher](const Json::Value& msg, | ||||
|                                                         const std::string& /*position*/, | ||||
|                                                         std::atomic<bool>& /*throttled*/, | ||||
|                                                         std::atomic<bool>& /*fatalCobraError*/, | ||||
|                                                         std::atomic<uint64_t>& sentCount) -> void { | ||||
|                 Json::Value msgWithNoId(msg); | ||||
|                 msgWithNoId.removeMember("id"); | ||||
|              | ||||
|                 cobraMetricsPublisher.push(republishChannel, msg); | ||||
|                 sentCount++; | ||||
|             }); | ||||
|  | ||||
|         return bot.run(cobraBotConfig); | ||||
|     } | ||||
| } // namespace ix | ||||
							
								
								
									
										20
									
								
								ixbots/ixbots/IXCobraToCobraBot.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								ixbots/ixbots/IXCobraToCobraBot.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| /* | ||||
|  *  IXCobraToCobraBot.h | ||||
|  *  Author: Benjamin Sergeant | ||||
|  *  Copyright (c) 2020 Machine Zone, Inc. All rights reserved. | ||||
|  */ | ||||
| #pragma once | ||||
|  | ||||
| #include <cstdint> | ||||
| #include <ixbots/IXStatsdClient.h> | ||||
| #include "IXCobraBotConfig.h" | ||||
| #include <stddef.h> | ||||
| #include <string> | ||||
|  | ||||
| namespace ix | ||||
| { | ||||
|     int64_t cobra_to_cobra_bot(const ix::CobraBotConfig& config, | ||||
|                                const std::string& republishChannel, | ||||
|                                const std::string& publisherRolename, | ||||
|                                const std::string& publisherRolesecret); | ||||
| } // namespace ix | ||||
		Reference in New Issue
	
	Block a user