コード例 #1
0
ファイル: Callback.cs プロジェクト: agustinsantos/Sxta
 public ReflectAttributeValuesExtCallback(IFederateAmbassador federate, ILogicalTime time, long federateHandle, long interactionIndex, IObjectInstanceHandle theObjectParam, HLAattributeHandleValuePair[] theAttributesParam, byte[] userSuppliedTagParam)
     : base(federate, time, federateHandle, interactionIndex)
 {
     this.theObject       = theObjectParam;
     this.theAttributes   = theAttributesParam;
     this.userSuppliedTag = userSuppliedTagParam;
 }
コード例 #2
0
ファイル: Callback.cs プロジェクト: agustinsantos/Sxta
 public ProvideAttributeValueUpdateCallback(IFederateAmbassador federate, ILogicalTime time, IObjectInstanceHandle theObjectParam, IAttributeHandleSet theAttributesParam, byte[] userSuppliedTagParam)
     : base(federate, time)
 {
     this.theObject       = theObjectParam;
     this.theAttributes   = theAttributesParam;
     this.userSuppliedTag = userSuppliedTagParam;
 }
コード例 #3
0
ファイル: Callback.cs プロジェクト: agustinsantos/Sxta
 public DiscoverObjectInstanceCallback(IFederateAmbassador federate, ILogicalTime time, long federateHandle, long interactionIndex, IObjectInstanceHandle theObjectParam, IObjectClassHandle theObjectClassParam, string objectNameParam)
     : base(federate, time, federateHandle, interactionIndex)
 {
     this.theObject      = theObjectParam;
     this.theObjectClass = theObjectClassParam;
     this.objectName     = objectNameParam;
 }
コード例 #4
0
ファイル: Callback.cs プロジェクト: agustinsantos/Sxta
 public ReceiveInteractionCallback(IFederateAmbassador federate, ILogicalTime time, IInteractionClassHandle interactionClassParam, IParameterHandleValueMap theParametersParam, byte[] userSuppliedTagParam)
     : base(federate, time)
 {
     this.interactionClass = interactionClassParam;
     this.theParameters    = theParametersParam;
     this.userSuppliedTag  = userSuppliedTagParam;
 }
コード例 #5
0
ファイル: Callback.cs プロジェクト: agustinsantos/Sxta
 public RemoveObjectInstanceCallback(IFederateAmbassador federate, ILogicalTime time, IObjectInstanceHandle theObjectParam, byte[] userSuppliedTagParam, OrderType sentOrderingParam)
     : base(federate, time)
 {
     this.theObject       = theObjectParam;
     this.userSuppliedTag = userSuppliedTagParam;
     this.sentOrdering    = sentOrderingParam;
 }
コード例 #6
0
ファイル: Callback.cs プロジェクト: agustinsantos/Sxta
 public DiscoverObjectInstanceCallback(IFederateAmbassador federate, IObjectInstanceHandle theObjectParam, IObjectClassHandle theObjectClassParam, string objectNameParam)
     : base(federate)
 {
     this.theObject      = theObjectParam;
     this.theObjectClass = theObjectClassParam;
     this.objectName     = objectNameParam;
 }
コード例 #7
0
ファイル: Callback.cs プロジェクト: agustinsantos/Sxta
 public ReflectAttributeValuesExtCallback(IFederateAmbassador federate, IObjectInstanceHandle theObjectParam, HLAattributeHandleValuePair[] theAttributesParam, byte[] userSuppliedTagParam)
     : base(federate)
 {
     this.theObject       = theObjectParam;
     this.theAttributes   = theAttributesParam;
     this.userSuppliedTag = userSuppliedTagParam;
 }
コード例 #8
0
ファイル: Callback.cs プロジェクト: superliujian/Sxta
 public Callback(IFederateAmbassador federate, ILogicalTime time)
     : this(federate)
 {
     this.time = time;
 }
コード例 #9
0
ファイル: Callback.cs プロジェクト: superliujian/Sxta
 public TimeStampedRemoveObjectInstanceCallback(IFederateAmbassador federate, ILogicalTime time, IObjectInstanceHandle theObjectParam, byte[] userSuppliedTagParam, OrderType sentOrderingParam, ILogicalTime theTimeParam, OrderType receivedOrderingParam)
     : base(federate, time, theObjectParam, userSuppliedTagParam, sentOrderingParam)
 {
     this.timeParam = theTimeParam;
     this.receivedOrdering = receivedOrderingParam;
 }
