ChatGPT Codex 5.2 xhigh refactored > 45min
This commit is contained in:
@@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user