///|
fn bytes_text(data : Bytes) -> String {
  try @utf8.decode(data[:]) catch {
    _ => ""
  } noraise {
    value => value
  }
}

///|
/// A library-oriented example with no external broker process.
fn main {
  let broker = @broker.Broker::new()
  let queue = match broker.declare_queue("embedded.jobs") {
    Ok(value) => value
    Err(_) => {
      println("could not declare embedded.jobs")
      return
    }
  }
  ignore(broker.publish("", queue, b"local job \xE5\xB5\x8C\xE5\x85\xa5"))
  match broker.get(queue) {
    Ok(Some(delivery)) => {
      println("embedded message: \{bytes_text(delivery.body())}")
      ignore(broker.ack(delivery.tag()))
    }
    _ => println("embedded queue is empty")
  }
}