コード例 #10
0
ファイル: Callback.cs プロジェクト: superliujian/Sxta
 public TimeConstrainedEnabledCallback(IFederateAmbassador federate, ILogicalTime time, ILogicalTime timeParam)
     : base(federate, time)
 {
     this.timeParam = timeParam;
 }
コード例 #11
0
ファイル: Callback.cs プロジェクト: superliujian/Sxta
 public SynchronizationPointRegistrationSucceededCallback(IFederateAmbassador federate, ILogicalTime time, String label)
     : base(federate, time)
 {
     this.synchronizationPointLabel = label;
 }
コード例 #12
0
ファイル: Callback.cs プロジェクト: agustinsantos/Sxta
 public SynchronizationPointRegistrationFailedCallback(IFederateAmbassador federate, ILogicalTime time, String label, SynchronizationPointFailureReason reasonParam)
     : base(federate, time)
 {
     this.synchronizationPointLabel = label;
     this.reason = reasonParam;
 }
コード例 #13
0
ファイル: Callback.cs プロジェクト: superliujian/Sxta
 public AnnounceSynchronizationPointCallback(IFederateAmbassador federate, ILogicalTime time, String label, byte[] tag)
     : base(federate, time)
 {
     this.synchronizationPointLabel = label;
     this.userSuppliedTag = tag;
 }
コード例 #14
0
ファイル: Callback.cs プロジェクト: superliujian/Sxta
 public DiscoverObjectInstanceCallback(IFederateAmbassador federate, ILogicalTime time, long federateHandle, long interactionIndex, IObjectInstanceHandle theObjectParam, IObjectClassHandle theObjectClassParam, string objectNameParam)
     : base(federate, time, federateHandle, interactionIndex)
 {
     this.theObject = theObjectParam;
     this.theObjectClass = theObjectClassParam;
     this.objectName = objectNameParam;
 }
コード例 #15
0
ファイル: Callback.cs プロジェクト: agustinsantos/Sxta
 public TimeStampedRemoveObjectInstanceCallback(IFederateAmbassador federate, ILogicalTime time, IObjectInstanceHandle theObjectParam, byte[] userSuppliedTagParam, OrderType sentOrderingParam, ILogicalTime theTimeParam, OrderType receivedOrderingParam)
     : base(federate, time, theObjectParam, userSuppliedTagParam, sentOrderingParam)
 {
     this.timeParam        = theTimeParam;
     this.receivedOrdering = receivedOrderingParam;
 }
コード例 #16
0
ファイル: Callback.cs プロジェクト: agustinsantos/Sxta
 public FederationSynchronizedCallback(IFederateAmbassador federate, ILogicalTime time, String label)
     : base(federate, time)
 {
     this.synchronizationPointLabel = label;
 }
コード例 #17
0
ファイル: Callback.cs プロジェクト: agustinsantos/Sxta
 public AnnounceSynchronizationPointCallback(IFederateAmbassador federate, ILogicalTime time, String label, byte[] tag)
     : base(federate, time)
 {
     this.synchronizationPointLabel = label;
     this.userSuppliedTag           = tag;
 }
コード例 #18
0
ファイル: Callback.cs プロジェクト: agustinsantos/Sxta
 public TimeConstrainedEnabledCallback(IFederateAmbassador federate, ILogicalTime time, ILogicalTime timeParam)
     : base(federate, time)
 {
     this.timeParam = timeParam;
 }
コード例 #19
0
ファイル: Callback.cs プロジェクト: superliujian/Sxta
 public DiscoverObjectInstanceCallback(IFederateAmbassador federate, IObjectInstanceHandle theObjectParam, IObjectClassHandle theObjectClassParam, string objectNameParam)
     : base(federate)
 {
     this.theObject = theObjectParam;
     this.theObjectClass = theObjectClassParam;
     this.objectName = objectNameParam;
 }
コード例 #20
0
ファイル: Callback.cs プロジェクト: superliujian/Sxta
 public ReflectAttributeValuesExtCallback(IFederateAmbassador federate, IObjectInstanceHandle theObjectParam, HLAattributeHandleValuePair[] theAttributesParam, byte[] userSuppliedTagParam)
     : base(federate)
 {
     this.theObject = theObjectParam;
     this.theAttributes = theAttributesParam;
     this.userSuppliedTag = userSuppliedTagParam;
 }
