Skip to content

Commit 19bac11

Browse files
committed
bump mio version to 1.0.4
use AtomicBool to signal thread stop other than mio.Waker update cargo deny allowed git urls update lock file
1 parent ccdc5a0 commit 19bac11

File tree

17 files changed

+350
-526
lines changed

17 files changed

+350
-526
lines changed

Cargo.lock

Lines changed: 36 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,8 +322,9 @@ hyper-util = "0.1"
322322
async-trait = "0.1"
323323
tower = "0.4"
324324
pin-project = "1.0"
325-
mio = "0.6"
326-
mio-extras = "2.0.6"
325+
mio = "1.0.4"
326+
mio-timer = { git = "https://github.com/Pana/mio-timer", rev = "251170b" }
327+
mio-misc = { git = "https://github.com/Pana/mio-misc", rev = "27ad80f" }
327328
reqwest = "0.12"
328329

329330
# crypto & hash

crates/network/src/connection.rs

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use log::{debug, trace};
1313
use metrics::{
1414
register_meter_with_group, Gauge, GaugeUsize, Histogram, Meter, Sample,
1515
};
16-
use mio::{tcp::TcpStream, Poll, PollOpt, Ready, Token};
16+
use mio::{net::TcpStream, Interest, Poll, Token};
1717
use priority_send_queue::{PrioritySendQueue, SendQueuePriority};
1818
use serde::Deserialize;
1919
use serde_derive::Serialize;
@@ -183,7 +183,7 @@ pub struct GenericConnection<Socket: GenericSocket> {
183183
/// Sending packet.
184184
sending_packet: Option<Packet>,
185185
/// Event flags this connection interested
186-
interest: Ready,
186+
interest: Interest,
187187
/// Registered flag
188188
registered: AtomicBool,
189189
/// Assemble packet with extra information before sending out.
@@ -324,7 +324,10 @@ impl<Socket: GenericSocket> GenericConnection<Socket> {
324324
let status = self.write_next_from_queue()?;
325325

326326
if self.sending_packet.is_none() && self.send_queue.is_empty() {
327-
self.interest.remove(Ready::writable());
327+
self.interest = self
328+
.interest
329+
.remove(Interest::WRITABLE)
330+
.expect("Interest::WRITABLE should not be empty");
328331
}
329332
NETWORK_SEND_QUEUE_SIZE.update(self.send_queue.len());
330333
io.update_registration(self.token)?;
@@ -361,7 +364,7 @@ impl<Socket: GenericSocket> GenericConnection<Socket> {
361364
}
362365

363366
if !self.interest.is_writable() {
364-
self.interest.insert(Ready::writable());
367+
self.interest = self.interest.add(Interest::WRITABLE);
365368
}
366369
io.update_registration(self.token).ok();
367370
}
@@ -384,15 +387,18 @@ impl Connection {
384387
recv_buf: BytesMut::new(),
385388
send_queue: PrioritySendQueue::default(),
386389
sending_packet: None,
387-
interest: Ready::hup() | Ready::readable(),
390+
interest: Interest::READABLE, /* previously(mio0.6) use
391+
* Ready::hup() |
392+
* Ready::readable(), Ready::hub()
393+
* is removed from 0.7 */
388394
registered: AtomicBool::new(false),
389395
assembler: Box::new(PacketWithLenAssembler::default()),
390396
}
391397
}
392398

393399
/// Register this connection with the IO event loop.
394400
pub fn register_socket(
395-
&self, reg: Token, event_loop: &Poll,
401+
&mut self, reg: Token, event_loop: &Poll,
396402
) -> io::Result<()> {
397403
if self.registered.load(AtomicOrdering::SeqCst) {
398404
return Ok(());
@@ -402,12 +408,11 @@ impl Connection {
402408
self.token,
403409
reg
404410
);
405-
if let Err(e) = event_loop.register(
406-
&self.socket,
407-
reg,
408-
self.interest,
409-
PollOpt::edge(),
410-
) {
411+
if let Err(e) =
412+
event_loop
413+
.registry()
414+
.register(&mut self.socket, reg, self.interest)
415+
{
411416
trace!(
412417
"Failed to register socket, token = {}, reg = {:?}, err = {:?}",
413418
self.token,
@@ -422,7 +427,7 @@ impl Connection {
422427
/// Update connection registration. Should be called at the end of the IO
423428
/// handler.
424429
pub fn update_socket(
425-
&self, reg: Token, event_loop: &Poll,
430+
&mut self, reg: Token, event_loop: &Poll,
426431
) -> io::Result<()> {
427432
trace!(
428433
"Connection reregister, token = {}, reg = {:?}",
@@ -432,8 +437,8 @@ impl Connection {
432437
if !self.registered.load(AtomicOrdering::SeqCst) {
433438
self.register_socket(reg, event_loop)
434439
} else {
435-
event_loop
436-
.reregister(&self.socket, reg, self.interest, PollOpt::edge())
440+
event_loop.registry()
441+
.reregister(&mut self.socket, reg, self.interest)
437442
.unwrap_or_else(|e| {
438443
trace!("Failed to reregister socket, token = {}, reg = {:?}, err = {:?}", self.token, reg, e);
439444
});
@@ -443,9 +448,9 @@ impl Connection {
443448

444449
/// Delete connection registration. Should be called at the end of the IO
445450
/// handler.
446-
pub fn deregister_socket(&self, event_loop: &Poll) -> io::Result<()> {
451+
pub fn deregister_socket(&mut self, event_loop: &Poll) -> io::Result<()> {
447452
trace!("Connection deregister, token = {}", self.token);
448-
event_loop.deregister(&self.socket).ok();
453+
event_loop.registry().deregister(&mut self.socket).ok();
449454
Ok(())
450455
}
451456

@@ -591,7 +596,7 @@ impl PacketAssembler for PacketWithLenAssembler {
591596
mod tests {
592597
use super::*;
593598
use crate::iolib::IoChannel;
594-
use mio::Ready;
599+
use mio::Interest;
595600
use std::{
596601
cmp,
597602
io::{Read, Result, Write},
@@ -672,7 +677,7 @@ mod tests {
672677
send_queue: PrioritySendQueue::default(),
673678
sending_packet: None,
674679
recv_buf: BytesMut::new(),
675-
interest: Ready::hup() | Ready::readable(),
680+
interest: Interest::READABLE,
676681
registered: AtomicBool::new(false),
677682
assembler: Box::new(PacketWithLenAssembler::new(1, None)),
678683
}

crates/network/src/handshake.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ use crate::{
2828
use cfx_types::{Public, H256};
2929
use io::{IoContext, StreamToken};
3030
use log::{debug, error, trace};
31-
use mio::tcp::TcpStream;
31+
use mio::net::TcpStream;
3232
use priority_send_queue::SendQueuePriority;
3333
use std::{
3434
sync::atomic::{AtomicBool, Ordering},

0 commit comments

Comments
 (0)