dpp::socket_engine_base
socketengine.h
class cluster * class cluster* dpp::socket_engine_base::owner owner dpp::socket_engine_base::owner {nullptr}

Owning cluster.

socket_container socket_container dpp::socket_engine_base::fds fds dpp::socket_engine_base::fds

File descriptors, and their states.

std::shared_mutex std::shared_mutex dpp::socket_engine_base::fds_mutex fds_mutex dpp::socket_engine_base::fds_mutex

Mutex for fds.

socket_stats socket_stats dpp::socket_engine_base::stats stats dpp::socket_engine_base::stats {}

Socket engine statistics.

dpp::socket_engine_base::socket_engine_base
(class cluster *creator)
socket_engine_base
dpp::socket_engine_base::socket_engine_base
class cluster * creator

Default constructor.

creator

Owning cluster

dpp::socket_engine_base::socket_engine_base
(const socket_engine_base &)=delete
socket_engine_base
dpp::socket_engine_base::socket_engine_base
const socket_engine_base &

Non-copyable.

dpp::socket_engine_base::socket_engine_base
(socket_engine_base &&)=delete
socket_engine_base
dpp::socket_engine_base::socket_engine_base
socket_engine_base &&

Non-copyable.

virtual dpp::socket_engine_base::~socket_engine_base
()
~socket_engine_base
dpp::socket_engine_base::~socket_engine_base

Default destructor.

bool bool dpp::socket_engine_base::delete_socket (dpp::socket fd) delete_socket dpp::socket_engine_base::delete_socket dpp::socket fd

Delete a socket from the socket engine.

This will not remove the socket immediately. It will set the WANT_DELETION flag causing it to be removed as soon as is safe to do so (once all events associated with it are completed).

e

File descriptor

true if socket was queued for deletion

const socket_stats & const socket_stats & dpp::socket_engine_base::get_stats () const get_stats dpp::socket_engine_base::get_stats

Get statistics for socket engine.

socket stats

void void dpp::socket_engine_base::inplace_modify_fd (dpp::socket fd, uint8_t extra_flags) inplace_modify_fd dpp::socket_engine_base::inplace_modify_fd dpp::socket fd uint8_t extra_flags

Merge new flags in with the given file descriptor.

fd

file descriptor

extra_flags

extra flags to add

socket_engine_base & socket_engine_base & dpp::socket_engine_base::operator= (const socket_engine_base &)=delete operator= dpp::socket_engine_base::operator= const socket_engine_base &

Non-movable.

socket_engine_base & socket_engine_base & dpp::socket_engine_base::operator= (socket_engine_base &&)=delete operator= dpp::socket_engine_base::operator= socket_engine_base &&

Non-movable.

void virtual void dpp::socket_engine_base::process_events ()=0 process_events dpp::socket_engine_base::process_events

Should be called repeatedly in a loop. Will run for a maximum of 1 second.

void void dpp::socket_engine_base::prune () prune dpp::socket_engine_base::prune

Iterate through the list of sockets and remove any with WANT_DELETION set. This will also call implementation-specific remove_socket() on each entry to be removed.

bool virtual bool dpp::socket_engine_base::register_socket (const socket_events &e) register_socket dpp::socket_engine_base::register_socket const socket_events & e

Register a new socket with the socket engine.

e

Socket events

true if socket was added

bool virtual bool dpp::socket_engine_base::update_socket (const socket_events &e) update_socket dpp::socket_engine_base::update_socket const socket_events & e

Update an existing socket in the socket engine.

e

Socket events

true if socket was updated

socket_events * socket_events * dpp::socket_engine_base::get_fd (dpp::socket fd) get_fd dpp::socket_engine_base::get_fd dpp::socket fd

Find a file descriptors socket events.

fd

file descriptor

file descriptor or nullptr if doesn't exist

bool virtual bool dpp::socket_engine_base::remove_socket (dpp::socket fd) remove_socket dpp::socket_engine_base::remove_socket dpp::socket fd

Called by the prune() function to remove sockets when safe to do so. This is normally at the end or before an iteration of the event loop.

fd

File descriptor to remove

This is the base class for socket engines. The actual implementation is OS specific and the correct implementation is detected by CMake. It is then compiled specifically into DPP so only one implementation can exist in the implementation. All implementations should behave identically to the user, abstracting out implementation-specific behaviours (e.g. difference between edge and level triggered event mechanisms etc).

