mirror of
https://github.com/EndPositive/slipstream.git
synced 2025-10-08 12:25:04 +00:00
Implement custom sockloop
- s.t. server only attempts sending data when there is an available request - s.t. dns requests are responded to in-order - ensures that rtt stays consistent - ensures that congestion control isn't tripped - ensures that dns resolver isn't tripped
This commit is contained in:
parent
3350be382c
commit
ee59a67164
10 changed files with 336 additions and 414 deletions
|
|
@ -19,7 +19,6 @@ extern "C" {
|
|||
#define SLIPSTREAM_QLOG_DIR "./qlog";
|
||||
|
||||
|
||||
|
||||
int picoquic_slipstream_client(int listen_port, char const* resolver_addresses_filename, const char* domain_name,
|
||||
const char* cc_algo_id);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,62 +0,0 @@
|
|||
#ifndef SLIPSTREAM_DNS_REQUEST_BUFFER
|
||||
#define SLIPSTREAM_DNS_REQUEST_BUFFER
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <picohash.h>
|
||||
#include "SPCDNS/src/dns.h"
|
||||
|
||||
#define GLOBAL_BUFFER_SIZE 32
|
||||
|
||||
typedef struct st_slipstream_cnxid_dns_request_buffer_t slipstream_cnxid_dns_request_buffer_t;
|
||||
|
||||
typedef struct st_element_t {
|
||||
dns_decoded_t dns_decoded[DNS_DECODEBUF_4K];
|
||||
struct sockaddr_storage peer_addr;
|
||||
struct sockaddr_storage local_addr;
|
||||
struct st_element_t* buffer_prev;
|
||||
struct st_element_t* buffer_next;
|
||||
struct st_element_t* cnxid_buffer_prev;
|
||||
struct st_element_t* cnxid_buffer_next;
|
||||
slipstream_cnxid_dns_request_buffer_t* cnxid_buffer;
|
||||
uint64_t created_time;
|
||||
int query_id;
|
||||
} slot_t;
|
||||
|
||||
typedef struct st_slipstream_cnxid_dns_request_buffer_t {
|
||||
slot_t* head;
|
||||
slot_t* tail;
|
||||
} slipstream_cnxid_dns_request_buffer_t;
|
||||
|
||||
typedef struct {
|
||||
slot_t slots[GLOBAL_BUFFER_SIZE];
|
||||
slot_t* head;
|
||||
slot_t* tail;
|
||||
slot_t* free;
|
||||
picohash_table* cnxid_to_cnxid_buffer;
|
||||
slipstream_cnxid_dns_request_buffer_t** cnxid_buffers;
|
||||
size_t cnxid_buffers_len;
|
||||
} slipstream_dns_request_buffer_t;
|
||||
|
||||
typedef struct st_cnxid_to_cnxid_buffer_t {
|
||||
picoquic_connection_id_t cnx_id;
|
||||
slipstream_cnxid_dns_request_buffer_t* cnxid_buffer;
|
||||
} cnxid_to_cnxid_buffer_t;
|
||||
|
||||
|
||||
void slipstream_dns_request_buffer_init(slipstream_dns_request_buffer_t* buffer);
|
||||
|
||||
slipstream_cnxid_dns_request_buffer_t* slipstream_dns_request_buffer_get_cnxid_buffer(
|
||||
slipstream_dns_request_buffer_t* buffer, picoquic_connection_id_t* initial_cnxid, bool create);
|
||||
|
||||
void slipstream_dns_request_buffer_free_slot(slipstream_dns_request_buffer_t* buffer, slot_t* slot);
|
||||
|
||||
slot_t* slipstream_dns_request_buffer_get_write_slot(slipstream_dns_request_buffer_t* buffer);
|
||||
|
||||
void slipstream_dns_request_buffer_commit_slot_to_cnxid_buffer(slipstream_dns_request_buffer_t* buffer,
|
||||
slipstream_cnxid_dns_request_buffer_t* cnxid_buffer,
|
||||
slot_t* slot);
|
||||
|
||||
slot_t* slipstream_dns_request_buffer_get_read_slot(slipstream_dns_request_buffer_t* buffer,
|
||||
slipstream_cnxid_dns_request_buffer_t* cnxid_buffer);
|
||||
|
||||
#endif //SLIPSTREAM_DNS_REQUEST_BUFFER
|
||||
17
include/slipstream_slot.h
Normal file
17
include/slipstream_slot.h
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
#ifndef SLIPSTREAM_SLOT
|
||||
#define SLIPSTREAM_SLOT
|
||||
|
||||
#include "SPCDNS/src/dns.h"
|
||||
#include "picoquic.h"
|
||||
|
||||
typedef struct st_slot_t {
|
||||
dns_decoded_t dns_decoded[DNS_DECODEBUF_4K];
|
||||
dns_rcode_t error;
|
||||
struct sockaddr_storage peer_addr;
|
||||
struct sockaddr_storage local_addr;
|
||||
picoquic_cnx_t* cnx;
|
||||
uint64_t created_time;
|
||||
int query_id;
|
||||
} slot_t;
|
||||
|
||||
#endif // SLIPSTREAM_SLOT
|
||||
8
include/slipstream_sockloop.h
Normal file
8
include/slipstream_sockloop.h
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#ifndef SLIPSTREAM_SOCKLOOP_H
|
||||
#define SLIPSTREAM_SOCKLOOP_H
|
||||
|
||||
#include "picoquic_packet_loop.h"
|
||||
|
||||
void* slipstream_packet_loop(picoquic_network_thread_ctx_t* thread_ctx);
|
||||
|
||||
#endif //SLIPSTREAM_SOCKLOOP_H
|
||||
Loading…
Add table
Add a link
Reference in a new issue