コード例 #21
0
ファイル: Callback.cs プロジェクト: superliujian/Sxta
 public ReceiveInteractionCallback(IFederateAmbassador federate, ILogicalTime time, IInteractionClassHandle interactionClassParam, IParameterHandleValueMap theParametersParam, byte[] userSuppliedTagParam)
     : base(federate, time)
 {
     this.interactionClass = interactionClassParam;
     this.theParameters = theParametersParam;
     this.userSuppliedTag = userSuppliedTagParam;
 }
コード例 #22
0
ファイル: Callback.cs プロジェクト: superliujian/Sxta
 public RemoveObjectInstanceCallback(IFederateAmbassador federate, ILogicalTime time, IObjectInstanceHandle theObjectParam, byte[] userSuppliedTagParam, OrderType sentOrderingParam)
     : base(federate, time)
 {
     this.theObject = theObjectParam;
     this.userSuppliedTag = userSuppliedTagParam;
     this.sentOrdering = sentOrderingParam;
 }
コード例 #23
0
ファイル: Callback.cs プロジェクト: superliujian/Sxta
 public ReflectAttributeValuesCallback(IFederateAmbassador federate, ILogicalTime time, IObjectInstanceHandle theObjectParam, IAttributeHandleValueMap theAttributesParam, byte[] userSuppliedTagParam)
     : base(federate, time)
 {
     this.theObject = theObjectParam;
     this.theAttributes = theAttributesParam;
     this.userSuppliedTag = userSuppliedTagParam;
 }
コード例 #24
0
ファイル: Callback.cs プロジェクト: agustinsantos/Sxta
 public TimeRegulationEnabledCallback(IFederateAmbassador federate, ILogicalTime time, ILogicalTime timeParam)
     : base(federate, time)
 {
     this.timeParam = timeParam;
 }
コード例 #25
0
ファイル: Callback.cs プロジェクト: superliujian/Sxta
 public ReflectAttributeValuesExtCallback(IFederateAmbassador federate, ILogicalTime time, long federateHandle, long interactionIndex, IObjectInstanceHandle theObjectParam, HLAattributeHandleValuePair[] theAttributesParam, byte[] userSuppliedTagParam)
     : base(federate, time, federateHandle, interactionIndex)
 {
     this.theObject = theObjectParam;
     this.theAttributes = theAttributesParam;
     this.userSuppliedTag = userSuppliedTagParam;
 }
コード例 #26
0
ファイル: Callback.cs プロジェクト: agustinsantos/Sxta
 public Callback(IFederateAmbassador federate)
 {
     this.federate = federate;
 }
コード例 #27
0
ファイル: Callback.cs プロジェクト: superliujian/Sxta
 public SynchronizationPointRegistrationFailedCallback(IFederateAmbassador federate, ILogicalTime time, String label, SynchronizationPointFailureReason reasonParam)
     : base(federate, time)
 {
     this.synchronizationPointLabel = label;
     this.reason = reasonParam;
 }
コード例 #28
0
ファイル: Callback.cs プロジェクト: agustinsantos/Sxta
 public Callback(IFederateAmbassador federate, ILogicalTime time)
     : this(federate)
 {
     this.time = time;
 }
コード例 #29
0
ファイル: Callback.cs プロジェクト: superliujian/Sxta
 public TimeAdvanceGrantedCallback(IFederateAmbassador federate, ILogicalTime time, ILogicalTime timeParam)
     : base(federate, time)
 {
     this.timeParam = timeParam;
 }
コード例 #30
0
ファイル: Callback.cs プロジェクト: agustinsantos/Sxta
 public Callback(IFederateAmbassador federate, ILogicalTime time, long federateHandle, long interactionIndex)
     : this(federate, time)
 {
     this.federateHandle   = federateHandle;
     this.interactionIndex = interactionIndex;
 }
コード例 #31
0
ファイル: Callback.cs プロジェクト: superliujian/Sxta
 public TimeRegulationEnabledCallback(IFederateAmbassador federate, ILogicalTime time, ILogicalTime timeParam)
     : base(federate, time)
 {
     this.timeParam = timeParam;
 }
コード例 #32
0
ファイル: Callback.cs プロジェクト: agustinsantos/Sxta
 public TimeAdvanceGrantedCallback(IFederateAmbassador federate, ILogicalTime time, ILogicalTime timeParam)
     : base(federate, time)
 {
     this.timeParam = timeParam;
 }
コード例 #33
0
ファイル: Callback.cs プロジェクト: superliujian/Sxta
 public Callback(IFederateAmbassador federate)
 {
     this.federate = federate;
 }
