mirror of
https://github.com/MeexReay/bRAC.git
synced 2025-05-06 05:28:02 +03:00
ask name fix and some refactor
This commit is contained in:
parent
5c1f8f0cae
commit
94680c95e1
@ -1,11 +1,13 @@
|
||||
use std::sync::{atomic::{AtomicUsize, Ordering}, mpsc::Sender, Arc, RwLock};
|
||||
|
||||
use rand::random;
|
||||
|
||||
use super::config::Config;
|
||||
|
||||
pub struct Context {
|
||||
pub registered: Arc<RwLock<Option<String>>>,
|
||||
pub config: Arc<RwLock<Config>>,
|
||||
pub sender: Arc<RwLock<Option<Arc<Sender<String>>>>>,
|
||||
pub registered: RwLock<Option<String>>,
|
||||
pub config: RwLock<Config>,
|
||||
pub sender: RwLock<Option<Arc<Sender<String>>>>,
|
||||
pub messages: RwLock<Vec<String>>,
|
||||
pub packet_size: AtomicUsize,
|
||||
pub name: String
|
||||
@ -14,12 +16,12 @@ pub struct Context {
|
||||
impl Context {
|
||||
pub fn new(config: &Config) -> Context {
|
||||
Context {
|
||||
registered: Arc::new(RwLock::new(None)),
|
||||
config: Arc::new(RwLock::new(config.clone())),
|
||||
sender: Arc::new(RwLock::new(None)),
|
||||
registered: RwLock::new(None),
|
||||
config: RwLock::new(config.clone()),
|
||||
sender: RwLock::new(None),
|
||||
messages: RwLock::new(Vec::new()),
|
||||
packet_size: AtomicUsize::default(),
|
||||
name: config.name.clone().expect("not implemented"), // TODO: ask for name
|
||||
name: config.name.clone().unwrap_or_else(|| format!("Anon#{:X}", random::<u16>())),
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,7 +37,7 @@ impl Context {
|
||||
self.messages.read().unwrap().clone()
|
||||
}
|
||||
|
||||
pub fn update(&self, max_length: usize, messages: Vec<String>, packet_size: usize) {
|
||||
pub fn put_messages_packet(&self, max_length: usize, messages: Vec<String>, packet_size: usize) {
|
||||
self.packet_size.store(packet_size, Ordering::SeqCst);
|
||||
let mut messages = messages;
|
||||
if messages.len() > max_length {
|
||||
@ -44,12 +46,12 @@ impl Context {
|
||||
*self.messages.write().unwrap() = messages;
|
||||
}
|
||||
|
||||
pub fn append_and_store(&self, max_length: usize, messages: Vec<String>, packet_size: usize) {
|
||||
pub fn add_messages_packet(&self, max_length: usize, messages: Vec<String>, packet_size: usize) {
|
||||
self.packet_size.store(packet_size, Ordering::SeqCst);
|
||||
self.append(max_length, messages);
|
||||
self.add_message(max_length, messages);
|
||||
}
|
||||
|
||||
pub fn append(&self, max_length: usize, messages: Vec<String>) {
|
||||
pub fn add_message(&self, max_length: usize, messages: Vec<String>) {
|
||||
self.messages.write().unwrap().append(&mut messages.clone());
|
||||
if self.messages.read().unwrap().len() > max_length {
|
||||
self.messages.write().unwrap().drain(max_length..);
|
||||
|
@ -35,7 +35,7 @@ pub fn add_chat_message(ctx: Arc<Context>, message: String) {
|
||||
}
|
||||
|
||||
pub fn print_message(ctx: Arc<Context>, message: String) -> Result<(), Box<dyn Error>> {
|
||||
ctx.append(ctx.config(|o| o.max_messages), vec![message.clone()]);
|
||||
ctx.add_message(ctx.config(|o| o.max_messages), vec![message.clone()]);
|
||||
add_chat_message(ctx.clone(), message);
|
||||
Ok(())
|
||||
}
|
||||
@ -50,12 +50,12 @@ pub fn recv_tick(ctx: Arc<Context>) -> Result<(), Box<dyn Error>> {
|
||||
) {
|
||||
Ok(Some((messages, size))) => {
|
||||
if ctx.config(|o| o.chunked_enabled) {
|
||||
ctx.append_and_store(ctx.config(|o| o.max_messages), messages.clone(), size);
|
||||
ctx.add_messages_packet(ctx.config(|o| o.max_messages), messages.clone(), size);
|
||||
for msg in messages {
|
||||
add_chat_message(ctx.clone(), msg.clone());
|
||||
}
|
||||
} else {
|
||||
ctx.update(ctx.config(|o| o.max_messages), messages.clone(), size);
|
||||
ctx.put_messages_packet(ctx.config(|o| o.max_messages), messages.clone(), size);
|
||||
for msg in messages {
|
||||
add_chat_message(ctx.clone(), msg.clone());
|
||||
}
|
||||
@ -63,7 +63,7 @@ pub fn recv_tick(ctx: Arc<Context>) -> Result<(), Box<dyn Error>> {
|
||||
},
|
||||
Err(e) => {
|
||||
let msg = format!("Read messages error: {}", e.to_string()).to_string();
|
||||
ctx.append(ctx.config(|o| o.max_messages), vec![msg.clone()]);
|
||||
ctx.add_message(ctx.config(|o| o.max_messages), vec![msg.clone()]);
|
||||
add_chat_message(ctx.clone(), msg.clone());
|
||||
}
|
||||
_ => {}
|
||||
|
Loading…
Reference in New Issue
Block a user