tatami 0.1.1

A library for creating satellites and interacting with Tatami protocols.
Documentation
use libp2p::futures::StreamExt;
use tracing::error;

mod handle_shoji_command;
mod handle_swarm_event;

use crate::Satellite;

impl Satellite {
	/// Runs the Satellite.
	/// The satellite needs to be running in order to be useful, which you can do in a thread.
	/// "Running" means listening to Swarm events and responding to Shoji commands.
	pub async fn run(mut self) -> ! {
		loop {
			tokio::select! {
				// Swarm events
				Some(event) = self.swarm.0.next() => {
					if let Err(e) = self.handle_swarm_event(event) {
						error!("Handling swarm events failed: {}", e);
					}
				}
				// Shoji commands
				 Some(command) = self.shoji_command_reciever.recv() => {
					if let Err(e) = self.handle_shoji_command(command) {
						error!("Handling shoji's commands failed: {}", e);
					}
				}
			}
		}
	}
}