dt_io_thread Struct Reference

IO thread that reads from the queues and writes them. More...

#include <dtstream.h>

Data Fields

int threadnum
 the thread number for the dtio thread, must be first to cast thread arg to int* in checklock code.
 
void * event_base
 event base, for event handling
 
struct dt_io_list_itemio_list
 list of queues that is registered to get written
 
struct dt_io_list_itemio_list_iter
 iterator point in the io_list, to pick from them in a round-robin fashion, instead of only from the first when busy. More...
 
ub_thread_type tid
 thread id, of the io thread
 
int started
 if the io processing has started
 
void * ssl_ctx
 ssl context for the io thread, for tls connections. More...
 
int tls_use_sni
 if SNI will be used for TLS connections.
 
int fd
 file descriptor that the thread writes to
 
void * event
 event structure that the thread uses
 
int event_added
 the event is added
 
int event_added_is_write
 event added is a write event
 
int check_nb_connect
 check for nonblocking connect errors on fd
 
void * ssl
 ssl for current connection, type SSL*
 
int ssl_handshake_done
 true if the handshake for SSL is done, 0 if not
 
int ssl_brief_read
 true if briefly the SSL wants a read event, 0 if not. More...
 
int ssl_brief_write
 true if SSL_read is waiting for a write event. More...
 
void * cur_msg
 the buffer that currently getting written, or NULL if no (partial) message written now
 
size_t cur_msg_len
 length of the current message
 
size_t cur_msg_done
 number of bytes written for the current message
 
size_t cur_msg_len_done
 number of bytes of the length that have been written, for the current message length that precedes the frame
 
lock_basic_type wakeup_timer_lock
 lock on wakeup_timer_enabled
 
int wakeup_timer_enabled
 if wakeup timer is enabled in some thread
 
int commandpipe [2]
 command pipe that stops the pipe if closed. More...
 
void * command_event
 the event to listen to the commandpipe
 
int want_to_exit
 the io thread wants to exit
 
void * stop_flush_event
 in stop flush, this is nonNULL and references the stop_ev
 
void * reconnect_timer
 the timer event for connection retries
 
int reconnect_is_added
 if the reconnect timer is added to the event base
 
int reconnect_timeout
 the current reconnection timeout, it is increased with exponential backoff, in msec
 
int upstream_is_unix
 If the log server is connected to over unix domain sockets, eg. More...
 
int upstream_is_tcp
 if the log server is connected to over TCP. More...
 
int upstream_is_tls
 if the log server is connected to over TLS. More...
 
int is_bidirectional
 Perform bidirectional Frame Streams handshake before sending messages.
 
int ready_frame_sent
 Set if the READY control frame has been sent.
 
int accept_frame_received
 Set if valid ACCEPT frame is received.
 
struct dt_frame_read_buf read_frame
 (partially) read frame
 
char * socket_path
 the file path for unix socket (or NULL)
 
char * ip_str
 the ip address and port number (or NULL)
 
char * tls_server_name
 is the TLS upstream authenticated by name, if nonNULL, we use the same cert bundle as used by other TLS streams.
 
int use_client_certs
 are client certificates in use
 
char * client_key_file
 client cert files: the .key file
 
char * client_cert_file
 client cert files: the .pem file
 

Detailed Description

IO thread that reads from the queues and writes them.

Field Documentation

◆ io_list_iter

struct dt_io_list_item* dt_io_thread::io_list_iter

iterator point in the io_list, to pick from them in a round-robin fashion, instead of only from the first when busy.

if NULL it means start at the start of the list.

Referenced by dt_io_thread_register_queue(), dt_io_thread_unregister_queue(), and dtio_find_msg().

◆ ssl_ctx

void* dt_io_thread::ssl_ctx

ssl context for the io thread, for tls connections.

type SSL_CTX*

Referenced by dt_io_thread_apply_cfg(), dt_io_thread_delete(), and dtio_setup_ssl().

◆ ssl_brief_read

int dt_io_thread::ssl_brief_read

true if briefly the SSL wants a read event, 0 if not.

This happens during negotiation, we then do not want to write, but wait for a read event.

Referenced by dtio_setup_ssl().

◆ ssl_brief_write

int dt_io_thread::ssl_brief_write

true if SSL_read is waiting for a write event.

Set back to 0 after single write event is handled.

◆ commandpipe

int dt_io_thread::commandpipe[2]

command pipe that stops the pipe if closed.

Used to quit the program. [0] is read, [1] is written to.

Referenced by dt_io_thread_start(), dt_io_thread_stop(), dtio_desetup(), dtio_setup_cmd(), and dtio_wakeup().

◆ upstream_is_unix

int dt_io_thread::upstream_is_unix

If the log server is connected to over unix domain sockets, eg.

a file is named that is created to log onto.

Referenced by dt_io_thread_apply_cfg(), and dtio_open_output().

◆ upstream_is_tcp

int dt_io_thread::upstream_is_tcp

if the log server is connected to over TCP.

The ip address and port are used

Referenced by dt_io_thread_apply_cfg(), and dtio_open_output().

◆ upstream_is_tls

int dt_io_thread::upstream_is_tls

if the log server is connected to over TLS.

ip address, port, and client certificates can be used for authentication.

Referenced by dt_io_thread_apply_cfg(), and dtio_open_output().


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