Example #1
0
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!

}