``` use std::sync::mpsc::channel; use std::sync::Arc; use std::sync::RwLock; use driveserver::types::Metadata; use driveserver::drive_server::DriveServer;
fn main() -> Result<(), std::io::Error> { // Source of truth let lock = Arc::new(RwLock::new(vec![types::Metadata { name: "fuji".tostring(), extension: "jpg".tostring(), nameextension: "fuji.jpg".tostring(), hash: "b0e490e762234567eabc74fade854476fe692e320".to_string(), size: 124093, }]));
let c_lock = Arc::clone(&lock);
let (tx, rx) = channel();
thread::spawn(move || {
for received in rx {
let mut meta = lock.write().unwrap();
println!("File received: {:?}", received);
meta.push(received);
}
});
DriveServer::listen(&c_lock, tx).unwrap();
```