receiving initial messages!

This commit is contained in:
William Casarin
2022-12-11 18:34:43 -08:00
parent 5619ae60ad
commit 98adb82e56
7 changed files with 117 additions and 22 deletions

View File

@@ -1,6 +1,6 @@
use ewebsock::{WsReceiver, WsSender};
use ewebsock::{WsMessage, WsReceiver, WsSender};
use crate::Result;
use crate::{ClientMessage, Filter, Result};
use std::fmt;
use std::hash::{Hash, Hasher};
@@ -57,4 +57,10 @@ impl Relay {
status,
})
}
pub fn subscribe(&mut self, subid: String, filters: Vec<Filter>) {
let cmd = ClientMessage::req(subid, filters);
let txt = WsMessage::Text(cmd.to_json());
self.sender.send(txt);
}
}

View File

@@ -4,13 +4,13 @@ use crate::Result;
use tracing::error;
#[derive(Debug)]
pub struct PoolMessage<'a> {
relay: &'a str,
event: RelayEvent,
pub struct PoolEvent<'a> {
pub relay: &'a str,
pub event: RelayEvent,
}
pub struct RelayPool {
relays: Vec<Relay>,
pub relays: Vec<Relay>,
}
impl Default for RelayPool {
@@ -47,12 +47,12 @@ impl RelayPool {
Ok(())
}
pub fn try_recv(&self) -> Option<PoolMessage<'_>> {
pub fn try_recv(&self) -> Option<PoolEvent<'_>> {
for relay in &self.relays {
if let Some(msg) = relay.receiver.try_recv() {
match msg.try_into() {
Ok(event) => {
return Some(PoolMessage {
return Some(PoolEvent {
event,
relay: &relay.url,
});