CCR tips and tricks - part 25
In the very first CCR tips and tricks I gave you a utility to essentially make CCR code synchronous to make unit testing simpler. Well, with the release of RDS4 beta there is a nice addition in the IO.Adapters assembly. The synchronous arbiter essentially does the job of the PortUtility you've previously seen. All you need is this namespace:
1: using Microsoft.Ccr.Adapters.IO;
And then this code using the PortUtility (assuming PortUtility is created in test constructor):
1: portUtility.Choice(
2: resultPort,
3: s => streamContent = s,
4: e => Assert.Fail("Unexpected failure: " + e.ToString()));
Will look like this:
1: using (var syncArbiter = new SynchronousArbiter())
2: {
3: Assert.IsTrue(syncArbiter.Choice(
4: resultPort,
5: s => streamContent = s,
6: e => Assert.Fail("Unexpected failure: " + e.ToString()),
7: TimeSpan.FromSeconds(5)));
8: }
What I've seen is that in unit tests and also in a few other occasions where you use CCR outside of the Robotics space, a synchronous arbiter makes sense. And now it's part of CCR for you to use. Enjoy!