Monitoring System 0.1.0
System resource monitoring with pluggable collectors and alerting
Loading...
Searching...
No Matches
kcenon::monitoring::stub_grpc_transport Class Reference

Stub gRPC transport for testing. More...

#include <grpc_transport.h>

Inheritance diagram for kcenon::monitoring::stub_grpc_transport:
Inheritance graph
Collaboration diagram for kcenon::monitoring::stub_grpc_transport:
Collaboration graph

Public Member Functions

 stub_grpc_transport ()=default
 
void set_simulate_success (bool success)
 Set whether to simulate success or failure.
 
void set_response_handler (std::function< grpc_response(const grpc_request &)> handler)
 Set custom response handler for testing.
 
common::VoidResult connect (const std::string &host, uint16_t port) override
 Connect to a gRPC server.
 
common::Result< grpc_responsesend (const grpc_request &request) override
 Send a gRPC request.
 
bool is_connected () const override
 Check if connected to the server.
 
void disconnect () override
 Disconnect from the server.
 
bool is_available () const override
 Check if transport is available.
 
std::string name () const override
 Get transport name.
 
grpc_statistics get_statistics () const override
 Get transport statistics.
 
void reset_statistics () override
 Reset statistics.
 
std::string get_host () const
 
uint16_t get_port () const
 
- Public Member Functions inherited from kcenon::monitoring::grpc_transport
virtual ~grpc_transport ()=default
 

Private Attributes

std::string host_
 
uint16_t port_ {0}
 
bool connected_ {false}
 
bool simulate_success_ {true}
 
std::function< grpc_response(const grpc_request &)> response_handler_
 
std::atomic< std::size_t > requests_sent_ {0}
 
std::atomic< std::size_t > bytes_sent_ {0}
 
std::atomic< std::size_t > send_failures_ {0}
 

Detailed Description

Stub gRPC transport for testing.

This implementation simulates gRPC calls without actual network operations. Useful for unit testing and when gRPC library is unavailable.

Definition at line 133 of file grpc_transport.h.

Constructor & Destructor Documentation

◆ stub_grpc_transport()

kcenon::monitoring::stub_grpc_transport::stub_grpc_transport ( )
default

Member Function Documentation

◆ connect()

common::VoidResult kcenon::monitoring::stub_grpc_transport::connect ( const std::string & host,
uint16_t port )
inlineoverridevirtual

Connect to a gRPC server.

Parameters
hostServer hostname or IP address
portServer port number
Returns
common::VoidResult indicating success or failure

Implements kcenon::monitoring::grpc_transport.

Definition at line 161 of file grpc_transport.h.

161 {
162 if (!simulate_success_) {
163 return common::VoidResult::err(error_info(
165 "Simulated connection failure",
166 "stub_grpc_transport"
167 ).to_common_error());
168 }
169 host_ = host;
170 port_ = port;
171 connected_ = true;
172 return common::ok();
173 }

References connected_, kcenon::monitoring::host, host_, kcenon::monitoring::network_error, port_, and simulate_success_.

◆ disconnect()

void kcenon::monitoring::stub_grpc_transport::disconnect ( )
inlineoverridevirtual

Disconnect from the server.

Implements kcenon::monitoring::grpc_transport.

Definition at line 208 of file grpc_transport.h.

208 {
209 connected_ = false;
210 host_.clear();
211 port_ = 0;
212 }

References connected_, host_, and port_.

◆ get_host()

std::string kcenon::monitoring::stub_grpc_transport::get_host ( ) const
inline

Definition at line 237 of file grpc_transport.h.

237{ return host_; }

References host_.

◆ get_port()

uint16_t kcenon::monitoring::stub_grpc_transport::get_port ( ) const
inline

Definition at line 238 of file grpc_transport.h.

238{ return port_; }

References port_.

◆ get_statistics()

grpc_statistics kcenon::monitoring::stub_grpc_transport::get_statistics ( ) const
inlineoverridevirtual

Get transport statistics.

Returns
Current statistics

Implements kcenon::monitoring::grpc_transport.

Definition at line 222 of file grpc_transport.h.

222 {
223 return {
224 requests_sent_.load(std::memory_order_relaxed),
225 bytes_sent_.load(std::memory_order_relaxed),
226 send_failures_.load(std::memory_order_relaxed)
227 };
228 }
std::atomic< std::size_t > send_failures_
std::atomic< std::size_t > bytes_sent_
std::atomic< std::size_t > requests_sent_

References bytes_sent_, requests_sent_, and send_failures_.

◆ is_available()

bool kcenon::monitoring::stub_grpc_transport::is_available ( ) const
inlineoverridevirtual

Check if transport is available.

Returns
true if transport can send data

Implements kcenon::monitoring::grpc_transport.

Definition at line 214 of file grpc_transport.h.

214 {
215 return true;
216 }

◆ is_connected()

bool kcenon::monitoring::stub_grpc_transport::is_connected ( ) const
inlineoverridevirtual

Check if connected to the server.

Returns
true if connected

Implements kcenon::monitoring::grpc_transport.

Definition at line 204 of file grpc_transport.h.

204 {
205 return connected_;
206 }

References connected_.

◆ name()

std::string kcenon::monitoring::stub_grpc_transport::name ( ) const
inlineoverridevirtual

