public sbnd::socket_pipeline_client
websocket_pipeline_client(websocket_pipeline_client && rhs)
websocket_pipeline_client(const websocket_pipeline_client &)
operator=(websocket_pipeline_client &&) -> websocket_pipeline_client &
operator=(const websocket_pipeline_client &) -> websocket_pipeline_client &
~websocket_pipeline_client()
websocket_pipeline_client()
websocket_pipeline_client(sys::socket && socket)explicit
write_kernel(const sbn::kernel * k) -> voidvirtual
handle(const sys::epoll_event & event) -> voidvirtual
public sbn::connection
using counter_type = id_type
using id_type = typename interface_address_type::rep_type
using interface_socket_address_type = sys::interface_socket_address< ip_address >
using interface_address_type = sys::interface_address< ip_address >
using ip_address = sys::ipv4_address
parent() const -> socket_pipeline *
remove(const connection_ptr & self) -> voidvirtual
add(const connection_ptr & self) -> voidvirtual
handle(const sys::epoll_event & ev) -> voidvirtual
protocol() const -> protocols
socket() -> sys::socket &
socket() const -> const sys::socket &
fd() const -> sys::fd_type
interface_socket_address() const -> interface_socket_address_type
interface_address() const -> const interface_address_type
operator=(socket_pipeline_server &&) -> socket_pipeline_server &
socket_pipeline_server(socket_pipeline_server &&)
operator=(const socket_pipeline_server &) -> socket_pipeline_server &
socket_pipeline_server(const socket_pipeline_server &)
~socket_pipeline_server()
socket_pipeline_server()
socket_pipeline_server(const interface_socket_address_type & ifaddr, protocols protocol = protocols::tcp)explicit
socket_pipeline_server(const interface_address_type & ifaddr, sys::port_type port, protocols protocol)explicit
public sbn::basic_socket_pipeline
using counter_type = uint32_t
using interface_address = sys::interface_address< ip_address >
using ip_address = sys::ipv4_address
route(bool rhs) -> void
route() const -> bool
scheduler() -> socket_pipeline_scheduler &
scheduler() const -> const socket_pipeline_scheduler &
remove_server(const interface_address & interface_address) -> void
clients() const -> const client_table &
servers() const -> const server_array &
websocket_port(const sys::port_type & rhs) -> void
websocket_port() const -> const sys::port_type &
tcp_port(const sys::port_type & rhs) -> void
tcp_port() const -> const sys::port_type &
forward(sbn::kernel_ptr && hdr) -> voidvirtual
add(server_ptr server) -> void
add_server(const sys::socket_address & rhs, ip_address netmask, socket_pipeline_server::protocols protocol = socket_pipeline_server::protocols::tcp) -> void
add_server(const interface_address & rhs) -> void
update_clients(const hierarchy_type & hierarchy) -> void
stop_client(const sys::socket_address & addr) -> void
add_client(const sys::socket_address & addr, const hierarchy_type & hierarchy) -> void
operator=(socket_pipeline &&) -> socket_pipeline &
operator=(const socket_pipeline &) -> socket_pipeline &
socket_pipeline(socket_pipeline &&)
socket_pipeline(const socket_pipeline &)
~socket_pipeline()
socket_pipeline()
socket_pipeline(const properties & p)explicit
using resource_array = sbn::resources::Bindings
using file_system_ptr = std::shared_ptr< file_system >
using counter_array = std::array< counter_type, 2 >
using counter_type = uint32_t
using server_array = std::vector< server_ptr >
using server_ptr = std::shared_ptr< socket_pipeline_server >
using client_iterator = typename client_table::const_iterator
using client_table = std::unordered_map< sys::socket_address, client_ptr >
using client_ptr = std::shared_ptr< socket_pipeline_client >
template <class ... Args>
log(const Args &... args) const -> void
rebase_counters(const client_table & clients) -> void
add_file_system(file_system_ptr ptr) -> void
local_resources(const resource_array & rhs) -> void
local_resources() const -> const resource_array &
local() const -> bool
local(bool rhs) -> void
schedule(sbn::kernel * k, const client_table & clients, const server_array & servers) -> client_iterator
public sbn::connection
using hierarchy_node_array = std::vector< hierarchy_node >
using resource_array = sbn::resources::Bindings
using kernel_queue = std::deque< sbn::kernel_ptr >
using counter_array = std::array< counter_type, 2 >
using counter_type = socket_pipeline::counter_type
write(std::ostream & out) const -> voidvirtual
relative_load() const -> sbn::modular_weight_array
The first element is the number of kernels with the maximum weight sent to the client divided by the number of cluster nodes. Each kernel uses all threads of the client. The second element is the number of kernels sent to the client divided by the number of threads "behind" the client.
num_nodes_behind() const -> counter_type
num_threads_behind() const -> counter_type
The number of threads "behind" this node in the hierarchy.
receive_foreign_kernel(sbn::kernel_ptr && k) -> voidvirtual
match(sbn::kernel::resource_expression & node_filter) -> bool
update_counters() -> void
nodes_behind(const hierarchy_node_array & rhs) -> void
nodes_behind() const -> const hierarchy_node_array &
route(bool rhs) -> void
route() const -> bool
parent() const -> socket_pipeline *
activate(const connection_ptr & self) -> voidvirtual
deactivate(const connection_ptr & self) -> voidvirtual
remove(const connection_ptr &) -> voidvirtual
add(const connection_ptr & self) -> voidvirtual
socket() -> sys::socket &
socket() const -> const sys::socket &
flush() -> voidvirtual
handle(const sys::epoll_event & event) -> voidvirtual
recover() -> void
forward(sbn::kernel_ptr k) -> sbn::kernel_ptr
socket_pipeline_client(socket_pipeline_client && rhs)
socket_pipeline_client(const socket_pipeline_client &)
operator=(socket_pipeline_client &&) -> socket_pipeline_client &
operator=(const socket_pipeline_client &) -> socket_pipeline_client &
socket_pipeline_client()
~socket_pipeline_client()virtual
socket_pipeline_client(sys::socket && socket)explicit