This repository was archived by the owner on Feb 16, 2024. It is now read-only.

Description
AsyncMessageBroker seems to be useful in cases where one may need to collect some data from subscribers.
Currently, you can await all subscribers to finish their jobs, then do something like this:
await AsyncMessageBroker.Default.PublishAsync<TestMessage>(new TestMessage());
// Do something after
AsyncMessageBroker.Default.Subscribe<TestMessage>(_ =>
{
return Observable.TimerFrame(10).AsUnitObservable();
}).AddTo(this);
But what I want to do is something like this:
TestPayload[] payloads = await AsyncMessageBroker.Default.PublishAsync<TestPayload, TestMessage>(new TestMessage());
// Do something with awaited payloads
Debug.Log(payloads[0].Value);
AsyncMessageBroker.Default.Subscribe<TestMessage, TestPayload>(_ =>
{
return Observable.TimerFrame(10).Select(_ => new TestPayload(Value=1000));
}).AddTo(this);