2020-06-10 08:41:12 +00:00
|
|
|
use structopt::StructOpt;
|
|
|
|
|
2021-07-15 07:13:31 +00:00
|
|
|
use syndicate::actor::*;
|
2022-01-19 13:40:50 +00:00
|
|
|
use syndicate::preserves::rec;
|
2021-07-15 07:13:31 +00:00
|
|
|
use syndicate::relay;
|
|
|
|
use syndicate::sturdy;
|
2022-01-19 13:40:50 +00:00
|
|
|
use syndicate::value::NestedValue;
|
2021-07-15 07:13:31 +00:00
|
|
|
|
|
|
|
use tokio::net::TcpStream;
|
2020-06-10 08:41:12 +00:00
|
|
|
|
|
|
|
#[derive(Clone, Debug, StructOpt)]
|
|
|
|
pub struct Config {
|
|
|
|
#[structopt(short = "a", default_value = "1")]
|
|
|
|
action_count: u32,
|
2020-06-15 20:13:21 +00:00
|
|
|
|
|
|
|
#[structopt(short = "b", default_value = "0")]
|
|
|
|
bytes_padding: usize,
|
2021-07-15 07:13:31 +00:00
|
|
|
|
2023-02-08 23:17:12 +00:00
|
|
|
#[structopt(short = "d", default_value = "b4b303726566b7b3036f6964b10973796e646963617465b303736967b21069ca300c1dbfa08fba692102dd82311a8484")]
|
2021-07-15 07:13:31 +00:00
|
|
|
dataspace: String,
|
2020-06-10 08:41:12 +00:00
|
|
|
}
|
2020-05-11 21:31:00 +00:00
|
|
|
|
|
|
|
#[tokio::main]
|
2023-01-30 13:25:58 +00:00
|
|
|
async fn main() -> ActorResult {
|
2021-07-15 07:13:31 +00:00
|
|
|
syndicate::convenient_logging()?;
|
2021-09-28 11:00:48 +00:00
|
|
|
let config = Config::from_args();
|
|
|
|
let sturdyref = sturdy::SturdyRef::from_hex(&config.dataspace)?;
|
2023-02-06 16:09:17 +00:00
|
|
|
let (i, o) = TcpStream::connect("127.0.0.1:9001").await?.into_split();
|
2022-01-19 13:40:50 +00:00
|
|
|
Actor::top(None, |t| {
|
2021-10-05 19:11:16 +00:00
|
|
|
relay::connect_stream(t, i, o, false, sturdyref, (), move |_state, t, ds| {
|
2022-01-20 09:08:49 +00:00
|
|
|
let facet = t.facet.clone();
|
2022-01-19 13:40:50 +00:00
|
|
|
let padding = AnyValue::new(&vec![0u8; config.bytes_padding][..]);
|
2021-09-28 11:00:48 +00:00
|
|
|
let action_count = config.action_count;
|
2022-01-19 13:40:50 +00:00
|
|
|
let account = Account::new(None, None);
|
|
|
|
t.linked_task(Some(AnyValue::symbol("sender")), async move {
|
2021-09-28 11:00:48 +00:00
|
|
|
loop {
|
|
|
|
account.ensure_clear_funds().await;
|
2022-01-20 09:08:49 +00:00
|
|
|
facet.activate(&account, None, |t| {
|
|
|
|
for _ in 0..action_count {
|
|
|
|
ds.message(t, &(), &rec![AnyValue::symbol("Says"),
|
|
|
|
AnyValue::new("producer"),
|
|
|
|
padding.clone()]);
|
|
|
|
}
|
|
|
|
Ok(())
|
|
|
|
});
|
2021-09-28 11:00:48 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
Ok(None)
|
2023-02-08 21:27:41 +00:00
|
|
|
})
|
2021-07-24 21:22:01 +00:00
|
|
|
}).await??;
|
2021-07-15 07:13:31 +00:00
|
|
|
Ok(())
|
2020-05-11 21:31:00 +00:00
|
|
|
}
|