コード例 #34
0
        /// <summary>
        /// Joins a federation execution.
        /// </summary>
        /// <param name="federateType">a string describing the federate's role in the federation
        /// </param>
        /// <param name="federationExecutionName">the name of the federation to join
        /// </param>
        /// <param name="federateReference">the federate ambassador object
        /// </param>
        /// <param name="serviceReferences">the federate's mobile services
        /// </param>
        /// <exception cref="FederateAlreadyExecutionMember"> if the federate is already a member of
        /// an execution
        /// </exception>
        /// <exception cref="FederationExecutionDoesNotExist"> if the federation execution does not
        /// exist
        /// </exception>
        /// <exception cref="SaveInProgress"> if a save operation is in progress
        /// </exception>
        /// <exception cref="RestoreInProgress"> if a restore operation is in progress
        /// </exception>
        /// <exception cref="RTIinternalError"> if an internal error occurred in the
        /// run-time infrastructure
        /// </exception>
        public IFederateHandle JoinFederationExecution(string federateType,
            string federationExecutionName,
            IFederateAmbassador federateReference,
            MobileFederateServices serviceReferences)
        {
            if (!initialized)
            {
                InitializeRTI();
            }

            // TODO : + Checks if a save operation is in progress
            //        + Checks if a restore operation is in progress

            // if the federate is already a member of an execution
            if (!this.federationName.Equals(HLA_META_FEDERATION_EXECUTION))
            {
                throw new FederateAlreadyExecutionMember("joined to " + this.federationName);
            }

            // if the federation execution does not exits
            if (!federationsMap.ContainsKey(federationExecutionName))
            {
                throw new FederationExecutionDoesNotExist(federationExecutionName);
            }

            HLAfederation federation = federationsMap[federationExecutionName];

            if (serviceReferences != null)
            {
                this.logicalTimeFactory = serviceReferences._timeFactory;
                this.logicalTimeIntervalFactory = serviceReferences._intervalFactory;

                // Sets time's factory to the federation
                federation.LogicalTimeFactory = serviceReferences._timeFactory;
                federation.LogicalTimeIntervalFactory = serviceReferences._intervalFactory;

                /*
                XrtiSerializerManager serializerMngr = this.interactionManager.SerializerManager;

                Type objType = typeof(ILogicalTime);
                long handle = -1000;
                serializerMngr.RegisterSerializer(objType, handle, new ILogicalTimeXrtiSerializer(serializerMngr, logicalTimeFactory));

                objType = typeof(ILogicalTimeInterval);
                handle = -2000;
                serializerMngr.RegisterSerializer(objType, handle, new ILogicalTimeIntervalXrtiSerializer(serializerMngr, logicalTimeIntervalFactory));
                */
            }

            Sxtafederate sxtaFederate;

            try
            {
                lock (this)
                {
                    // Creates the federate;
                    this.federate = Sxtafederate.NewSxtafederate();

                    sxtaFederate = this.federate as Sxtafederate;

                    // Sets the federate's ambassador
                    sxtaFederate.FederateAmbassador = federateReference;

                    // Sets the federation
                    sxtaFederate.Federation = federation;

                    // Updates the federate's properties
                    sxtaFederate.HLAisJoined = true;

                    sxtaFederate.HLAfederationNameJoined = federationExecutionName;

                    federate.HLAfederateType = federateType;

                    String nameHost = Dns.GetHostName();
                    System.Net.IPHostEntry hostEntry = System.Net.Dns.GetHostEntry(nameHost);
                    sxtaFederate.HLAfederateHost = hostEntry.AddressList[0].ToString();

                    this.federateHandle = new XRTIFederateHandle();
                    federate.HLAfederateHandle = (HLAfederateHandle)this.federateHandle;
                    //federate.HLAfederateState = HLAfederateState.ActiveFederate;

                    // Init time management's properties
                    federate.HLAtimeConstrained = false;
                    federate.HLAtimeRegulating = false;
                    federate.HLAtimeManagerState = HLAtimeState.TimeGranted;

                    // TODO ANGEL: Posiblemente NO sea el lugar adecuado para inicializar
                    federate.HLAlogicalTime = logicalTimeFactory.MakeInitial();
                    federate.HLAGALT = logicalTimeFactory.MakeInitial();
                    federate.HLALITS = logicalTimeFactory.MakeFinal();
                    sxtaFederate.HLApendingTime = logicalTimeFactory.MakeInitial();

                    federate.HLAlookahead = logicalTimeIntervalFactory.MakeZero();
                }
            }
            catch (System.Exception e)
            {
                throw new RTIinternalError(e.ToString());
            }

            // Initializes Federate's State
            Lrc.LrcQueue queue = new Lrc.LrcQueue();
            state = new Lrc.LrcState(queue, sxtaFederate);
            lrc = new Lrc.Lrc(state, queue);

            // Sets federate ambassador
            this.federateAmbassador = federateReference;

            // Adds the new federate to the execution
            federation.HLAfederatesinFederation.Add(federate.HLAfederateHandle);

            this.federationHandle = federationsMap[federationExecutionName].InstanceHandle;
            this.joinedFederationExecutionHandle = ((XRTIObjectInstanceHandle)this.federationHandle).Identifier;
            this.federationName = federationExecutionName;

            // Set-up HLAobjectRoot static properties
            HLAobjectRoot.DefaultFederate = federate;
            HLAobjectRoot.DefaultFederateAmbassador = federateReference;
            HLAobjectRoot.DefaultFederationExecutionHandle = this.joinedFederationExecutionHandle;

            // Adds listeners to process federation's interactions
            FederationLowLevelManagementObjectModelInteractionListener federationLLMObjectModelInteractionListener = new FederationLowLevelManagementObjectModelInteractionListener(this, federationExecutionName);
            dispatcher.AddListener(joinedFederationExecutionHandle, federationLLMObjectModelInteractionListener);

            FederationManagementObjectModelInteractionListener federationMObjectModelInteractionListener = new FederationManagementObjectModelInteractionListener(this, federationExecutionName);
            dispatcher.AddListener(joinedFederationExecutionHandle, federationMObjectModelInteractionListener);

            PublishAndSubscribeFederationObjectClass(federation.HLAFDDID, this.joinedFederationExecutionHandle);

            Debug("Joined execution " + this.federationName + " [" + this.federationHandle + ")]");

            return this.federateHandle;
        }
