[WIP] Progress on bridgedb update through channel update

This commit is contained in:
onyinyang 2023-03-10 16:54:31 -05:00
parent b2642d353c
commit c715d80632
No known key found for this signature in database
GPG Key ID: 156A6435430C2036
1 changed files with 22 additions and 15 deletions

View File

@ -322,13 +322,15 @@ async fn main() {
let rtype: ResourceInfo = serde_json::from_reader(reader).unwrap();
// pass in distribution of open invite vs. hot spare buckets?
let num_buckets = 5;
let hot_spare_buckets = 5;
let mut bridgedb = BridgeDb::new();
let mut lox_auth = BridgeAuth::new(bridgedb.pubkey);
let bridgedb = BridgeDb::new();
let lox_auth = BridgeAuth::new(bridgedb.pubkey);
let context = LoxServerContext {
db: Arc::new(Mutex::new(bridgedb)),
ba: Arc::new(Mutex::new(lox_auth)),
};
//Sender is resource stream and receiver is bridgedb function (add_openinv_bridges)
let (mut tx, mut rx) = async_channel::bounded(3);
let (tx, rx) = async_channel::bounded(3);
// to populate the bridge db
let rstream = start_stream(rtype.endpoint, rtype.name, rtype.token, rtype.types)
.await
@ -340,6 +342,8 @@ async fn main() {
}
});
let context_clone = context.clone();
let _ = spawn(async move {
while let resourcediff = rx.recv().await.unwrap() {
// spawn(async move {
for new_resource in resourcediff.new {
@ -379,7 +383,9 @@ async fn main() {
bucket[count] = bridgeline;
count += 1;
} else {
lox_auth.add_openinv_bridges(bucket, &mut bridgedb);
let mut ba_obj = context_clone.ba.lock().unwrap();
let mut db_obj = context_clone.db.lock().unwrap();
ba_obj.add_openinv_bridges(bucket, &mut db_obj);
count = 0;
bucket = [
BridgeLine::default(),
@ -421,31 +427,32 @@ async fn main() {
};
println!("Now it's a bridgeline: {:?}", bridgeline);
lox_auth.bridge_unreachable(&unreachable_bridge, &mut bridgedb);
let mut ba_obj = context_clone.ba.lock().unwrap();
let mut db_obj = context_clone.db.lock().unwrap();
ba_obj.bridge_unreachable(&unreachable_bridge, &mut db_obj);
}
}
}
// Create the encrypted bridge table
let mut ba_obj = context_clone.ba.lock().unwrap();
ba_obj.enc_bridge_table();
}
});
// let new_bridgedb = task::spawn(load_bridges());
// Create and initialize a new db and lox_auth
// Make 3 x num_buckets open invitation bridges, in sets of 3
for _ in 0..num_buckets {
/* for _ in 0..num_buckets {
let bucket = [random(), random(), random()];
lox_auth.add_openinv_bridges(bucket, &mut bridgedb);
}
*/
// Create the encrypted bridge table
lox_auth.enc_bridge_table();
let context = LoxServerContext {
db: Arc::new(Mutex::new(bridgedb)),
ba: Arc::new(Mutex::new(lox_auth)),
};
let new_service = make_service_fn(move |_conn: &AddrStream| {
let context = context.clone();
let service = service_fn(move |req| {
// let addr = conn.remote_addr();
handle(context.clone(), req)
});
async move { Ok::<_, Infallible>(service) }