Get transport name.

Returns
Transport implementation identifier

Implements kcenon::monitoring::grpc_transport.

Definition at line 218 of file grpc_transport.h.

218 {
219 return "stub";
220 }

◆ reset_statistics()

void kcenon::monitoring::stub_grpc_transport::reset_statistics ( )
inlineoverridevirtual

Reset statistics.

Implements kcenon::monitoring::grpc_transport.

Definition at line 230 of file grpc_transport.h.

230 {
231 requests_sent_.store(0, std::memory_order_relaxed);
232 bytes_sent_.store(0, std::memory_order_relaxed);
233 send_failures_.store(0, std::memory_order_relaxed);
234 }

References bytes_sent_, requests_sent_, and send_failures_.

◆ send()

common::Result< grpc_response > kcenon::monitoring::stub_grpc_transport::send ( const grpc_request & request)
inlineoverridevirtual

Send a gRPC request.

Parameters
requestThe gRPC request to send
Returns
Result containing response or error

Implements kcenon::monitoring::grpc_transport.

Definition at line 175 of file grpc_transport.h.

175 {
176 if (!connected_) {
177 send_failures_.fetch_add(1, std::memory_order_relaxed);
178 return common::Result<grpc_response>::err(error_info(monitoring_error_code::network_error, "Not connected").to_common_error());
179 }
180
181 if (response_handler_) {
182 auto response = response_handler_(request);
183 requests_sent_.fetch_add(1, std::memory_order_relaxed);
184 bytes_sent_.fetch_add(request.body.size(), std::memory_order_relaxed);
185 return common::ok(response);
186 }
187
188 if (!simulate_success_) {
189 send_failures_.fetch_add(1, std::memory_order_relaxed);
190 return common::Result<grpc_response>::err(error_info(monitoring_error_code::network_error, "Simulated send failure").to_common_error());
191 }
192
193 grpc_response response;
194 response.status_code = 0; // OK in gRPC
195 response.status_message = "OK";
196 response.elapsed = std::chrono::milliseconds(10);
197
198 requests_sent_.fetch_add(1, std::memory_order_relaxed);
199 bytes_sent_.fetch_add(request.body.size(), std::memory_order_relaxed);
200
201 return common::ok(response);
202 }
std::function< grpc_response(const grpc_request &)> response_handler_

References kcenon::monitoring::grpc_request::body, bytes_sent_, connected_, kcenon::monitoring::grpc_response::elapsed, kcenon::monitoring::network_error, requests_sent_, response_handler_, send_failures_, simulate_success_, kcenon::monitoring::grpc_response::status_code, and kcenon::monitoring::grpc_response::status_message.

◆ set_response_handler()

void kcenon::monitoring::stub_grpc_transport::set_response_handler ( std::function< grpc_response(const grpc_request &)> handler)
inline

Set custom response handler for testing.

Definition at line 157 of file grpc_transport.h.

157 {
158 response_handler_ = std::move(handler);
159 }

References response_handler_.

◆ set_simulate_success()

void kcenon::monitoring::stub_grpc_transport::set_simulate_success ( bool success)
inline

Set whether to simulate success or failure.

Definition at line 150 of file grpc_transport.h.

References simulate_success_, and kcenon::monitoring::success.

Member Data Documentation

◆ bytes_sent_

std::atomic<std::size_t> kcenon::monitoring::stub_grpc_transport::bytes_sent_ {0}
mutableprivate

Definition at line 141 of file grpc_transport.h.

141{0};

Referenced by get_statistics(), reset_statistics(), and send().

◆ connected_

bool kcenon::monitoring::stub_grpc_transport::connected_ {false}
private

Definition at line 137 of file grpc_transport.h.

137{false};

Referenced by connect(), disconnect(), is_connected(), and send().

◆ host_

std::string kcenon::monitoring::stub_grpc_transport::host_
private

Definition at line 135 of file grpc_transport.h.

Referenced by connect(), disconnect(), and get_host().

◆ port_

uint16_t kcenon::monitoring::stub_grpc_transport::port_ {0}
private

Definition at line 136 of file grpc_transport.h.

136{0};

Referenced by connect(), disconnect(), and get_port().

◆ requests_sent_

std::atomic<std::size_t> kcenon::monitoring::stub_grpc_transport::requests_sent_ {0}
mutableprivate

Definition at line 140 of file grpc_transport.h.

140{0};

Referenced by get_statistics(), reset_statistics(), and send().

◆ response_handler_

std::function<grpc_response(const grpc_request&)> kcenon::monitoring::stub_grpc_transport::response_handler_
private

Definition at line 139 of file grpc_transport.h.

Referenced by send(), and set_response_handler().

◆ send_failures_

std::atomic<std::size_t> kcenon::monitoring::stub_grpc_transport::send_failures_ {0}
mutableprivate

Definition at line 142 of file grpc_transport.h.

142{0};

Referenced by get_statistics(), reset_statistics(), and send().

◆ simulate_success_

bool kcenon::monitoring::stub_grpc_transport::simulate_success_ {true}
private

Definition at line 138 of file grpc_transport.h.

138{true};

Referenced by connect(), send(), and set_simulate_success().


The documentation for this class was generated from the following file: