| | |
| | | ShmRemover auto_remove(shm_name); |
| | | SharedMemory shm(shm_name, 1024 * 1024); |
| | | |
| | | MsgI m0(shm.Alloc(1000), shm.New<RefCount>()); |
| | | BOOST_CHECK(m0.IsCounted()); |
| | | MsgI m0(shm, 1000); |
| | | BOOST_CHECK(m0.valid()); |
| | | BOOST_CHECK_EQUAL(m0.Count(), 1); |
| | | MsgI m1 = m0; |
| | | BOOST_CHECK(m1.IsCounted()); |
| | | BOOST_CHECK(m1.valid()); |
| | | BOOST_CHECK_EQUAL(m1.AddRef(), 2); |
| | | BOOST_CHECK_EQUAL(m0.AddRef(), 3); |
| | | BOOST_CHECK_EQUAL(m0.Release(shm), 2); |
| | | BOOST_CHECK_EQUAL(m0.Release(shm), 1); |
| | | BOOST_CHECK_EQUAL(m1.Release(shm), 0); |
| | | BOOST_CHECK(!m1.IsCounted()); |
| | | BOOST_CHECK(!m1.valid()); |
| | | } |