summaryrefslogtreecommitdiff
path: root/src/swarmkv_net.h
blob: 456665433c0188a6d7879776089cf81e431acc70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#pragma once
#include "swarmkv_message.h"
#include "swarmkv_common.h"
#include "swarmkv_cmd_spec.h"
struct swarmkv_net;

struct swarmkv_net *swarmkv_net_new(struct event_base *evbases[], int nr_threads, struct swarmkv_options *opts, struct log_handle *logger, char **err);
void swarmkv_net_free(struct swarmkv_net *net);

typedef void on_net_msg_callback_t(struct swarmkv_msg *msg, const node_t *peer, int peer_tid, void *arg);
void swarmkv_net_set_on_msg_callback(struct swarmkv_net *net, on_net_msg_callback_t *cb, void *cb_arg);
//swamrkv_net_send takes the ownership of msg.
int swarmkv_net_send(struct swarmkv_net *net, int tid, const node_t *dest, int dest_tid, struct swarmkv_msg *msg, const char **err_str);

void swarmkv_net_set_monitor_handle(struct swarmkv_net *net, struct swarmkv_module *mod_monitor);


struct snet_info
{
	long long output_buf_max;
	long long connections;

	long long input_bytes;
	long long input_msgs;
	long long input_error_msgs;

	long long output_bytes;
	long long output_msgs;
	long long output_drop_msgs;
	
	long long input_buffer_sz;
	long long output_buffer_sz;
	
	double instantaneous_input_kbps;
	double instantaneous_output_kbps;

	double instantaneous_input_msgs;
	double instantaneous_output_msgs;

	double input_compression_ratio;
	double output_compression_ratio;
};
void swarmkv_net_info(struct swarmkv_net *net, struct snet_info *info);