Compare commits

..

No commits in common. "3758249a28d564f1a92ce033ebbc3094fafdf540" and "9bc2db2b24aa506ab1f1d5572127cbe6ac8ff3b6" have entirely different histories.

9 changed files with 21 additions and 20 deletions

View file

@ -1,6 +1,6 @@
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use crate::types::{ElementContent, ElementId, Family, MessageId, PotId}; use crate::types::{ElementContent, ElementId, Family, FamilyId, MessageId, PotId};
#[derive(Serialize, Deserialize, Debug, Clone)] #[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Message { pub struct Message {

View file

@ -1,7 +1,7 @@
use std::hash::Hash; use std::hash::Hash;
use anyhow::{anyhow, Error}; use anyhow::{anyhow, bail, Error};
use i2p::net::{I2pAddr, I2pSocketAddr}; use i2p::net::{I2pAddr, I2pSocketAddr, ToI2pSocketAddrs};
use regex::Regex; use regex::Regex;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
@ -52,11 +52,7 @@ impl From<PeerId> for I2pSocketAddr {
impl From<I2pSocketAddr> for PeerId { impl From<I2pSocketAddr> for PeerId {
fn from(value: I2pSocketAddr) -> Self { fn from(value: I2pSocketAddr) -> Self {
Self::try_from_b32(&value.dest().string(), Some(value.port())).unwrap_or( PeerId { addr: value }
Self::try_from_dest(&value.dest().string(), Some(value.port())).expect(&format!(
"I2pSocketAddr was neither in b32 nor in b64 format: {value:?}"
)),
)
} }
} }

View file

@ -1,7 +1,7 @@
use tracing::debug; use tracing::debug;
use ubisync_lib::peer::Peer; use ubisync_lib::peer::Peer;
use ubisync_lib::types::{ContentUpdateStrategy, PeerId}; use ubisync_lib::types::{ContentUpdateStrategy, Family, PeerId};
use ubisync_lib::messages::{Message, MessageContent}; use ubisync_lib::messages::{Message, MessageContent};
@ -25,9 +25,15 @@ pub fn handle(state: &CommState, peer: &PeerId, message: Message) {
MessageContent::JoinFamily => state.request_family_join(peer.to_owned()), MessageContent::JoinFamily => state.request_family_join(peer.to_owned()),
MessageContent::AddedToFamily { family } => { MessageContent::AddedToFamily { family } => {
if state.has_family_join_request(peer.to_owned()) { if state.has_family_join_request(peer.to_owned()) {
debug!("Own join request was accepted, setting family");
state state
.set_own_family(family.to_owned()) .set_own_family(family.to_owned())
.expect("State failed"); .expect("State failed");
debug!("New own family: {:?}", state.get_family_of_peer(state.own_peer_id().unwrap()))
}
else {
debug!("Got AddedToFamily message, but no family join request was found")
} }
} }
MessageContent::LeaveFamily => state.remove_peer_from_family(peer.to_owned()), MessageContent::LeaveFamily => state.remove_peer_from_family(peer.to_owned()),

View file

@ -1,6 +1,7 @@
mod conflict_resolution; mod conflict_resolution;
pub mod message_processor; pub mod message_processor;
use i2p::sam::StreamForward;
use tracing::{debug, error, warn}; use tracing::{debug, error, warn};
use ubisync_lib::messages::Message; use ubisync_lib::messages::Message;
use ubisync_lib::types::PeerId; use ubisync_lib::types::PeerId;
@ -38,7 +39,7 @@ impl CommHandle {
} }
let listener = listener_builder.build().unwrap(); let listener = listener_builder.build().unwrap();
let own_peer_id: PeerId = (&listener).local_addr().map_err(|e| anyhow!(e))?.into(); let mut own_peer_id: PeerId = (&listener).local_addr().map_err(|e| anyhow!(e))?.into();
Ok(CommHandle { Ok(CommHandle {
state: Arc::new(state), state: Arc::new(state),

View file

@ -1,4 +1,4 @@
use std::sync::Arc; use std::{future::Future, sync::Arc};
use anyhow::bail; use anyhow::bail;
use api::{v0::app::App, Api, ApiBuilder}; use api::{v0::app::App, Api, ApiBuilder};

View file

@ -6,8 +6,7 @@ use ubisync_lib::{
api::events::AppEvent, api::events::AppEvent,
peer::Peer, peer::Peer,
types::{ types::{
ContentUpdateStrategy, Element, ElementContent, ElementId, Family, FamilyId, MessageId, ContentUpdateStrategy, Element, ElementContent, ElementId, Family, FamilyId, MessageId, PeerId, PotId
PeerId, PotId,
}, },
}; };
@ -102,13 +101,12 @@ impl CommState {
} }
pub fn request_family_join(&self, peer: PeerId) { pub fn request_family_join(&self, peer: PeerId) {
let _ = self self.state
.state
.emit_node_event(UbisyncNodeEvent::FamilyJoinRequest { joiner: peer }); .emit_node_event(UbisyncNodeEvent::FamilyJoinRequest { joiner: peer });
} }
pub fn remove_peer_from_family(&self, peer: PeerId) { pub fn remove_peer_from_family(&self, peer: PeerId) {
let _ = self.db().remove_peer_from_family(peer); self.db().remove_peer_from_family(peer);
} }
pub fn has_family_join_request(&self, peer: PeerId) -> bool { pub fn has_family_join_request(&self, peer: PeerId) -> bool {

View file

@ -32,7 +32,7 @@ impl StateDB {
} }
pub fn add_family_join_request(&self, peer: PeerId) { pub fn add_family_join_request(&self, peer: PeerId) {
let _ = self.db.set_key(peer.to_string(), &"").execute(); self.db.set_key(peer.to_string(), &"").execute();
debug!( debug!(
"Added join request: {:?}", "Added join request: {:?}",
self.db.get_key(peer.to_string()).query() self.db.get_key(peer.to_string()).query()

View file

@ -13,7 +13,7 @@ use ubisync_lib::{
types::{AppId, Element, ElementContent, ElementId, Family, FamilyId, PeerId, PotId, Tag}, types::{AppId, Element, ElementContent, ElementId, Family, FamilyId, PeerId, PotId, Tag},
}; };
use anyhow::Error; use anyhow::{anyhow, Error};
use tracing::{debug, warn}; use tracing::{debug, warn};
mod api_state; mod api_state;

View file

@ -41,7 +41,7 @@ async fn two_nodes_element_creation() {
let app_id2 = api_client2.app_id(); let app_id2 = api_client2.app_id();
ubi2.set_node_event_callback( ubi2.set_node_event_callback(
move |ev, node| { move |ev, node| {
if let UbisyncNodeEvent::NewPot { id, app_type: _ } = ev { if let UbisyncNodeEvent::NewPot { id, app_type } = ev {
debug!("callback called"); debug!("callback called");
node.add_pot_member(id, app_id2.clone()).unwrap(); node.add_pot_member(id, app_id2.clone()).unwrap();
} }
@ -105,7 +105,7 @@ async fn two_nodes_api_event() {
ubi1.set_node_event_callback( ubi1.set_node_event_callback(
move |ev, node| { move |ev, node| {
debug!("callback called"); debug!("callback called");
if let UbisyncNodeEvent::NewPot { id, app_type: _ } = ev { if let UbisyncNodeEvent::NewPot { id, app_type } = ev {
node.add_pot_member(id, app_id1.clone()).unwrap(); node.add_pot_member(id, app_id1.clone()).unwrap();
} }
}, },