Files
nym/service-providers/authenticator/src/cli/peer_handler.rs
T
2024-10-18 19:34:09 +03:00

60 lines
2.4 KiB
Rust

// Copyright 2024 - Nym Technologies SA <contact@nymtech.net>
// SPDX-License-Identifier: Apache-2.0
use nym_sdk::TaskClient;
use nym_wireguard::peer_controller::{
AddPeerControlResponse, PeerControlRequest, QueryBandwidthControlResponse,
QueryPeerControlResponse, RemovePeerControlResponse,
};
use tokio::sync::mpsc;
pub struct DummyHandler {
peer_rx: mpsc::Receiver<PeerControlRequest>,
task_client: TaskClient,
}
impl DummyHandler {
pub fn new(peer_rx: mpsc::Receiver<PeerControlRequest>, task_client: TaskClient) -> Self {
DummyHandler {
peer_rx,
task_client,
}
}
pub async fn run(mut self) {
while !self.task_client.is_shutdown() {
tokio::select! {
msg = self.peer_rx.recv() => {
if let Some(msg) = msg {
match msg {
PeerControlRequest::AddPeer { peer, client_id, response_tx } => {
log::info!("[DUMMY] Adding peer {:?} with client id {:?}", peer, client_id);
response_tx.send(AddPeerControlResponse { success: true }).ok();
}
PeerControlRequest::RemovePeer { key, response_tx } => {
log::info!("[DUMMY] Removing peer {:?}", key);
response_tx.send(RemovePeerControlResponse { success: true }).ok();
}
PeerControlRequest::QueryPeer{key, response_tx} => {
log::info!("[DUMMY] Querying peer {:?}", key);
response_tx.send(QueryPeerControlResponse { success: true, peer: None }).ok();
}
PeerControlRequest::QueryBandwidth{key, response_tx} => {
log::info!("[DUMMY] Querying bandwidth for peer {:?}", key);
response_tx.send(QueryBandwidthControlResponse { success: true, bandwidth_data: None }).ok();
}
}
} else {
break;
}
}
_ = self.task_client.recv() => {
log::trace!("DummyHandler: Received shutdown");
}
}
}
log::debug!("DummyHandler: Exiting");
}
}