Select Git revision
-
Hugo Trentesaux authoredHugo Trentesaux authored
mod.rs 4.27 KiB
// Copyright (C) 2018 The Durs Project Developers.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
//! WS2P connections controllers.
//use constants::*;
use dubp_documents::Blockstamp;
use dup_crypto::hashs::Hash;
use ws::Sender;
//use dup_crypto::keys::*;
use durs_network_documents::network_peer::PeerCardV11;
use durs_network_documents::*;
use durs_ws2p_messages::v2::api_features::WS2PFeatures;
use durs_ws2p_messages::v2::connect::WS2Pv2ConnectType;
use durs_ws2p_messages::*;
//use std::sync::mpsc;
use std::time::SystemTime;
pub mod handler;
pub mod incoming_connections;
pub mod outgoing_connections;
/// Order transmitted to the controller
#[derive(Debug, Clone)]
pub enum Ws2pControllerOrder {
/// Give a message to be transmitted
SendMsg(Box<WS2PMessage>),
/// Close the connection
Close,
}
/// Store a websocket sender
pub struct WsSender(pub Sender);
impl ::std::fmt::Debug for WsSender {
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
write!(f, "WsSender {{ }}")
}
}
#[derive(Debug, Copy, Clone, PartialEq)]
/// WS2P connection state
pub enum WS2PConnectionState {
/// Never try to establish this connection
NeverTry,
/// Try to open websocket
TryToOpenWS,
/// Websocket error
WSError,
/// Try to send connect message
TryToSendConnectMsg,
/// Endpoint unreachable
Unreachable,
/// Waiting connect message
WaitingConnectMsg,
/// No response
NoResponse,
/// Negociation timeout