1
This commit is contained in:
parent
13204031ca
commit
e7ef4d9050
@ -19,13 +19,33 @@ pub struct UpStream {
|
||||
pub up_pack_queue: Arc<Mutex::<r9::QueueLock<UpStreamPack>>>,
|
||||
}
|
||||
|
||||
async fn upstream_enter(stream_arc: Arc<tokio::sync::Mutex<TcpStream>>, down_pack_queue: Arc<std::sync::Mutex::<r9::QueueLock<DownStreamPack>>>,
|
||||
up_pack_queue: Arc<std::sync::Mutex::<r9::QueueLock<UpStreamPack>>>) {
|
||||
let on_read = |len: usize,
|
||||
async fn on_write(stream: &mut TcpStream, down_pack_queue: &Arc<std::sync::Mutex::<r9::QueueLock<DownStreamPack>>>) {
|
||||
let mut data = bytes::BytesMut::new();
|
||||
{
|
||||
down_pack_queue.lock().unwrap().fetch();
|
||||
//down_pack_queue.get_mut().fetch();
|
||||
let work_list = down_pack_queue.lock().unwrap().work_list.lock().unwrap().clone();
|
||||
//let work_list = down_pack_queue.get_mut().work_list.lock().unwrap().clone();
|
||||
while !work_list.lock().unwrap().empty() {
|
||||
let node = &work_list.lock().unwrap().first_entry();
|
||||
node.upgrade().unwrap().lock().unwrap().entry.lock().unwrap().del_init();
|
||||
data = node.upgrade().unwrap().lock().unwrap().data.clone();
|
||||
break;
|
||||
//stream.write_all(node.upgrade().unwrap().borrow().data.as_ref()).await;
|
||||
//stream.write_all(data.as_ref()).await;
|
||||
}
|
||||
}
|
||||
if data.len() > 0 {
|
||||
println!("write_all2 len:{0}", data.len());
|
||||
stream.write_all(data.as_ref()).await;
|
||||
}
|
||||
}
|
||||
|
||||
fn on_read(len: usize,
|
||||
recv_buf_len: &mut usize,
|
||||
recv_buf: &mut BytesMut,
|
||||
data: &Vec<u8>,
|
||||
up_pack_queue: &Arc<std::sync::Mutex::<r9::QueueLock<UpStreamPack>>>| {
|
||||
up_pack_queue: &Arc<std::sync::Mutex::<r9::QueueLock<UpStreamPack>>>) {
|
||||
println!("read {0} bytes recv_buf_len:{1}",len, recv_buf_len);
|
||||
for i in 0..len {
|
||||
recv_buf[*recv_buf_len + i] = data[i];
|
||||
@ -76,7 +96,9 @@ async fn upstream_enter(stream_arc: Arc<tokio::sync::Mutex<TcpStream>>, down_pac
|
||||
}
|
||||
*recv_buf_len -= (pack_len + 16) as usize;
|
||||
}
|
||||
};
|
||||
}
|
||||
async fn upstream_enter(stream_arc: Arc<tokio::sync::Mutex<TcpStream>>, down_pack_queue: Arc<std::sync::Mutex::<r9::QueueLock<DownStreamPack>>>,
|
||||
up_pack_queue: Arc<std::sync::Mutex::<r9::QueueLock<UpStreamPack>>>) {
|
||||
tokio::spawn(async move {
|
||||
println!("upstream_enter2");
|
||||
let mut recv_buf = BytesMut::with_capacity(1024 * 64 * 3);
|
||||
@ -115,25 +137,7 @@ async fn upstream_enter(stream_arc: Arc<tokio::sync::Mutex<TcpStream>>, down_pac
|
||||
|
||||
{
|
||||
if r.is_writable() {
|
||||
let mut data = bytes::BytesMut::new();
|
||||
{
|
||||
down_pack_queue.lock().unwrap().fetch();
|
||||
//down_pack_queue.get_mut().fetch();
|
||||
let work_list = down_pack_queue.lock().unwrap().work_list.lock().unwrap().clone();
|
||||
//let work_list = down_pack_queue.get_mut().work_list.lock().unwrap().clone();
|
||||
while !work_list.lock().unwrap().empty() {
|
||||
let node = &work_list.lock().unwrap().first_entry();
|
||||
node.upgrade().unwrap().lock().unwrap().entry.lock().unwrap().del_init();
|
||||
data = node.upgrade().unwrap().lock().unwrap().data.clone();
|
||||
break;
|
||||
//stream.write_all(node.upgrade().unwrap().borrow().data.as_ref()).await;
|
||||
//stream.write_all(data.as_ref()).await;
|
||||
}
|
||||
}
|
||||
if data.len() > 0 {
|
||||
println!("write_all2 len:{0}", data.len());
|
||||
stream.write_all(data.as_ref()).await;
|
||||
}
|
||||
on_write(&mut stream, &down_pack_queue).await;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user