コード例 #35
0
ファイル: Callback.cs プロジェクト: superliujian/Sxta
 public Callback(IFederateAmbassador federate, ILogicalTime time, long federateHandle, long interactionIndex)
     : this(federate, time)
 {
     this.federateHandle = federateHandle;
     this.interactionIndex = interactionIndex;
 }
コード例 #36
0
        /// <summary>
        /// Joins a federation execution.
        /// </summary>
        /// <param name="federateType">a string describing the federate's role in the federation
        /// </param>
        /// <param name="federationExecutionName">the name of the federation to join
        /// </param>
        /// <param name="federateReference">the federate ambassador object
        /// </param>
        /// <param name="serviceReferences">the federate's mobile services
        /// </param>
        /// <exception cref="FederateAlreadyExecutionMember"> if the federate is already a member of
        /// an execution
        /// </exception>
        /// <exception cref="FederationExecutionDoesNotExist"> if the federation execution does not
        /// exist
        /// </exception>
        /// <exception cref="SaveInProgress"> if a save operation is in progress
        /// </exception>
        /// <exception cref="RestoreInProgress"> if a restore operation is in progress
        /// </exception>
        /// <exception cref="RTIinternalError"> if an internal error occurred in the
        /// run-time infrastructure
        /// </exception>
        public IFederateHandle JoinFederationExecution(string federateType,
                                                       string federationExecutionName,
                                                       IFederateAmbassador federateReference,
                                                       MobileFederateServices serviceReferences)
        {
            if (!initialized)
            {
                InitializeRTI();
            }

            // TODO : + Checks if a save operation is in progress
            //        + Checks if a restore operation is in progress

            // if the federate is already a member of an execution
            if (!this.federationName.Equals(HLA_META_FEDERATION_EXECUTION))
            {
                throw new FederateAlreadyExecutionMember("joined to " + this.federationName);
            }

            // if the federation execution does not exits
            if (!federationsMap.ContainsKey(federationExecutionName))
            {
                throw new FederationExecutionDoesNotExist(federationExecutionName);
            }

            HLAfederation federation = federationsMap[federationExecutionName];

            if (serviceReferences != null)
            {
                this.logicalTimeFactory         = serviceReferences._timeFactory;
                this.logicalTimeIntervalFactory = serviceReferences._intervalFactory;

                // Sets time's factory to the federation
                federation.LogicalTimeFactory         = serviceReferences._timeFactory;
                federation.LogicalTimeIntervalFactory = serviceReferences._intervalFactory;

                /*
                 * XrtiSerializerManager serializerMngr = this.interactionManager.SerializerManager;
                 *
                 * Type objType = typeof(ILogicalTime);
                 * long handle = -1000;
                 * serializerMngr.RegisterSerializer(objType, handle, new ILogicalTimeXrtiSerializer(serializerMngr, logicalTimeFactory));
                 *
                 * objType = typeof(ILogicalTimeInterval);
                 * handle = -2000;
                 * serializerMngr.RegisterSerializer(objType, handle, new ILogicalTimeIntervalXrtiSerializer(serializerMngr, logicalTimeIntervalFactory));
                 */
            }

            Sxtafederate sxtaFederate;

            try
            {
                lock (this)
                {
                    // Creates the federate;
                    this.federate = Sxtafederate.NewSxtafederate();

                    sxtaFederate = this.federate as Sxtafederate;

                    // Sets the federate's ambassador
                    sxtaFederate.FederateAmbassador = federateReference;

                    // Sets the federation
                    sxtaFederate.Federation = federation;

                    // Updates the federate's properties
                    sxtaFederate.HLAisJoined = true;

                    sxtaFederate.HLAfederationNameJoined = federationExecutionName;

                    federate.HLAfederateType = federateType;

                    String nameHost = Dns.GetHostName();
                    System.Net.IPHostEntry hostEntry = System.Net.Dns.GetHostEntry(nameHost);
                    sxtaFederate.HLAfederateHost = hostEntry.AddressList[0].ToString();

                    this.federateHandle        = new XRTIFederateHandle();
                    federate.HLAfederateHandle = (HLAfederateHandle)this.federateHandle;
                    //federate.HLAfederateState = HLAfederateState.ActiveFederate;

                    // Init time management's properties
                    federate.HLAtimeConstrained  = false;
                    federate.HLAtimeRegulating   = false;
                    federate.HLAtimeManagerState = HLAtimeState.TimeGranted;

                    // TODO ANGEL: Posiblemente NO sea el lugar adecuado para inicializar
                    federate.HLAlogicalTime     = logicalTimeFactory.MakeInitial();
                    federate.HLAGALT            = logicalTimeFactory.MakeInitial();
                    federate.HLALITS            = logicalTimeFactory.MakeFinal();
                    sxtaFederate.HLApendingTime = logicalTimeFactory.MakeInitial();

                    federate.HLAlookahead = logicalTimeIntervalFactory.MakeZero();
                }
            }
            catch (System.Exception e)
            {
                throw new RTIinternalError(e.ToString());
            }

            // Initializes Federate's State
            Lrc.LrcQueue queue = new Lrc.LrcQueue();
            state = new Lrc.LrcState(queue, sxtaFederate);
            lrc   = new Lrc.Lrc(state, queue);

            // Sets federate ambassador
            this.federateAmbassador = federateReference;

            // Adds the new federate to the execution
            federation.HLAfederatesinFederation.Add(federate.HLAfederateHandle);

            this.federationHandle = federationsMap[federationExecutionName].InstanceHandle;
            this.joinedFederationExecutionHandle = ((XRTIObjectInstanceHandle)this.federationHandle).Identifier;
            this.federationName = federationExecutionName;

            // Set-up HLAobjectRoot static properties
            HLAobjectRoot.DefaultFederate                  = federate;
            HLAobjectRoot.DefaultFederateAmbassador        = federateReference;
            HLAobjectRoot.DefaultFederationExecutionHandle = this.joinedFederationExecutionHandle;

            // Adds listeners to process federation's interactions
            FederationLowLevelManagementObjectModelInteractionListener federationLLMObjectModelInteractionListener = new FederationLowLevelManagementObjectModelInteractionListener(this, federationExecutionName);

            dispatcher.AddListener(joinedFederationExecutionHandle, federationLLMObjectModelInteractionListener);

            FederationManagementObjectModelInteractionListener federationMObjectModelInteractionListener = new FederationManagementObjectModelInteractionListener(this, federationExecutionName);

            dispatcher.AddListener(joinedFederationExecutionHandle, federationMObjectModelInteractionListener);

            PublishAndSubscribeFederationObjectClass(federation.HLAFDDID, this.joinedFederationExecutionHandle);

            Debug("Joined execution " + this.federationName + " [" + this.federationHandle + ")]");

            return(this.federateHandle);
        }