Module router

Module router 

Source
Expand description

Backend server selection and load balancing

This module handles selecting backend servers using round-robin with simple load tracking for monitoring.

§Overview

The BackendSelector provides thread-safe backend selection for routing NNTP commands across multiple backend servers. It uses a lock-free round-robin algorithm with atomic operations for concurrent access.

§Usage

use nntp_proxy::router::BackendSelector;
use nntp_proxy::types::{BackendId, ClientId};

let mut selector = BackendSelector::new();
selector.add_backend(BackendId::from_index(0), "server1".to_string(), provider);

// Route a command
let client_id = ClientId::new();
let backend_id = selector.route_command_sync(client_id, "LIST").unwrap();

// After command completes
selector.complete_command_sync(backend_id);

Structs§

BackendSelector
Selects backend servers using round-robin with load tracking