Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

junction

See also: junction class reference.

The junction class can be used to bring in multiple signals, and forward them all to the same set of output signals.

Table 1.15. storage class use example

fused

unfused

signals::storage<void (), signals::fused> banger1, banger2;
signals::counter<void (), signals::fused> counter1, counter2;
signals::junction<void (), signals::fused> junction;

banger1 >>= junction >>= counter1;
banger2 >>= junction >>= counter2;

banger1();
banger2();

BOOST_CHECK_EQUAL(counter1.count(), 2);
BOOST_CHECK_EQUAL(counter2.count(), 2);

junction.disable();
banger1();
banger2();

BOOST_CHECK_EQUAL(counter1.count(), 2);
BOOST_CHECK_EQUAL(counter2.count(), 2);

junction.enable();
banger1();
banger2();

BOOST_CHECK_EQUAL(counter1.count(),  4);
BOOST_CHECK_EQUAL(counter2.count(), 4);

signals::storage<void (), signals::unfused> banger1, banger2;
signals::counter<void (), signals::unfused> counter1, counter2;
signals::junction<void (), signals::unfused> junction;

banger1 >>= junction >>= counter1;
banger2 >>= junction >>= counter2;

banger1.send();
banger2.send();

BOOST_CHECK_EQUAL(counter1.count(), 2);
BOOST_CHECK_EQUAL(counter2.count(), 2);

junction.disable();
banger1.send();
banger2.send();

BOOST_CHECK_EQUAL(counter1.count(), 2);
BOOST_CHECK_EQUAL(counter2.count(), 2);

junction.enable();
banger1.send();
banger2.send();

BOOST_CHECK_EQUAL(counter1.count(), 4);
BOOST_CHECK_EQUAL(counter2.count(), 4);

Copyright © 2007 Stjepan Rajko

PrevUpHomeNext