int main(int argc, char **argv) { unsigned int id; MessageQueue *mq = new MessageQueue(); cout << "Message queue initialized, now appending three test messages" << endl; TestInterface::SetTestIntMessage *m1 = new TestInterface::SetTestIntMessage(1); TestInterface::SetTestIntMessage *m2 = new TestInterface::SetTestIntMessage(2); TestInterface::SetTestIntMessage *m3 = new TestInterface::SetTestIntMessage(3); TestInterface::SetTestStringMessage *m4 = new TestInterface::SetTestStringMessage(); id = mq->append(m1); cout << "m1 added with id " << id << endl; id = mq->append(m1); cout << "m1 added with id " << id << endl; id = mq->append(m2); cout << "m2 added with id " << id << endl; id = mq->append(m3); cout << "m3 added with id " << id << endl; id = mq->append(m4); cout << "m4 (of different type!) added with id " << id << endl; cout << "Size is now " << mq->size() << endl; cout << "Unreferencing messages" << endl; m1->unref(); m2->unref(); m3->unref(); m4->unref(); cout << "Appending m1 again" << endl; id = mq->append(m1); cout << "m1 added with id " << id << endl; cout << "Size is now " << mq->size() << endl; cout << "m1 refcount is now " << m1->refcount() << endl; printMessages(mq); cout << "Now removing message m1 once" << endl; mq->remove(m1); printMessages(mq); cout << "m1 has refcount " << m1->refcount() << endl; cout << "Now removing message m2" << endl; mq->remove(m2); printMessages(mq); cout << "Now removing message m4" << endl; mq->remove(m4); printMessages(mq); cout << "Size is now " << mq->size() << endl; printMessages(mq); delete mq; // messages will be erased when enqueued in mq! }