This commit is contained in:
Ryan Tharp 2018-09-23 11:59:44 +00:00
commit 9c82af02d9

View File

@ -38,10 +38,14 @@
/* These originally lived in utp_config.h */
#define CCONTROL_TARGET (100 * 1000) // us
enum bandwidth_type_t {
payload_bandwidth, connect_overhead,
close_overhead, ack_overhead,
header_overhead, retransmit_overhead
enum bandwidth_type_t
{
payload_bandwidth,
connect_overhead,
close_overhead,
ack_overhead,
header_overhead,
retransmit_overhead
};
#ifdef WIN32
@ -58,7 +62,8 @@ enum bandwidth_type_t {
#endif
#endif
struct PACKED_ATTRIBUTE RST_Info {
struct PACKED_ATTRIBUTE RST_Info
{
PackedSockAddr addr;
uint32 connid;
uint16 ack_nr;
@ -69,49 +74,62 @@ struct PACKED_ATTRIBUTE RST_Info {
// If we do, we'll eventually crash. if we try to remove the second instance
// of the key, we'll accidentally remove the first instead. then later,
// checkTimeouts will try to access the second one's already freed memory.
void UTP_FreeAll(struct UTPSocketHT *utp_sockets);
void
UTP_FreeAll(struct UTPSocketHT *utp_sockets);
struct UTPSocketKey {
struct UTPSocketKey
{
PackedSockAddr addr;
uint32 recv_id; // "conn_seed", "conn_id"
UTPSocketKey(const PackedSockAddr& _addr, uint32 _recv_id) {
UTPSocketKey(const PackedSockAddr &_addr, uint32 _recv_id)
{
memset(this, 0, sizeof(*this));
addr = _addr;
recv_id = _recv_id;
}
bool operator == (const UTPSocketKey &other) const {
bool
operator==(const UTPSocketKey &other) const
{
return recv_id == other.recv_id && addr == other.addr;
}
uint32 compute_hash() const {
uint32
compute_hash() const
{
return recv_id ^ addr.compute_hash();
}
};
struct UTPSocketKeyData {
struct UTPSocketKeyData
{
UTPSocketKey key;
UTPSocket *socket;
utp_link_t link;
};
#define UTP_SOCKET_BUCKETS 79
/** make it more for llarp */
//#define UTP_SOCKET_BUCKETS 79
#define UTP_SOCKET_BUCKETS ((100 * 8) - 1)
#define UTP_SOCKET_INIT 15
struct UTPSocketHT : utpHashTable<UTPSocketKey, UTPSocketKeyData> {
UTPSocketHT() {
struct UTPSocketHT : utpHashTable< UTPSocketKey, UTPSocketKeyData >
{
UTPSocketHT()
{
const int buckets = UTP_SOCKET_BUCKETS;
const int initial = UTP_SOCKET_INIT;
this->Create(buckets, initial);
}
~UTPSocketHT() {
~UTPSocketHT()
{
UTP_FreeAll(this);
this->Free();
}
};
struct struct_utp_context {
struct struct_utp_context
{
void *userdata;
utp_callback_t *callbacks[UTP_ARRAY_SIZE];
@ -129,13 +147,17 @@ struct struct_utp_context {
struct_utp_context();
~struct_utp_context();
void log(int level, utp_socket *socket, char const *fmt, ...);
void log_unchecked(utp_socket *socket, char const *fmt, ...);
bool would_log(int level);
void
log(int level, utp_socket *socket, char const *fmt, ...);
void
log_unchecked(utp_socket *socket, char const *fmt, ...);
bool
would_log(int level);
bool log_normal : 1; // log normal events?
bool log_mtu : 1; // log MTU related events?
bool log_debug:1; // log debugging events? (Must also compile with UTP_DEBUG_LOGGING defined)
bool log_debug : 1; // log debugging events? (Must also compile with
// UTP_DEBUG_LOGGING defined)
};
#endif //__UTP_INTERNAL_H__