Skip to content
Snippets Groups Projects
Commit aa9a8983 authored by dvermd's avatar dvermd
Browse files

[fix] ws2p-protocol: #134 remove unwrap and deny its use

parent d6f3e950
No related branches found
No related tags found
1 merge request!244Resolve "Reliability: remove all "unwrap()" and deny their use"
...@@ -31,8 +31,7 @@ use durs_ws2p_messages::v2::connect::WS2Pv2ConnectType; ...@@ -31,8 +31,7 @@ use durs_ws2p_messages::v2::connect::WS2Pv2ConnectType;
use durs_ws2p_messages::WS2PMessage; use durs_ws2p_messages::WS2PMessage;
use failure::Fail; use failure::Fail;
use std::sync::mpsc::{Receiver, SendError, Sender}; use std::sync::mpsc::{Receiver, SendError, Sender};
use std::time::SystemTime; use std::time::Instant;
use unwrap::unwrap;
#[derive(Copy, Clone, Debug, Hash)] #[derive(Copy, Clone, Debug, Hash)]
/// WS2P Controller unique identitier /// WS2P Controller unique identitier
...@@ -141,10 +140,10 @@ impl WebsocketActionOrder { ...@@ -141,10 +140,10 @@ impl WebsocketActionOrder {
impl<M: ModuleMessage> WS2PController<M> { impl<M: ModuleMessage> WS2PController<M> {
/// Check timeouts /// Check timeouts
pub fn check_timeouts(&mut self) -> Option<WebsocketActionOrder> { pub fn check_timeouts(&mut self) -> Option<WebsocketActionOrder> {
let now = SystemTime::now(); let now = Instant::now();
if self.meta_datas.state == WS2PConnectionState::Established { if self.meta_datas.state == WS2PConnectionState::Established {
if unwrap!(now.duration_since(self.meta_datas.last_mess_time)).as_secs() if now.duration_since(self.meta_datas.last_mess_time).as_secs()
> *constants::WS2P_EXPIRE_TIMEOUT_IN_SECS > *constants::WS2P_EXPIRE_TIMEOUT_IN_SECS
{ {
Some(WebsocketActionOrder { Some(WebsocketActionOrder {
...@@ -157,7 +156,7 @@ impl<M: ModuleMessage> WS2PController<M> { ...@@ -157,7 +156,7 @@ impl<M: ModuleMessage> WS2PController<M> {
} else { } else {
None None
} }
} else if unwrap!(now.duration_since(self.meta_datas.creation_time)).as_secs() } else if now.duration_since(self.meta_datas.creation_time).as_secs()
> *constants::WS2P_NEGOTIATION_TIMEOUT_IN_SECS > *constants::WS2P_NEGOTIATION_TIMEOUT_IN_SECS
{ {
Some(WebsocketActionOrder { Some(WebsocketActionOrder {
......
...@@ -27,7 +27,7 @@ use durs_network_documents::NodeFullId; ...@@ -27,7 +27,7 @@ use durs_network_documents::NodeFullId;
use durs_ws2p_messages::v2::api_features::WS2PFeatures; use durs_ws2p_messages::v2::api_features::WS2PFeatures;
use durs_ws2p_messages::v2::connect::WS2Pv2ConnectType; use durs_ws2p_messages::v2::connect::WS2Pv2ConnectType;
use log::error; use log::error;
use std::time::SystemTime; use std::time::Instant;
#[derive(Debug)] #[derive(Debug)]
/// WS2p Connection meta datas /// WS2p Connection meta datas
...@@ -41,13 +41,13 @@ pub struct WS2PControllerMetaDatas { ...@@ -41,13 +41,13 @@ pub struct WS2PControllerMetaDatas {
/// Currency name /// Currency name
pub currency: CurrencyName, pub currency: CurrencyName,
/// Controller creation time /// Controller creation time
pub creation_time: SystemTime, pub creation_time: Instant,
/// Connection features /// Connection features
pub features: Option<WS2PFeatures>, pub features: Option<WS2PFeatures>,
/// Signator /// Signator
pub signator: SignatorEnum, pub signator: SignatorEnum,
/// Timestamp of last received message /// Timestamp of last received message
pub last_mess_time: SystemTime, pub last_mess_time: Instant,
/// Local node properties /// Local node properties
pub local_node: MySelfWs2pNode, pub local_node: MySelfWs2pNode,
/// Remote connect type /// Remote connect type
...@@ -81,9 +81,9 @@ impl WS2PControllerMetaDatas { ...@@ -81,9 +81,9 @@ impl WS2PControllerMetaDatas {
connect_type, connect_type,
count_invalid_msgs: 0, count_invalid_msgs: 0,
currency, currency,
creation_time: SystemTime::now(), creation_time: Instant::now(),
features: None, features: None,
last_mess_time: SystemTime::now(), last_mess_time: Instant::now(),
local_node, local_node,
remote_connect_type: None, remote_connect_type: None,
remote_node: None, remote_node: None,
......
...@@ -33,19 +33,17 @@ use durs_ws2p_messages::WS2PMessage; ...@@ -33,19 +33,17 @@ use durs_ws2p_messages::WS2PMessage;
use log::error; use log::error;
use std::ops::Deref; use std::ops::Deref;
use std::thread; use std::thread;
use std::time::{Duration, SystemTime}; use std::time::{Duration, Instant};
pub fn process<M: ModuleMessage>( pub fn process<M: ModuleMessage>(
controller: &mut WS2PController<M>, controller: &mut WS2PController<M>,
msg: WebsocketMessage, msg: WebsocketMessage,
) -> Result<Option<WebsocketActionOrder>, WS2PControllerProcessError> { ) -> Result<Option<WebsocketActionOrder>, WS2PControllerProcessError> {
// Update last_mess_time // Update last_mess_time
controller.meta_datas.last_mess_time = SystemTime::now(); controller.meta_datas.last_mess_time = Instant::now();
// Spam ? // Spam ?
if SystemTime::now() if controller.meta_datas.last_mess_time.elapsed()
.duration_since(controller.meta_datas.last_mess_time)
.unwrap()
> Duration::new(*constants::WS2P_SPAM_INTERVAL_IN_MILLI_SECS, 0) > Duration::new(*constants::WS2P_SPAM_INTERVAL_IN_MILLI_SECS, 0)
{ {
if controller.meta_datas.spam_interval { if controller.meta_datas.spam_interval {
...@@ -63,7 +61,7 @@ pub fn process<M: ModuleMessage>( ...@@ -63,7 +61,7 @@ pub fn process<M: ModuleMessage>(
thread::sleep(Duration::from_millis( thread::sleep(Duration::from_millis(
*constants::WS2P_SPAM_SLEEP_TIME_IN_SEC, *constants::WS2P_SPAM_SLEEP_TIME_IN_SEC,
)); ));
controller.meta_datas.last_mess_time = SystemTime::now(); controller.meta_datas.last_mess_time = Instant::now();
return Ok(None); return Ok(None);
} }
......
...@@ -22,7 +22,6 @@ use durs_module::ModuleMessage; ...@@ -22,7 +22,6 @@ use durs_module::ModuleMessage;
//use durs_ws2p_messages::v2::connect::WS2Pv2ConnectType; //use durs_ws2p_messages::v2::connect::WS2Pv2ConnectType;
use durs_ws2p_messages::v2::secret_flags::WS2Pv2SecretFlagsMsg; use durs_ws2p_messages::v2::secret_flags::WS2Pv2SecretFlagsMsg;
//use log::error; //use log::error;
//use unwrap::unwrap;
pub fn process_ws2p_v2p_secret_flags_msg<M: ModuleMessage>( pub fn process_ws2p_v2p_secret_flags_msg<M: ModuleMessage>(
controller: &mut WS2PController<M>, controller: &mut WS2PController<M>,
......
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
#![allow(clippy::large_enum_variant)] #![allow(clippy::large_enum_variant)]
#![deny( #![deny(
clippy::option_unwrap_used,
clippy::result_unwrap_used,
missing_docs, missing_docs,
missing_debug_implementations, missing_debug_implementations,
missing_copy_implementations, missing_copy_implementations,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment