This commit is contained in:
azw 2024-05-12 17:43:44 +08:00
parent fa8e824d8d
commit b96f92c193
5 changed files with 17 additions and 17 deletions

View File

@ -2,15 +2,9 @@ use std::sync::Arc;
use std::sync::Mutex; use std::sync::Mutex;
use crate::listener::WsListener; use crate::listener::WsListener;
use crate::upstream::UpStreamMgr; use crate::upstream::UpStreamMgr;
use crate::common::types::DownStreamPack;
use std::sync::OnceLock; use std::sync::OnceLock;
pub struct DownStreamPack {
pub holder: Option<Arc::<std::sync::Mutex::<Self>>>,
pub socket_handle: u16,
pub data: bytes::BytesMut,
pub entry: Arc::<std::sync::Mutex::<r9::ListHeadLock<Self>>>,
}
pub struct UserApp { pub struct UserApp {
net_msg_queue: Arc::<std::sync::Mutex::<r9::QueueLock<DownStreamPack>>>, net_msg_queue: Arc::<std::sync::Mutex::<r9::QueueLock<DownStreamPack>>>,
} }

View File

@ -0,0 +1,3 @@
pub mod types;
pub use types::*;

View File

@ -0,0 +1,8 @@
use std::sync::Arc;
pub struct DownStreamPack {
pub holder: Option<Arc::<std::sync::Mutex::<Self>>>,
pub socket_handle: u16,
pub data: bytes::BytesMut,
pub entry: Arc::<std::sync::Mutex::<r9::ListHeadLock<Self>>>,
}

View File

@ -1,7 +1,4 @@
use std::rc::{Rc, Weak};
use std::cell::RefCell;
use std::collections::HashMap; use std::collections::HashMap;
use r9_macro::SharedFromSelf;
use actix::{Actor, StreamHandler}; use actix::{Actor, StreamHandler};
use actix_web_actors::ws::{self, Message}; use actix_web_actors::ws::{self, Message};
use actix_web::{ use actix_web::{
@ -19,15 +16,13 @@ use std::thread::JoinHandle;
use std::time::Duration; use std::time::Duration;
use actix::prelude::*; use actix::prelude::*;
use bytes::{BufMut, BytesMut}; use bytes::{BufMut, BytesMut};
use actix_web::web::Bytes; use tokio::io::{Interest};
use futures::FutureExt;
use tokio::io::{AsyncReadExt, Interest};
use crate::app::UserApp; use crate::app::UserApp;
use crate::constant; use crate::constant;
use tokio::net::TcpStream; use tokio::net::TcpStream;
use tokio::runtime::Runtime; use tokio::runtime::Runtime;
use crate::app::user_app::DownStreamPack; use crate::common::types::DownStreamPack;
use tokio::io::{AsyncWriteExt, Ready}; use tokio::io::{AsyncWriteExt};
use std::sync::OnceLock; use std::sync::OnceLock;
use std::sync::atomic::{AtomicU16, Ordering}; use std::sync::atomic::{AtomicU16, Ordering};
@ -51,7 +46,6 @@ static WsListenerInstance: OnceLock<WsListener> = OnceLock::new();
#[rtype(result = "()")] #[rtype(result = "()")]
pub struct DownStreamMessage { pub struct DownStreamMessage {
data: actix_web::web::Bytes, data: actix_web::web::Bytes,
//data: BytesMut,
} }
/// Define HTTP actor /// Define HTTP actor
@ -245,7 +239,7 @@ async fn upstream_enter(stream_arc: Arc<Mutex<TcpStream>>, down_pack_queue: Arc<
entry: r9::ListHeadLock::<DownStreamPack>::new_node(Default::default()), entry: r9::ListHeadLock::<DownStreamPack>::new_node(Default::default()),
})); }));
node.lock().unwrap().holder = Some(node.clone()); node.lock().unwrap().holder = Some(node.clone());
node.lock().unwrap().entry = r9::ListHeadLock::< crate::app::user_app::DownStreamPack>::new_node(Arc::downgrade(&node)); node.lock().unwrap().entry = r9::ListHeadLock::<DownStreamPack>::new_node(Arc::downgrade(&node));
up_pack_queue.lock().unwrap().push(&node.lock().unwrap().entry); up_pack_queue.lock().unwrap().push(&node.lock().unwrap().entry);
} }
//a.do_send(msg); //a.do_send(msg);

View File

@ -6,6 +6,7 @@ mod upstream;
mod downstream; mod downstream;
mod ss; mod ss;
mod constant; mod constant;
mod common;
use crate::app::UserApp; use crate::app::UserApp;