K
T
bool
cache_policy_setting_t
double
dpp::cache_policy_t
channel_policy
emoji_policy
guild_policy
role_policy
user_policy
dpp::cluster
token
last_identify
cluster_id
intents
maxclusters
numshards
rest_ping
me
cache_policy
ws_mode
terminating
request_timeout
socketengine
on_voice_channel_effect_send
on_voice_state_update
on_voice_client_platform
on_voice_client_disconnect
on_voice_client_speaking
on_log
on_socket_close
on_guild_join_request_delete
on_interaction_create
on_slashcommand
on_button_click
on_autocomplete
on_select_click
on_message_context_menu
on_user_context_menu
on_form_submit
on_guild_delete
on_channel_delete
on_channel_update
on_ready
on_message_delete
on_guild_member_remove
on_resumed
on_guild_role_create
on_typing_start
on_message_reaction_add
on_guild_members_chunk
on_message_reaction_remove
on_guild_create
on_channel_create
on_message_reaction_remove_emoji
on_message_delete_bulk
on_guild_role_update
on_guild_role_delete
on_channel_pins_update
on_message_reaction_remove_all
on_voice_server_update
on_guild_emojis_update
on_guild_stickers_update
on_presence_update
on_webhooks_update
on_automod_rule_create
on_automod_rule_update
on_automod_rule_delete
on_automod_rule_execute
on_guild_member_add
on_invite_delete
on_guild_update
on_guild_integrations_update
on_guild_member_update
on_invite_create
on_message_update
on_user_update
on_message_create
on_message_poll_vote_add
on_message_poll_vote_remove
on_guild_audit_log_entry_create
on_guild_ban_add
on_guild_ban_remove
on_integration_create
on_integration_update
on_integration_delete
on_thread_create
on_thread_update
on_thread_delete
on_thread_list_sync
on_thread_member_update
on_thread_members_update
on_guild_scheduled_event_create
on_guild_scheduled_event_update
on_guild_scheduled_event_delete
on_guild_scheduled_event_user_add
on_guild_scheduled_event_user_remove
on_voice_buffer_send
on_voice_ready
on_voice_receive
on_voice_receive_combined
on_voice_track_marker
on_stage_instance_create
on_stage_instance_update
on_stage_instance_delete
on_entitlement_create
on_entitlement_update
on_entitlement_delete
dpp::event_router_t< T >
dpp::event_router_t< dpp::autocomplete_t >
< dpp::autocomplete_t >
dpp::event_router_t< dpp::automod_rule_create_t >
< dpp::automod_rule_create_t >
dpp::event_router_t< dpp::automod_rule_delete_t >
< dpp::automod_rule_delete_t >
dpp::event_router_t< dpp::automod_rule_execute_t >
< dpp::automod_rule_execute_t >
dpp::event_router_t< dpp::automod_rule_update_t >
< dpp::automod_rule_update_t >
dpp::event_router_t< dpp::button_click_t >
< dpp::button_click_t >
dpp::event_router_t< dpp::channel_create_t >
< dpp::channel_create_t >
dpp::event_router_t< dpp::channel_delete_t >
< dpp::channel_delete_t >
dpp::event_router_t< dpp::channel_pins_update_t >
< dpp::channel_pins_update_t >
dpp::event_router_t< dpp::channel_update_t >
< dpp::channel_update_t >
dpp::event_router_t< dpp::entitlement_create_t >
< dpp::entitlement_create_t >
dpp::event_router_t< dpp::entitlement_delete_t >
< dpp::entitlement_delete_t >
dpp::event_router_t< dpp::entitlement_update_t >
< dpp::entitlement_update_t >
dpp::event_router_t< dpp::form_submit_t >
< dpp::form_submit_t >
dpp::event_router_t< dpp::guild_audit_log_entry_create_t >
< dpp::guild_audit_log_entry_create_t >
dpp::event_router_t< dpp::guild_ban_add_t >
< dpp::guild_ban_add_t >
dpp::event_router_t< dpp::guild_ban_remove_t >
< dpp::guild_ban_remove_t >
dpp::event_router_t< dpp::guild_create_t >
< dpp::guild_create_t >
dpp::event_router_t< dpp::guild_delete_t >
< dpp::guild_delete_t >
dpp::event_router_t< dpp::guild_emojis_update_t >
< dpp::guild_emojis_update_t >
dpp::event_router_t< dpp::guild_integrations_update_t >
< dpp::guild_integrations_update_t >
dpp::event_router_t< dpp::guild_join_request_delete_t >
< dpp::guild_join_request_delete_t >
dpp::event_router_t< dpp::guild_member_add_t >
< dpp::guild_member_add_t >
dpp::event_router_t< dpp::guild_member_remove_t >
< dpp::guild_member_remove_t >
dpp::event_router_t< dpp::guild_member_update_t >
< dpp::guild_member_update_t >
dpp::event_router_t< dpp::guild_members_chunk_t >
< dpp::guild_members_chunk_t >
dpp::event_router_t< dpp::guild_role_create_t >
< dpp::guild_role_create_t >
dpp::event_router_t< dpp::guild_role_delete_t >
< dpp::guild_role_delete_t >
dpp::event_router_t< dpp::guild_role_update_t >
< dpp::guild_role_update_t >
dpp::event_router_t< dpp::guild_scheduled_event_create_t >
< dpp::guild_scheduled_event_create_t >
dpp::event_router_t< dpp::guild_scheduled_event_delete_t >
< dpp::guild_scheduled_event_delete_t >
dpp::event_router_t< dpp::guild_scheduled_event_update_t >
< dpp::guild_scheduled_event_update_t >
dpp::event_router_t< dpp::guild_scheduled_event_user_add_t >
< dpp::guild_scheduled_event_user_add_t >
dpp::event_router_t< dpp::guild_scheduled_event_user_remove_t >
< dpp::guild_scheduled_event_user_remove_t >
dpp::event_router_t< dpp::guild_stickers_update_t >
< dpp::guild_stickers_update_t >
dpp::event_router_t< dpp::guild_update_t >
< dpp::guild_update_t >
dpp::event_router_t< dpp::integration_create_t >
< dpp::integration_create_t >
dpp::event_router_t< dpp::integration_delete_t >
< dpp::integration_delete_t >
dpp::event_router_t< dpp::integration_update_t >
< dpp::integration_update_t >
dpp::event_router_t< dpp::interaction_create_t >
< dpp::interaction_create_t >
dpp::event_router_t< dpp::invite_create_t >
< dpp::invite_create_t >
dpp::event_router_t< dpp::invite_delete_t >
< dpp::invite_delete_t >
dpp::event_router_t< dpp::log_t >
< dpp::log_t >
dpp::event_router_t< dpp::message_context_menu_t >
< dpp::message_context_menu_t >
dpp::event_router_t< dpp::message_create_t >
< dpp::message_create_t >
dpp::event_router_t< dpp::message_delete_bulk_t >
< dpp::message_delete_bulk_t >
dpp::event_router_t< dpp::message_delete_t >
< dpp::message_delete_t >
dpp::event_router_t< dpp::message_poll_vote_add_t >
< dpp::message_poll_vote_add_t >
dpp::event_router_t< dpp::message_poll_vote_remove_t >
< dpp::message_poll_vote_remove_t >
dpp::event_router_t< dpp::message_reaction_add_t >
< dpp::message_reaction_add_t >
dpp::event_router_t< dpp::message_reaction_remove_all_t >
< dpp::message_reaction_remove_all_t >
dpp::event_router_t< dpp::message_reaction_remove_emoji_t >
< dpp::message_reaction_remove_emoji_t >
dpp::event_router_t< dpp::message_reaction_remove_t >
< dpp::message_reaction_remove_t >
dpp::event_router_t< dpp::message_update_t >
< dpp::message_update_t >
dpp::event_router_t< dpp::presence_update_t >
< dpp::presence_update_t >
dpp::event_router_t< dpp::ready_t >
< dpp::ready_t >
dpp::event_router_t< dpp::resumed_t >
< dpp::resumed_t >
dpp::event_router_t< dpp::select_click_t >
< dpp::select_click_t >
dpp::event_router_t< dpp::slashcommand_t >
< dpp::slashcommand_t >
dpp::event_router_t< dpp::socket_close_t >
< dpp::socket_close_t >
dpp::event_router_t< dpp::stage_instance_create_t >
< dpp::stage_instance_create_t >
dpp::event_router_t< dpp::stage_instance_delete_t >
< dpp::stage_instance_delete_t >
dpp::event_router_t< dpp::stage_instance_update_t >
< dpp::stage_instance_update_t >
dpp::event_router_t< dpp::thread_create_t >
< dpp::thread_create_t >
dpp::event_router_t< dpp::thread_delete_t >
< dpp::thread_delete_t >
dpp::event_router_t< dpp::thread_list_sync_t >
< dpp::thread_list_sync_t >
dpp::event_router_t< dpp::thread_member_update_t >
< dpp::thread_member_update_t >
dpp::event_router_t< dpp::thread_members_update_t >
< dpp::thread_members_update_t >
dpp::event_router_t< dpp::thread_update_t >
< dpp::thread_update_t >
dpp::event_router_t< dpp::typing_start_t >
< dpp::typing_start_t >
dpp::event_router_t< dpp::user_context_menu_t >
< dpp::user_context_menu_t >
dpp::event_router_t< dpp::user_update_t >
< dpp::user_update_t >
dpp::event_router_t< dpp::voice_buffer_send_t >
< dpp::voice_buffer_send_t >
dpp::event_router_t< dpp::voice_channel_effect_send_t >
< dpp::voice_channel_effect_send_t >
dpp::event_router_t< dpp::voice_client_disconnect_t >
< dpp::voice_client_disconnect_t >
dpp::event_router_t< dpp::voice_client_platform_t >
< dpp::voice_client_platform_t >
dpp::event_router_t< dpp::voice_client_speaking_t >
< dpp::voice_client_speaking_t >
dpp::event_router_t< dpp::voice_ready_t >
< dpp::voice_ready_t >
dpp::event_router_t< dpp::voice_receive_t >
< dpp::voice_receive_t >
dpp::event_router_t< dpp::voice_server_update_t >
< dpp::voice_server_update_t >
dpp::event_router_t< dpp::voice_state_update_t >
< dpp::voice_state_update_t >
dpp::event_router_t< dpp::voice_track_marker_t >
< dpp::voice_track_marker_t >
dpp::event_router_t< dpp::webhooks_update_t >
< dpp::webhooks_update_t >
dpp::json_interface< T >
dpp::json_interface< user >
< user >
dpp::managed
id
dpp::snowflake
value
dpp::socket_engine_base
owner
fds_mutex
fds
stats
dpp::socket_stats
active_fds
deletions
errors
iterations
reads
updates
writes
engine_type
dpp::user
global_name
username
avatar
avatar_decoration
primary_guild
flags
discriminator
refcount
dpp::utility::iconhash
first
second
dpp::utility::primaryguild
id
enabled
tag
badge
atomic_bool
std::basic_string< Char >
std::basic_string_view< Char >
std::shared_mutex
std::string
std::string_view
std::unique_ptr< T >
ptr
std::unique_ptr< dpp::socket_engine_base >
ptr
< dpp::socket_engine_base >
std::unordered_map< K, T >
keys
elements
std::unordered_map< dpp::socket, std::unique_ptr< socket_events > >
< dpp::socket, std::unique_ptr< socket_events > >
time_t
uint16_t
uint32_t
uint64_t
uint8_t
websocket_protocol_t
- dpp::socket_engine_base
  delete_socket
- dpp::socket_engine_base
  fds
- dpp::socket_engine_base
  fds_mutex
- dpp::socket_engine_base
  get_fd
- dpp::socket_engine_base
  get_stats
- dpp::socket_engine_base
  inplace_modify_fd
- dpp::socket_engine_base
  operator=
- dpp::socket_engine_base
  operator=
- dpp::socket_engine_base
  owner
- dpp::socket_engine_base
  process_events
- dpp::socket_engine_base
  prune
- dpp::socket_engine_base
  register_socket
- dpp::socket_engine_base
  remove_socket
- dpp::socket_engine_base
  socket_engine_base
- dpp::socket_engine_base
  socket_engine_base
- dpp::socket_engine_base
  socket_engine_base
- dpp::socket_engine_base
  stats
- dpp::socket_engine_base
  update_socket
- dpp::socket_engine_base
  ~socket_engine_base