83 lines
2.3 KiB
C
83 lines
2.3 KiB
C
#ifndef OMNISOCKET_PY_CLIENT_H
|
|
#define OMNISOCKET_PY_CLIENT_H
|
|
|
|
#include "peer_kcp_client.h"
|
|
|
|
typedef struct omnisocket_session_stats {
|
|
uint64_t send_calls;
|
|
uint64_t send_bytes;
|
|
uint64_t send_errors;
|
|
uint64_t recv_calls;
|
|
uint64_t recv_bytes;
|
|
uint64_t recv_timeouts;
|
|
uint64_t recv_errors;
|
|
int connected;
|
|
} omnisocket_session_stats_t;
|
|
|
|
typedef struct omnisocket_session_kcp_metrics {
|
|
int connected;
|
|
int has_conv;
|
|
uint32_t conv;
|
|
char local_addr[OMNI_MAX_ADDR_TEXT];
|
|
char remote_addr[OMNI_MAX_ADDR_TEXT];
|
|
uint32_t rto_ms;
|
|
int32_t srtt_ms;
|
|
int32_t srttvar_ms;
|
|
uint64_t bytes_sent;
|
|
uint64_t bytes_received;
|
|
uint64_t in_pkts;
|
|
uint64_t out_pkts;
|
|
uint64_t in_segs;
|
|
uint64_t out_segs;
|
|
uint64_t retrans_segs;
|
|
uint64_t fast_retrans_segs;
|
|
uint64_t early_retrans_segs;
|
|
uint64_t lost_segs;
|
|
uint64_t repeat_segs;
|
|
uint64_t in_errs;
|
|
uint64_t kcp_in_errs;
|
|
uint64_t ring_buffer_snd_queue;
|
|
uint64_t ring_buffer_rcv_queue;
|
|
uint64_t ring_buffer_snd_buffer;
|
|
} omnisocket_session_kcp_metrics_t;
|
|
|
|
typedef struct omnisocket_session {
|
|
pthread_mutex_t mutex;
|
|
pthread_cond_t idle_cond;
|
|
kcp_client_t *client;
|
|
size_t active_ops;
|
|
int closing;
|
|
omnisocket_session_stats_t stats;
|
|
} omnisocket_session_t;
|
|
|
|
int omnisocket_session_init(omnisocket_session_t *session);
|
|
void omnisocket_session_destroy(omnisocket_session_t *session);
|
|
|
|
int omnisocket_session_connect(
|
|
omnisocket_session_t *session,
|
|
const char *server_addr,
|
|
const char *relay_via,
|
|
const char *peer_id,
|
|
const char *bind_ip,
|
|
const char *bind_device,
|
|
const kcp_conn_options_t *options,
|
|
int stats_interval_ms
|
|
);
|
|
int omnisocket_session_close(omnisocket_session_t *session);
|
|
int omnisocket_session_send(omnisocket_session_t *session, const char *to, const void *data, size_t data_len);
|
|
int omnisocket_session_recv(omnisocket_session_t *session, message_t *out_msg, int timeout_ms);
|
|
int omnisocket_session_recv_into(
|
|
omnisocket_session_t *session,
|
|
void *buffer,
|
|
size_t buffer_len,
|
|
kcp_client_recv_meta_t *out_meta,
|
|
int timeout_ms
|
|
);
|
|
void omnisocket_session_stats_snapshot(omnisocket_session_t *session, omnisocket_session_stats_t *out_stats);
|
|
int omnisocket_session_kcp_metrics_snapshot(
|
|
omnisocket_session_t *session,
|
|
omnisocket_session_kcp_metrics_t *out_metrics
|
|
);
|
|
|
|
#endif
|