/**
  * File: DomainMessage.idl
  * Content: corba definition for the domains messages
  * Author: LuisM Pena
  * Date: 28th November 2000
  * Version: 0.51.00
  * Last change:
  *
  *
  **/

#ifndef DOMAIN_MESSAGE_IDL
#define DOMAIN_MESSAGE_IDL

#include "SubgroupsHandler.idl"

module sensei
{

  module middleware
  {

    module domains
    {

      //bringing some declarations into scope ...
      typedef sensei::middleware::gms::Message 								Message;

      /***********************************************************************/
      /************************* DOMAIN MESSAGE ******************************/
      /***********************************************************************/

      typedef long	MessageId;

      /**
       * A DomainMessage includes some additional information to handle
       * the extended functionality
       */
      valuetype DomainMessage : Message
      {
        //subgroup is the only field to be usually filled by the application
        public SubgroupId subgroup;		//subgroup id. EVERY_SUBGROUP by default

        //following fields should be false by default
        public boolean unqueuedOnST;//to true if the message is NOT queued during state transfers
        public boolean unTransactionable;//to true if the message is NOT queued during transactions. It is only read
                                         //if unqueuedOnST is also true

        //following fields are used by the domains package
        public boolean waitReception; //to false (default) if the sending does not wait until the member receives it.
        public MessageId  id;					//sequential id, used by the DomainGroupHandler
      };

    };
  };
};

#endif