ChatGPT Codex 5.2 xhigh refactored > 45min

This commit is contained in:
2026-01-13 18:59:12 +01:00
parent f76d59265c
commit b60dcef471
15 changed files with 1672 additions and 367 deletions
+10 -2
View File
@@ -9,17 +9,19 @@ use std::{
use lanspread_db::db::GameDB;
use tokio::{sync::RwLock, task::JoinHandle};
use crate::{PeerEvent, peer_db::PeerGameDB};
use crate::{PeerEvent, library::LocalLibraryState, peer_db::PeerGameDB};
/// Main context for the peer system.
#[derive(Clone)]
pub struct Ctx {
pub game_dir: Arc<RwLock<Option<String>>>,
pub local_game_db: Arc<RwLock<Option<GameDB>>>,
pub local_library: Arc<RwLock<LocalLibraryState>>,
pub peer_game_db: Arc<RwLock<PeerGameDB>>,
pub local_peer_addr: Arc<RwLock<Option<SocketAddr>>>,
pub downloading_games: Arc<RwLock<HashSet<String>>>,
pub active_downloads: Arc<RwLock<HashMap<String, JoinHandle<()>>>>,
pub peer_id: Arc<String>,
}
/// Context for peer connection handling.
@@ -27,9 +29,11 @@ pub struct Ctx {
pub struct PeerCtx {
pub game_dir: Arc<RwLock<Option<String>>>,
pub local_game_db: Arc<RwLock<Option<GameDB>>>,
pub local_library: Arc<RwLock<LocalLibraryState>>,
pub local_peer_addr: Arc<RwLock<Option<SocketAddr>>>,
pub downloading_games: Arc<RwLock<HashSet<String>>>,
pub peer_game_db: Arc<RwLock<PeerGameDB>>,
pub peer_id: Arc<String>,
pub tx_notify_ui: tokio::sync::mpsc::UnboundedSender<PeerEvent>,
}
@@ -46,14 +50,16 @@ impl std::fmt::Debug for PeerCtx {
impl Ctx {
/// Creates a new context with the given peer game database.
pub fn new(peer_game_db: Arc<RwLock<PeerGameDB>>) -> Self {
pub fn new(peer_game_db: Arc<RwLock<PeerGameDB>>, peer_id: String) -> Self {
Self {
game_dir: Arc::new(RwLock::new(None)),
local_game_db: Arc::new(RwLock::new(None)),
local_library: Arc::new(RwLock::new(LocalLibraryState::empty())),
peer_game_db,
local_peer_addr: Arc::new(RwLock::new(None)),
downloading_games: Arc::new(RwLock::new(HashSet::new())),
active_downloads: Arc::new(RwLock::new(HashMap::new())),
peer_id: Arc::new(peer_id),
}
}
@@ -65,9 +71,11 @@ impl Ctx {
PeerCtx {
game_dir: self.game_dir.clone(),
local_game_db: self.local_game_db.clone(),
local_library: self.local_library.clone(),
local_peer_addr: self.local_peer_addr.clone(),
downloading_games: self.downloading_games.clone(),
peer_game_db: self.peer_game_db.clone(),
peer_id: self.peer_id.clone(),
tx_notify_ui,
}
}