certi-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[certi-cvs] applications/PyHLA .cvsignore doc/.cvsignore do...


From: certi-cvs
Subject: [certi-cvs] applications/PyHLA .cvsignore doc/.cvsignore do...
Date: Thu, 09 Oct 2008 16:50:59 +0000

CVSROOT:        /sources/certi
Module name:    applications
Changes by:     Petr Gotthard <gotthardp>       08/10/09 16:50:58

Modified files:
        PyHLA          : .cvsignore 
        PyHLA/doc      : .cvsignore PyHLA.tex 
        PyHLA/doc/rti  : rtiambassador.tex 
        PyHLA/hla/_rti : handles.cpp handles.h module.h 
                         rtiambassador.cpp 

Log message:
        Final commit. All RTI Ambassador services are now implemented.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/applications/PyHLA/.cvsignore?cvsroot=certi&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/applications/PyHLA/doc/.cvsignore?cvsroot=certi&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/applications/PyHLA/doc/PyHLA.tex?cvsroot=certi&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/applications/PyHLA/doc/rti/rtiambassador.tex?cvsroot=certi&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/applications/PyHLA/hla/_rti/handles.cpp?cvsroot=certi&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/applications/PyHLA/hla/_rti/handles.h?cvsroot=certi&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/applications/PyHLA/hla/_rti/module.h?cvsroot=certi&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/applications/PyHLA/hla/_rti/rtiambassador.cpp?cvsroot=certi&r1=1.2&r2=1.3

Patches:
Index: .cvsignore
===================================================================
RCS file: /sources/certi/applications/PyHLA/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- .cvsignore  25 Sep 2008 17:17:26 -0000      1.1
+++ .cvsignore  9 Oct 2008 16:50:58 -0000       1.2
@@ -1,5 +1,12 @@
 Makefile
 CMakeFiles
+_CPack_Packages
 cmake_install.cmake
+install_manifest*.txt
 CMakeCache.txt
+CPackConfig.cmake
+CPackSourceConfig.cmake
 *.pyc
+*.rpm
+*.zip
+*.gz

Index: doc/.cvsignore
===================================================================
RCS file: /sources/certi/applications/PyHLA/doc/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- doc/.cvsignore      30 Sep 2008 12:44:13 -0000      1.1
+++ doc/.cvsignore      9 Oct 2008 16:50:58 -0000       1.2
@@ -1,4 +1,5 @@
 Makefile
 CMakeFiles
 cmake_install.cmake
+PyHLA.dvi
 PyHLA.pdf

Index: doc/PyHLA.tex
===================================================================
RCS file: /sources/certi/applications/PyHLA/doc/PyHLA.tex,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- doc/PyHLA.tex       3 Oct 2008 15:28:16 -0000       1.4
+++ doc/PyHLA.tex       9 Oct 2008 16:50:58 -0000       1.5
@@ -1,10 +1,29 @@
-\documentclass{howto}
+\documentclass[12pt,a4paper]{howto}
+% Download msc.sty from http://satoss.uni.lu/mscpackage
+\usepackage{msc}
+
+\newenvironment{hlamsc}[1]{
+\begin{figure}[h]
+\centering
+\pagecolor{white}
+\begin{msc}{#1}
+\drawframe{no}
+\setmscvalues{small}
+\setlength{\instdist}{4.5cm}
+\setlength{\bottomfootdist}{0cm}
+}{
+\end{msc}
+\textcolor{white}{.} % workaround for the msc.sty clipping error
+\end{figure}
+}
 
 \title{Using M\&S HLA in Python}
 \release{0.1}
 
 \author{Petr Gotthard}
address@hidden
+\authoraddress{petr.gotthard at centrum.cz}
+
+\makeindex
 
 \begin{document}
 \maketitle
@@ -172,6 +191,7 @@
       self.discoveredEntities[name] = MyAircraft()
 \end{verbatim}
 
+\input{PyHLA.ind}
 \end{document}
 
-% $Id: PyHLA.tex,v 1.4 2008/10/03 15:28:16 gotthardp Exp $
+% $Id: PyHLA.tex,v 1.5 2008/10/09 16:50:58 gotthardp Exp $

Index: doc/rti/rtiambassador.tex
===================================================================
RCS file: /sources/certi/applications/PyHLA/doc/rti/rtiambassador.tex,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- doc/rti/rtiambassador.tex   2 Oct 2008 10:04:36 -0000       1.3
+++ doc/rti/rtiambassador.tex   9 Oct 2008 16:50:58 -0000       1.4
@@ -8,8 +8,32 @@
 rtia.joinFederationExecution("python-01", "MyFederation", fed)
 \end{verbatim}
 
-\medskip
-\strong{Federation Management Services}
+\begin{hlamsc}{Federation Management}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{createFederationExecution}{m1}{m2}
+\nextlevel
+\mess{joinFederationExecution}{m1}{m2}
+\nextlevel
+\mess{joinFederationExecution}{m3}{m2}
+\nextlevel
+\inlinestart{e1}{seq}{m1}{m3}
+\nextlevel
+\mess{tick}{m3}{m2}
+\nextlevel
+\mess{tick}{m1}{m2}
+\nextlevel
+\inlineend{e1}
+\nextlevel
+\mess{resignFederationExecution}{m3}{m2}
+\nextlevel
+\mess{resignFederationExecution}{m1}{m2}
+\nextlevel
+\mess{destroyFederationExecution}{m1}{m2}
+\nextlevel
+\end{hlamsc}
 
 \begin{methoddesc}{createFederationExecution}{executionName, FED}
 
@@ -59,111 +83,106 @@
 \exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{registerFederationSynchronizationPoint}{label, tag}
-
-May raise
-\exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
-\end{methoddesc}
-
-\begin{methoddesc}{registerFederationSynchronizationPoint}{label, tag, 
(federate)}
-
-May raise
-\exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
-\end{methoddesc}
-
-\begin{methoddesc}{synchronizationPointAchieved}{label}
+\begin{methoddesc}{enableAsynchronousDelivery}{}
 
 May raise
-\exception{SynchronizationPointLabelWasNotAnnounced},
+\exception{AsynchronousDeliveryAlreadyEnabled},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{requestFederationSave}{label, time}
+\begin{methoddesc}{disableAsynchronousDelivery}{}
 
 May raise
-\exception{FederationTimeAlreadyPassed},
-\exception{InvalidFederationTime},
+\exception{AsynchronousDeliveryAlreadyDisabled},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{requestFederationSave}{label}
+\begin{methoddesc}{tick}{\optional{minimum, maximum}}
+Returns True or False.
 
 May raise
-\exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
+\exception{SpecifiedSaveLabelDoesNotExist},
+\exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{federateSaveBegun}{}
+\begin{hlamsc}{Object Declaration}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{getObjectClassHandle}{m1}{m2}
+\nextlevel
+\mess{getAttributeHandle}{m1}{m2}
+\nextlevel
+\mess{publishObjectClass}{m1}{m2}
+\nextlevel
+\mess{subscribeObjectClassAttributes}{m3}{m2}
+\nextlevel
+\mess{startRegistrationForObjectClass}{m2}{m1}
+\nextlevel
+\condition{simulation active}{m1,m2,m3}
+\nextlevel[3]
+\mess{unsubscribeObjectClass}{m3}{m2}
+\nextlevel
+\mess{stopRegistrationForObjectClass}{m2}{m1}
+\nextlevel
+\mess{unpublishObjectClass}{m1}{m2}
+\nextlevel
+\end{hlamsc}
 
-May raise
-\exception{SaveNotInitiated},
-\exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{RestoreInProgress}.
-\end{methoddesc}
+\begin{methoddesc}{getObjectClassHandle}{objectName}
+Returns object class handle.
 
-\begin{methoddesc}{federateSaveComplete}{}
+\begin{verbatim} 
+aircraftHandle = rtia.getObjectClassHandle("Aircraft")
+\end{verbatim}
 
 May raise
-\exception{SaveNotInitiated},
+\exception{NameNotFound},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{RestoreInProgress}.
+\exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{federateSaveNotComplete}{}
+\begin{methoddesc}{getObjectClassName}{objectClass}
+Returns object class name.
 
 May raise
-\exception{SaveNotInitiated},
+\exception{ObjectClassNotDefined},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{RestoreInProgress}.
+\exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{requestFederationRestore}{label}
-
-May raise
-\exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
-\end{methoddesc}
+\begin{methoddesc}{getAttributeHandle}{attributeName, objectClass}
+Returns class attribute handle.
 
-\begin{methoddesc}{federateRestoreComplete}{}
+\begin{verbatim} 
+aircraftHandle = rtia.getObjectClassHandle("Aircraft")
+wordLocationHandle = rtia.getAttributeHandle("WorldLocation", aircraftHandle)
+\end{verbatim}
 
 May raise
-\exception{RestoreNotRequested},
+\exception{ObjectClassNotDefined},
+\exception{NameNotFound},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress}.
+\exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{federateRestoreNotComplete}{}
+\begin{methoddesc}{getAttributeName}{attribute, objectClass}
+Returns class attribute name.
 
 May raise
-\exception{RestoreNotRequested},
+\exception{ObjectClassNotDefined},
+\exception{AttributeNotDefined},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress}.
+\exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\medskip
-\strong{Declaration Management Services}
-
 \begin{methoddesc}{publishObjectClass}{objectClass, (attribute)}
 
 \begin{verbatim} 
@@ -193,27 +212,6 @@
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{publishInteractionClass}{interactionClass}
-
-May raise
-\exception{InteractionClassNotDefined},
-\exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
-\end{methoddesc}
-
-\begin{methoddesc}{unpublishInteractionClass}{interactionClass}
-
-May raise
-\exception{InteractionClassNotDefined},
-\exception{InteractionClassNotPublished},
-\exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
-\end{methoddesc}
-
 \begin{methoddesc}{subscribeObjectClassAttributes}{objectClass, (attribute), 
active=True}
 
 \begin{verbatim} 
@@ -241,30 +239,24 @@
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{subscribeInteractionClass}{interactionClass, active=True}
-
-May raise
-\exception{InteractionClassNotDefined},
-\exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{FederateLoggingServiceCalls},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
-\end{methoddesc}
-
-\begin{methoddesc}{unsubscribeInteractionClass}{interactionClass}
-
-May raise
-\exception{InteractionClassNotDefined},
-\exception{InteractionClassNotSubscribed},
-\exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
-\end{methoddesc}
-
-\medskip
-\strong{Object Management Services}
+\begin{hlamsc}{Object Management}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{registerObjectInstance}{m1}{m2}
+\nextlevel
+\mess{discoverObjectInstance}{m2}{m3}
+\nextlevel
+\mess{turnUpdatesOnForObjectInstance}{m2}{m1}
+\nextlevel
+\condition{simulation active}{m1,m2,m3}
+\nextlevel[3]
+\mess{deleteObjectInstance}{m1}{m2}
+\nextlevel
+\mess{removeObjectInstance}{m2}{m3}
+\nextlevel
+\end{hlamsc}
 
 \begin{methoddesc}{registerObjectInstance}{objectClass\optional{, objectName}}
 
@@ -280,20 +272,13 @@
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{updateAttributeValues}{object, \{attribute:value\}, 
tag\optional{, time}}
+\begin{methoddesc}{deleteObjectInstance}{object, tag\optional{, time}}
 
 Returns eventRetraction handle.
 
-\begin{verbatim} 
-rtia.updateAttributeValues(thisObject,
-    {wordLocationHandle:fom.WorldLocationStruct.pack({"X":1,"Y":2,"Z":3})},
-    "update")
-\end{verbatim}
-
 May raise
 \exception{ObjectNotKnown},
-\exception{AttributeNotDefined},
-\exception{AttributeNotOwned},
+\exception{DeletePrivilegeNotHeld},
 \exception{InvalidFederationTime},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
@@ -301,64 +286,68 @@
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{sendInteraction}{interactionClass, \{parameter:value\}, 
tag\optional{, time}}
-
-Returns eventRetraction handle.
+\begin{methoddesc}{localDeleteObjectInstance}{object}
 
 May raise
-\exception{InteractionClassNotDefined},
-\exception{InteractionClassNotPublished},
-\exception{InteractionParameterNotDefined},
-\exception{InvalidFederationTime},
+\exception{ObjectNotKnown},
+\exception{FederateOwnsAttributes},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{deleteObjectInstance}{object, tag\optional{, time}}
-
-Returns eventRetraction handle.
+\begin{methoddesc}{getObjectClass}{object}
+Returns object class handle.
 
 May raise
 \exception{ObjectNotKnown},
-\exception{DeletePrivilegeNotHeld},
-\exception{InvalidFederationTime},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
+\exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{localDeleteObjectInstance}{object}
+\begin{methoddesc}{getObjectInstanceHandle}{objectName}
+Returns object handle.
 
 May raise
 \exception{ObjectNotKnown},
-\exception{FederateOwnsAttributes},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
+\exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{changeAttributeTransportationType}{object, (attribute), 
transportation}
+\begin{methoddesc}{getObjectInstanceName}{object}
+Returns object name.
 
 May raise
 \exception{ObjectNotKnown},
-\exception{AttributeNotDefined},
-\exception{AttributeNotOwned},
+\exception{FederateNotExecutionMember},
+\exception{ConcurrentAccessAttempted}.
+\end{methoddesc}
+
+\begin{methoddesc}{getTransportationHandle}{transportationName}
+Returns transportation type handle.
+
+May raise
+\exception{NameNotFound},
+\exception{FederateNotExecutionMember},
+\exception{ConcurrentAccessAttempted}.
+\end{methoddesc}
+
+\begin{methoddesc}{getTransportationName}{transportation}
+Returns transportation type name.
+
+May raise
 \exception{InvalidTransportationHandle},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
+\exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{changeInteractionTransportationType}{interactionClass, 
transportation}
+\begin{methoddesc}{changeAttributeTransportationType}{object, (attribute), 
transportation}
 
 May raise
-\exception{InteractionClassNotDefined},
-\exception{InteractionClassNotPublished},
+\exception{ObjectNotKnown},
+\exception{AttributeNotDefined},
+\exception{AttributeNotOwned},
 \exception{InvalidTransportationHandle},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
@@ -366,6 +355,25 @@
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
+\begin{hlamsc}{Object Update}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{requestClassAttributeValueUpdate}{m3}{m2}
+\nextlevel
+\mess{provideAttributeValueUpdate}{m2}{m1}
+\nextlevel
+\mess{requestObjectAttributeValueUpdate}{m3}{m2}
+\nextlevel
+\mess{provideAttributeValueUpdate}{m2}{m1}
+\nextlevel[2]
+\mess{updateAttributeValues}{m1}{m2}
+\nextlevel
+\mess{reflectAttributeValues}{m2}{m3}
+\nextlevel
+\end{hlamsc}
+
 \begin{methoddesc}{requestObjectAttributeValueUpdate}{object, (attribute)}
 
 May raise
@@ -388,269 +396,350 @@
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\medskip
-\strong{Ownership Management Services}
+\begin{methoddesc}{updateAttributeValues}{object, \{attribute:value\}, 
tag\optional{, time}}
 
-\begin{methoddesc}{unconditionalAttributeOwnershipDivestiture}{object, 
(attribute)}
+Returns eventRetraction handle.
+
+\begin{verbatim} 
+rtia.updateAttributeValues(thisObject,
+    {wordLocationHandle:fom.WorldLocationStruct.pack({"X":1,"Y":2,"Z":3})},
+    "update")
+\end{verbatim}
 
 May raise
 \exception{ObjectNotKnown},
 \exception{AttributeNotDefined},
 \exception{AttributeNotOwned},
+\exception{InvalidFederationTime},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{negotiatedAttributeOwnershipDivestiture}{object, 
(attributes), tag}
+\begin{hlamsc}{Interaction Declaration}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{getInteractionClassHandle}{m1}{m2}
+\nextlevel
+\mess{publishInteractionClass}{m1}{m2}
+\nextlevel
+\mess{subscribeInteractionClass}{m3}{m2}
+\nextlevel
+\mess{turnInteractionsOn}{m2}{m1}
+\nextlevel
+\condition{simulation active}{m1,m2,m3}
+\nextlevel[3]
+\mess{unsubscribeInteractionClass}{m3}{m2}
+\nextlevel
+\mess{turnInteractionsOff}{m2}{m1}
+\nextlevel
+\mess{unpublishInteractionClass}{m1}{m2}
+\nextlevel
+\end{hlamsc}
+
+\begin{methoddesc}{getInteractionClassHandle}{interactionName}
+Returns interaction class handle.
 
 May raise
-\exception{ObjectNotKnown},
-\exception{AttributeNotDefined},
-\exception{AttributeNotOwned},
-\exception{AttributeAlreadyBeingDivested},
+\exception{NameNotFound},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
+\exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{attributeOwnershipAcquisition}{object, (attribute), tag}
+\begin{methoddesc}{getInteractionClassName}{interactionClass}
+Returns interaction class name.
 
 May raise
-\exception{ObjectNotKnown},
-\exception{ObjectClassNotPublished},
-\exception{AttributeNotDefined},
-\exception{AttributeNotPublished},
-\exception{FederateOwnsAttributes},
+\exception{InteractionClassNotDefined},
+\exception{FederateNotExecutionMember},
+\exception{ConcurrentAccessAttempted}.
+\end{methoddesc}
+
+\begin{methoddesc}{publishInteractionClass}{interactionClass}
+
+May raise
+\exception{InteractionClassNotDefined},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{attributeOwnershipAcquisitionIfAvailable}{object, 
(attribute)}
+\begin{methoddesc}{unpublishInteractionClass}{interactionClass}
 
 May raise
-\exception{ObjectNotKnown},
-\exception{ObjectClassNotPublished},
-\exception{AttributeNotDefined},
-\exception{AttributeNotPublished},
-\exception{FederateOwnsAttributes},
-\exception{AttributeAlreadyBeingAcquired},
+\exception{InteractionClassNotDefined},
+\exception{InteractionClassNotPublished},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{attributeOwnershipReleaseResponse}{object, (attribute)}
-
-Returns a sequence of attribute handles.
+\begin{methoddesc}{subscribeInteractionClass}{interactionClass, active=True}
 
 May raise
-\exception{ObjectNotKnown},
-\exception{AttributeNotDefined},
-\exception{AttributeNotOwned},
-\exception{FederateWasNotAskedToReleaseAttribute},
+\exception{InteractionClassNotDefined},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
+\exception{FederateLoggingServiceCalls},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{cancelNegotiatedAttributeOwnershipDivestiture}{object, 
(attribute)}
+\begin{methoddesc}{unsubscribeInteractionClass}{interactionClass}
 
 May raise
-\exception{ObjectNotKnown},
-\exception{AttributeNotDefined},
-\exception{AttributeNotOwned},
-\exception{AttributeDivestitureWasNotRequested},
+\exception{InteractionClassNotDefined},
+\exception{InteractionClassNotSubscribed},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{cancelAttributeOwnershipAcquisition}{object, (attribute)}
+\begin{hlamsc}{Exchanging Interactions}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{getParameterHandle}{m1}{m2}
+\nextlevel
+\mess{sendInteraction}{m1}{m2}
+\nextlevel
+\mess{receiveInteraction}{m2}{m3}
+\nextlevel
+\end{hlamsc}
+
+\begin{methoddesc}{getParameterHandle}{parameterName, interactionClass}
+Returns interaction parameter handle.
 
 May raise
-\exception{ObjectNotKnown},
-\exception{AttributeNotDefined},
-\exception{AttributeAlreadyOwned},
-\exception{AttributeAcquisitionWasNotRequested},
+\exception{InteractionClassNotDefined},
+\exception{NameNotFound},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
+\exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{queryAttributeOwnership}{object, attribute}
+\begin{methoddesc}{getParameterName}{parameter, interactionClass}
+Returns interaction parameter name.
 
 May raise
-\exception{ObjectNotKnown},
-\exception{AttributeNotDefined},
+\exception{InteractionClassNotDefined},
+\exception{InteractionParameterNotDefined},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
+\exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{isAttributeOwnedByFederate}{object, attribute}
+\begin{methoddesc}{sendInteraction}{interactionClass, \{parameter:value\}, 
tag\optional{, time}}
 
-Returns True or False.
+Returns eventRetraction handle.
 
 May raise
-\exception{ObjectNotKnown},
-\exception{AttributeNotDefined},
+\exception{InteractionClassNotDefined},
+\exception{InteractionClassNotPublished},
+\exception{InteractionParameterNotDefined},
+\exception{InvalidFederationTime},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\medskip
-\strong{Time Management Services}
-
-\begin{methoddesc}{enableTimeRegulation}{federateTime, lookahead}
+\begin{methoddesc}{changeInteractionTransportationType}{interactionClass, 
transportation}
 
 May raise
-\exception{TimeRegulationAlreadyEnabled},
-\exception{EnableTimeRegulationPending},
-\exception{TimeAdvanceAlreadyInProgress},
-\exception{InvalidFederationTime},
-\exception{InvalidLookahead},
-\exception{ConcurrentAccessAttempted},
+\exception{InteractionClassNotDefined},
+\exception{InteractionClassNotPublished},
+\exception{InvalidTransportationHandle},
 \exception{FederateNotExecutionMember},
+\exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{disableTimeRegulation}{}
+\begin{hlamsc}{Region Creation}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{getRoutingSpaceHandle}{m1}{m2}
+\nextlevel
+\mess{getDimensionHandle}{m1}{m2}
+\nextlevel
+\mess{createRegion}{m1}{m2}
+\nextlevel
+\mess{createRegion}{m3}{m2}
+\nextlevel
+\mess{notifyAboutRegionModification}{m1}{m2}
+\nextlevel
+\mess{notifyAboutRegionModification}{m3}{m2}
+\nextlevel
+\condition{simulation active}{m1,m2,m3}
+\nextlevel[3]
+\mess{deleteRegion}{m1}{m2}
+\nextlevel
+\mess{deleteRegion}{m3}{m2}
+\nextlevel
+\end{hlamsc}
+
+\begin{methoddesc}{getRoutingSpaceHandle}{spaceName}
+Returns routing space handle.
 
 May raise
-\exception{TimeRegulationWasNotEnabled},
-\exception{ConcurrentAccessAttempted},
+\exception{NameNotFound},
 \exception{FederateNotExecutionMember},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
+\exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{enableTimeConstrained}{}
+\begin{methoddesc}{getRoutingSpaceName}{space}
+Returns routing space name.
 
 May raise
-\exception{TimeConstrainedAlreadyEnabled},
-\exception{EnableTimeConstrainedPending},
-\exception{TimeAdvanceAlreadyInProgress},
+\exception{SpaceNotDefined},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
+\exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{disableTimeConstrained}{}
+\begin{methoddesc}{getDimensionHandle}{dimensionName, space}
+Returns routing space dimension handle.
 
 May raise
-\exception{TimeConstrainedWasNotEnabled},
+\exception{SpaceNotDefined},
+\exception{NameNotFound},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
+\exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{timeAdvanceRequest}{time}
+\begin{methoddesc}{getDimensionName}{dimension, space}
+Returns routing space dimension name.
 
 May raise
-\exception{InvalidFederationTime},
-\exception{FederationTimeAlreadyPassed},
-\exception{TimeAdvanceAlreadyInProgress},
-\exception{EnableTimeRegulationPending},
-\exception{EnableTimeConstrainedPending},
+\exception{SpaceNotDefined},
+\exception{DimensionNotDefined},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
+\exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{timeAdvanceRequestAvailable}{time}
+\begin{methoddesc}{createRegion}{space, [dimension, (upper, lower)]}
+
+Returns region handle.
 
 May raise
-\exception{InvalidFederationTime},
-\exception{FederationTimeAlreadyPassed},
-\exception{TimeAdvanceAlreadyInProgress},
-\exception{EnableTimeRegulationPending},
-\exception{EnableTimeConstrainedPending},
+\exception{SpaceNotDefined},
+\exception{InvalidExtents},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{nextEventRequest}{time}
+\begin{methoddesc}{notifyAboutRegionModification}{region}
 
 May raise
-\exception{InvalidFederationTime},
-\exception{FederationTimeAlreadyPassed},
-\exception{TimeAdvanceAlreadyInProgress},
-\exception{EnableTimeRegulationPending},
-\exception{EnableTimeConstrainedPending},
+\exception{RegionNotKnown},
+\exception{InvalidExtents},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{nextEventRequestAvailable}{time}
+\begin{methoddesc}{deleteRegion}{region}
 
 May raise
-\exception{InvalidFederationTime},
-\exception{FederationTimeAlreadyPassed},
-\exception{TimeAdvanceAlreadyInProgress},
-\exception{EnableTimeRegulationPending},
-\exception{EnableTimeConstrainedPending},
+\exception{RegionNotKnown},
+\exception{RegionInUse},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{flushQueueRequest}{time}
+\begin{hlamsc}{Object Management With Regions}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{publishObjectClass}{m1}{m2}
+\nextlevel
+\mess{subscribeObjectClassAttributesWithRegion}{m3}{m2}
+\nextlevel
+\mess{startRegistrationForObjectClass}{m2}{m1}
+\nextlevel[2]
+\mess{enableAttributeRelevanceAdvisorySwitch}{m1}{m2}
+\nextlevel
+\mess{enableAttributeScopeAdvisorySwitch}{m3}{m2}
+\nextlevel[2]
+\mess{registerObjectInstanceWithRegion}{m1}{m2}
+\nextlevel
+\mess{discoverObjectInstance}{m2}{m3}
+\nextlevel
+\mess{turnUpdatesOnForObjectInstance}{m2}{m1}
+\mess{attributesInScope}{m2}{m3}
+\nextlevel
+\inlinestart{e1}{seq}{m1}{m3}
+\nextlevel
+\mess{requestClassAttributeValueUpdateWithRegion}{m3}{m2}
+\nextlevel
+\mess{provideAttributeValueUpdate}{m2}{m1}
+\nextlevel
+\mess{updateAttributeValues}{m1}{m2}
+\nextlevel
+\mess{reflectAttributeValues}{m2}{m3}
+\nextlevel
+\inlineend{e1}
+\nextlevel
+\mess{unsubscribeObjectClassWithRegion}{m3}{m2}
+\nextlevel
+\mess{stopRegistrationForObjectClass}{m2}{m1}
+\nextlevel
+\mess{turnUpdatesOffForObjectInstance}{m2}{m1}
+\nextlevel[2]
+\mess{deleteObjectInstance}{m1}{m2}
+\nextlevel
+\mess{removeObjectInstance}{m2}{m3}
+\nextlevel
+\end{hlamsc}
+
+\begin{methoddesc}{subscribeObjectClassAttributesWithRegion}{objectClass, 
region, (attribute), active=True}
 
 May raise
-\exception{InvalidFederationTime},
-\exception{FederationTimeAlreadyPassed},
-\exception{TimeAdvanceAlreadyInProgress},
-\exception{EnableTimeRegulationPending},
-\exception{EnableTimeConstrainedPending},
+\exception{ObjectClassNotDefined},
+\exception{AttributeNotDefined},
+\exception{RegionNotKnown},
+\exception{InvalidRegionContext},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{enableAsynchronousDelivery}{}
+\begin{methoddesc}{unsubscribeObjectClassWithRegion}{objectClass, region}
 
 May raise
-\exception{AsynchronousDeliveryAlreadyEnabled},
+\exception{ObjectClassNotDefined},
+\exception{RegionNotKnown},
+\exception{ObjectClassNotSubscribed},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{disableAsynchronousDelivery}{}
+\begin{methoddesc}{enableClassRelevanceAdvisorySwitch}{}
 
 May raise
-\exception{AsynchronousDeliveryAlreadyDisabled},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{queryLBTS}{}
-Returns the time.
+\begin{methoddesc}{disableClassRelevanceAdvisorySwitch}{}
 
 May raise
 \exception{FederateNotExecutionMember},
@@ -659,8 +748,7 @@
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{queryFederateTime}{}
-Returns the time.
+\begin{methoddesc}{enableAttributeRelevanceAdvisorySwitch}{}
 
 May raise
 \exception{FederateNotExecutionMember},
@@ -669,8 +757,7 @@
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{queryMinNextEventTime}{}
-Returns the time.
+\begin{methoddesc}{disableAttributeRelevanceAdvisorySwitch}{}
 
 May raise
 \exception{FederateNotExecutionMember},
@@ -679,18 +766,16 @@
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{modifyLookahead}{lookahead}
+\begin{methoddesc}{enableAttributeScopeAdvisorySwitch}{}
 
 May raise
-\exception{InvalidLookahead},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{queryLookahead}{}
-Returns the time.
+\begin{methoddesc}{disableAttributeScopeAdvisorySwitch}{}
 
 May raise
 \exception{FederateNotExecutionMember},
@@ -699,144 +784,155 @@
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{retract}{eventRetraction}
+\begin{methoddesc}{registerObjectInstanceWithRegion}{objectClass, [(attribute, 
region)]\optional{, object}}
+
+Returns object handle.
 
 May raise
-\exception{InvalidRetractionHandle},
+\exception{ObjectClassNotDefined},
+\exception{ObjectClassNotPublished},
+\exception{AttributeNotDefined},
+\exception{AttributeNotPublished},
+\exception{RegionNotKnown},
+\exception{InvalidRegionContext},
+\exception{ObjectAlreadyRegistered},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{changeAttributeOrderType}{object, (attribute), orderingType}
+\begin{methoddesc}{associateRegionForUpdates}{region, object, (attribute)}
 
 May raise
 \exception{ObjectNotKnown},
 \exception{AttributeNotDefined},
-\exception{AttributeNotOwned},
-\exception{InvalidOrderingHandle},
+\exception{InvalidRegionContext},
+\exception{RegionNotKnown},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{changeInteractionOrderType}{interactionClass, orderingType}
+\begin{methoddesc}{unassociateRegionForUpdates}{region, object}
 
 May raise
-\exception{InteractionClassNotDefined},
-\exception{InteractionClassNotPublished},
-\exception{InvalidOrderingHandle},
+\exception{ObjectNotKnown},
+\exception{InvalidRegionContext},
+\exception{RegionNotKnown},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\medskip
-\strong{Data Distribution Management}
-
-\begin{methoddesc}{createRegion}{space, numberOfExtents}
-
-Returns region handle.
+\begin{methoddesc}{getAttributeRoutingSpaceHandle}{attribute, objectClass}
+Returns routing space handle.
 
 May raise
-\exception{SpaceNotDefined},
-\exception{InvalidExtents},
+\exception{ObjectClassNotDefined},
+\exception{AttributeNotDefined},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
+\exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{notifyAboutRegionModification}{region}
+\begin{methoddesc}{requestClassAttributeValueUpdateWithRegion}{objectClass, 
(attribute), region}
 
 May raise
+\exception{ObjectClassNotDefined},
+\exception{AttributeNotDefined},
 \exception{RegionNotKnown},
-\exception{InvalidExtents},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{deleteRegion}{region}
+\begin{hlamsc}{Exchanging Interactions With Regions}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{subscribeInteractionClassWithRegion}{m1}{m2}
+\nextlevel
+\mess{turnInteractionsOn}{m2}{m3}
+\nextlevel
+\inlinestart{e1}{seq}{m1}{m3}
+\nextlevel
+\mess{sendInteractionWithRegion}{m3}{m2}
+\nextlevel
+\mess{receiveInteraction}{m2}{m1}
+\nextlevel
+\inlineend{e1}
+\nextlevel
+\mess{unsubscribeInteractionClassWithRegion}{m1}{m2}
+\nextlevel
+\mess{turnInteractionsOff}{m2}{m3}
+\nextlevel
+\end{hlamsc}
+
+\begin{methoddesc}{subscribeInteractionClassWithRegion}{interactionClass, 
region, active=True}
 
 May raise
+\exception{InteractionClassNotDefined},
 \exception{RegionNotKnown},
-\exception{RegionInUse},
+\exception{InvalidRegionContext},
+\exception{FederateLoggingServiceCalls},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{registerObjectInstanceWithRegion}{objectClass, object, 
(attribute), (region)}
-
-Returns object handle.
+\begin{methoddesc}{unsubscribeInteractionClassWithRegion}{interactionClass, 
region}
 
 May raise
-\exception{ObjectClassNotDefined},
-\exception{ObjectClassNotPublished},
-\exception{AttributeNotDefined},
-\exception{AttributeNotPublished},
+\exception{InteractionClassNotDefined},
+\exception{InteractionClassNotSubscribed},
 \exception{RegionNotKnown},
-\exception{InvalidRegionContext},
-\exception{ObjectAlreadyRegistered},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{registerObjectInstanceWithRegion}{objectClass, (attribute), 
(region)}
-
-Returns object handle.
+\begin{methoddesc}{enableInteractionRelevanceAdvisorySwitch}{}
 
 May raise
-\exception{ObjectClassNotDefined},
-\exception{ObjectClassNotPublished},
-\exception{AttributeNotDefined},
-\exception{AttributeNotPublished},
-\exception{RegionNotKnown},
-\exception{InvalidRegionContext},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{associateRegionForUpdates}{region, object, (attribute)}
+\begin{methoddesc}{disableInteractionRelevanceAdvisorySwitch}{}
 
 May raise
-\exception{ObjectNotKnown},
-\exception{AttributeNotDefined},
-\exception{InvalidRegionContext},
-\exception{RegionNotKnown},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{unassociateRegionForUpdates}{region, object}
+\begin{methoddesc}{getInteractionRoutingSpaceHandle}{interactionClass}
+Returns routing space handle.
 
 May raise
-\exception{ObjectNotKnown},
-\exception{InvalidRegionContext},
-\exception{RegionNotKnown},
+\exception{InteractionClassNotDefined},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
-\exception{RestoreInProgress}.
+\exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{subscribeObjectClassAttributesWithRegion}{objectClass, 
region, (attribute), active=True}
+\begin{methoddesc}{sendInteractionWithRegion}{interactionClass, 
{parameter:value}, region, tag\optional{, time}}
+
+Returns eventRetraction handle.
 
 May raise
-\exception{ObjectClassNotDefined},
-\exception{AttributeNotDefined},
+\exception{InteractionClassNotDefined},
+\exception{InteractionClassNotPublished},
+\exception{InteractionParameterNotDefined},
+\exception{InvalidFederationTime},
 \exception{RegionNotKnown},
 \exception{InvalidRegionContext},
 \exception{FederateNotExecutionMember},
@@ -845,260 +941,434 @@
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{unsubscribeObjectClassWithRegion}{objectClass, region}
+\begin{hlamsc}{Ownership Push}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{negotiatedAttributeOwnershipDivestiture}{m1}{m2}
+\nextlevel
+\mess{requestAttributeOwnershipAssumption}{m2}{m3}
+\nextlevel
+\inlinestart{e1}{opt}{m1}{m2}
+\nextlevel[2]
+\mess{cancelNegotiatedAttributeOwnershipDivestiture}{m1}{m2}
+\nextlevel
+\inlineend{e1}
+\nextlevel
+\mess{attributeOwnershipAcquisition}{m3}{m2}
+\nextlevel
+\mess{attributeOwnershipDivestitureNotification}{m2}{m1}
+\nextlevel
+\mess{attributeOwnershipAcquisitionNotification}{m2}{m3}
+\nextlevel
+\end{hlamsc}
+
+\begin{methoddesc}{negotiatedAttributeOwnershipDivestiture}{object, 
(attributes), tag}
 
 May raise
-\exception{ObjectClassNotDefined},
-\exception{RegionNotKnown},
-\exception{ObjectClassNotSubscribed},
+\exception{ObjectNotKnown},
+\exception{AttributeNotDefined},
+\exception{AttributeNotOwned},
+\exception{AttributeAlreadyBeingDivested},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{subscribeInteractionClassWithRegion}{interactionClass, 
region, active=True}
+\begin{methoddesc}{unconditionalAttributeOwnershipDivestiture}{object, 
(attribute)}
 
 May raise
-\exception{InteractionClassNotDefined},
-\exception{RegionNotKnown},
-\exception{InvalidRegionContext},
-\exception{FederateLoggingServiceCalls},
+\exception{ObjectNotKnown},
+\exception{AttributeNotDefined},
+\exception{AttributeNotOwned},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{unsubscribeInteractionClassWithRegion}{interactionClass, 
region}
+\begin{methoddesc}{cancelNegotiatedAttributeOwnershipDivestiture}{object, 
(attribute)}
 
 May raise
-\exception{InteractionClassNotDefined},
-\exception{InteractionClassNotSubscribed},
-\exception{RegionNotKnown},
+\exception{ObjectNotKnown},
+\exception{AttributeNotDefined},
+\exception{AttributeNotOwned},
+\exception{AttributeDivestitureWasNotRequested},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{sendInteractionWithRegion}{interactionClass, 
{parameter:value}, tag, region\optional{, time}}
+\begin{hlamsc}{Intrusive Ownership Pull}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{attributeOwnershipAcquisition}{m1}{m2}
+\nextlevel
+\mess{requestAttributeOwnershipRelease}{m2}{m3}
+\nextlevel
+\inlinestart{e1}{opt}{m1}{m2}
+\nextlevel[2]
+\mess{cancelAttributeOwnershipAcquisition}{m1}{m2}
+\nextlevel
+\mess{ConfirmAttributeOwnershipAcquisitionCancellation}{m2}{m1}
+\nextlevel
+\inlineend{e1}
+\nextlevel
+\mess{attributeOwnershipReleaseResponse}{m3}{m2}
+\nextlevel
+\mess{attributeOwnershipAcquisitionNotification}{m2}{m1}
+\nextlevel
+\end{hlamsc}
 
-Returns eventRetraction handle.
+\begin{methoddesc}{attributeOwnershipAcquisition}{object, (attribute), tag}
 
 May raise
-\exception{InteractionClassNotDefined},
-\exception{InteractionClassNotPublished},
-\exception{InteractionParameterNotDefined},
-\exception{InvalidFederationTime},
-\exception{RegionNotKnown},
-\exception{InvalidRegionContext},
+\exception{ObjectNotKnown},
+\exception{ObjectClassNotPublished},
+\exception{AttributeNotDefined},
+\exception{AttributeNotPublished},
+\exception{FederateOwnsAttributes},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{requestClassAttributeValueUpdateWithRegion}{objectClass, 
(attribute), region}
+\begin{methoddesc}{cancelAttributeOwnershipAcquisition}{object, (attribute)}
 
 May raise
-\exception{ObjectClassNotDefined},
+\exception{ObjectNotKnown},
 \exception{AttributeNotDefined},
-\exception{RegionNotKnown},
+\exception{AttributeAlreadyOwned},
+\exception{AttributeAcquisitionWasNotRequested},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\medskip
-\strong{RTI Support Services}
-
-\begin{methoddesc}{getObjectClassHandle}{objectName}
-Returns object class handle.
+\begin{methoddesc}{attributeOwnershipReleaseResponse}{object, (attribute)}
 
-\begin{verbatim} 
-aircraftHandle = rtia.getObjectClassHandle("Aircraft")
-\end{verbatim}
+Returns a sequence of attribute handles.
 
 May raise
-\exception{NameNotFound},
+\exception{ObjectNotKnown},
+\exception{AttributeNotDefined},
+\exception{AttributeNotOwned},
+\exception{FederateWasNotAskedToReleaseAttribute},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getObjectClassName}{objectClass}
-Returns object class name.
+\begin{hlamsc}{Ownership Pull Orphaned}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{attributeOwnershipAcquisitionIfAvailable}{m1}{m2}
+\nextlevel
+\inlinestart{e1}{alt}{m1}{m2}
+\nextlevel[2]
+\mess{attributeOwnershipUnavailable}{m1}{m2}
+\nextlevel
+\inlineseparator{e1}
+\nextlevel
+\mess{attributeOwnershipAcquisitionNotification}{m1}{m2}
+\nextlevel
+\inlineend{e1}
+\end{hlamsc}
+
+\begin{methoddesc}{attributeOwnershipAcquisitionIfAvailable}{object, 
(attribute)}
 
 May raise
-\exception{ObjectClassNotDefined},
+\exception{ObjectNotKnown},
+\exception{ObjectClassNotPublished},
+\exception{AttributeNotDefined},
+\exception{AttributeNotPublished},
+\exception{FederateOwnsAttributes},
+\exception{AttributeAlreadyBeingAcquired},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getAttributeHandle}{attributeName, objectClass}
-Returns class attribute handle.
-
-\begin{verbatim} 
-aircraftHandle = rtia.getObjectClassHandle("Aircraft")
-wordLocationHandle = rtia.getAttributeHandle("WorldLocation", aircraftHandle)
-\end{verbatim}
+\begin{methoddesc}{queryAttributeOwnership}{object, attribute}
 
 May raise
-\exception{ObjectClassNotDefined},
-\exception{NameNotFound},
+\exception{ObjectNotKnown},
+\exception{AttributeNotDefined},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getAttributeName}{attribute, objectClass}
-Returns class attribute name.
+\begin{methoddesc}{isAttributeOwnedByFederate}{object, attribute}
+
+Returns True or False.
 
 May raise
-\exception{ObjectClassNotDefined},
+\exception{ObjectNotKnown},
 \exception{AttributeNotDefined},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getInteractionClassHandle}{interactionName}
-Returns interaction class handle.
+\begin{hlamsc}{Time Management Policy}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{enableTimeRegulation}{m1}{m2}
+\nextlevel
+\mess{timeRegulationEnabled}{m2}{m1}
+\nextlevel[2]
+\mess{enableTimeConstrained}{m1}{m2}
+\nextlevel
+\mess{timeConstrainedEnabled}{m2}{m1}
+\nextlevel
+\condition{regulating and constrained}{m1,m2}
+\nextlevel[3]
+\mess{disableTimeRegulation}{m1}{m2}
+\nextlevel
+\mess{disableTimeConstrained}{m1}{m2}
+\nextlevel
+\end{hlamsc}
+
+\begin{methoddesc}{enableTimeRegulation}{federateTime, lookahead}
 
 May raise
-\exception{NameNotFound},
+\exception{TimeRegulationAlreadyEnabled},
+\exception{EnableTimeRegulationPending},
+\exception{TimeAdvanceAlreadyInProgress},
+\exception{InvalidFederationTime},
+\exception{InvalidLookahead},
+\exception{ConcurrentAccessAttempted},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getInteractionClassName}{interactionClass}
-Returns interaction class name.
+\begin{methoddesc}{disableTimeRegulation}{}
 
 May raise
-\exception{InteractionClassNotDefined},
+\exception{TimeRegulationWasNotEnabled},
+\exception{ConcurrentAccessAttempted},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getParameterHandle}{parameterName, interactionClass}
-Returns interaction parameter handle.
+\begin{methoddesc}{enableTimeConstrained}{}
 
 May raise
-\exception{InteractionClassNotDefined},
-\exception{NameNotFound},
+\exception{TimeConstrainedAlreadyEnabled},
+\exception{EnableTimeConstrainedPending},
+\exception{TimeAdvanceAlreadyInProgress},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getParameterName}{parameter, interactionClass}
-Returns interaction parameter name.
+\begin{methoddesc}{disableTimeConstrained}{}
 
 May raise
-\exception{InteractionClassNotDefined},
-\exception{InteractionParameterNotDefined},
+\exception{TimeConstrainedWasNotEnabled},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getObjectInstanceHandle}{objectName}
-Returns object handle.
+\begin{hlamsc}{Time Step Advancement}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{timeAdvanceRequest}{m1}{m2}
+\nextlevel
+\mess{timeAdvanceGrant}{m2}{m1}
+\nextlevel
+\end{hlamsc}
+
+\begin{methoddesc}{timeAdvanceRequest}{time}
 
 May raise
-\exception{ObjectNotKnown},
+\exception{InvalidFederationTime},
+\exception{FederationTimeAlreadyPassed},
+\exception{TimeAdvanceAlreadyInProgress},
+\exception{EnableTimeRegulationPending},
+\exception{EnableTimeConstrainedPending},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getObjectInstanceName}{object}
-Returns object name.
+\begin{methoddesc}{timeAdvanceRequestAvailable}{time}
 
 May raise
-\exception{ObjectNotKnown},
+\exception{InvalidFederationTime},
+\exception{FederationTimeAlreadyPassed},
+\exception{TimeAdvanceAlreadyInProgress},
+\exception{EnableTimeRegulationPending},
+\exception{EnableTimeConstrainedPending},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getRoutingSpaceHandle}{spaceName}
-Returns routing space handle.
+\begin{hlamsc}{Event-Based Advancement}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{nextEventRequest}{m3}{m2}
+\nextlevel
+\mess{timeAdvanceGrant}{m2}{m3}
+\nextlevel
+\end{hlamsc}
+
+\begin{methoddesc}{nextEventRequest}{time}
 
 May raise
-\exception{NameNotFound},
+\exception{InvalidFederationTime},
+\exception{FederationTimeAlreadyPassed},
+\exception{TimeAdvanceAlreadyInProgress},
+\exception{EnableTimeRegulationPending},
+\exception{EnableTimeConstrainedPending},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getRoutingSpaceName}{space}
-Returns routing space name.
+\begin{methoddesc}{nextEventRequestAvailable}{time}
 
 May raise
-\exception{SpaceNotDefined},
+\exception{InvalidFederationTime},
+\exception{FederationTimeAlreadyPassed},
+\exception{TimeAdvanceAlreadyInProgress},
+\exception{EnableTimeRegulationPending},
+\exception{EnableTimeConstrainedPending},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getDimensionHandle}{dimensionName, space}
-Returns routing space dimension handle.
+\begin{hlamsc}{Optimistic Advancement}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{flushQueueRequest}{m3}{m2}
+\nextlevel
+\mess{timeAdvanceGrant}{m2}{m3}
+\nextlevel
+\end{hlamsc}
+
+\begin{methoddesc}{flushQueueRequest}{time}
 
 May raise
-\exception{SpaceNotDefined},
-\exception{NameNotFound},
+\exception{InvalidFederationTime},
+\exception{FederationTimeAlreadyPassed},
+\exception{TimeAdvanceAlreadyInProgress},
+\exception{EnableTimeRegulationPending},
+\exception{EnableTimeConstrainedPending},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getDimensionName}{dimension, space}
-Returns routing space dimension name.
+\begin{hlamsc}{Time Queries}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{queryFederateTime}{m1}{m2}
+\nextlevel
+\mess{queryLookahead}{m1}{m2}
+\nextlevel
+\mess{modifyLookahead}{m1}{m2}
+\nextlevel
+\mess{queryLBTS}{m1}{m2}
+\nextlevel
+\mess{queryMinNextTimeEvent}{m1}{m2}
+\nextlevel
+\end{hlamsc}
+
+\begin{methoddesc}{queryLBTS}{}
+Returns the time.
 
 May raise
-\exception{SpaceNotDefined},
-\exception{DimensionNotDefined},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getAttributeRoutingSpaceHandle}{attribute, objectClass}
-Returns routing space handle.
+\begin{methoddesc}{queryFederateTime}{}
+Returns the time.
 
 May raise
-\exception{ObjectClassNotDefined},
-\exception{AttributeNotDefined},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getObjectClass}{object}
-Returns object class handle.
+\begin{methoddesc}{queryMinNextEventTime}{}
+Returns the time.
 
 May raise
-\exception{ObjectNotKnown},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getInteractionRoutingSpaceHandle}{interactionClass}
-Returns routing space handle.
+\begin{methoddesc}{modifyLookahead}{lookahead}
 
 May raise
-\exception{InteractionClassNotDefined},
+\exception{InvalidLookahead},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getTransportationHandle}{transportationName}
-Returns transportation type handle.
+\begin{methoddesc}{queryLookahead}{}
+Returns the time.
 
 May raise
-\exception{NameNotFound},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getTransportationName}{transportation}
-Returns transportation type name.
+\begin{methoddesc}{retract}{eventRetraction}
 
 May raise
-\exception{InvalidTransportationHandle},
+\exception{InvalidRetractionHandle},
 \exception{FederateNotExecutionMember},
-\exception{ConcurrentAccessAttempted}.
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
 \begin{methoddesc}{getOrderingHandle}{orderingName}
@@ -1119,25 +1389,53 @@
 \exception{ConcurrentAccessAttempted}.
 \end{methoddesc}
 
-\begin{methoddesc}{enableClassRelevanceAdvisorySwitch}{}
+\begin{methoddesc}{changeAttributeOrderType}{object, (attribute), ordering}
 
 May raise
+\exception{ObjectNotKnown},
+\exception{AttributeNotDefined},
+\exception{AttributeNotOwned},
+\exception{InvalidOrderingHandle},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{disableClassRelevanceAdvisorySwitch}{}
+\begin{methoddesc}{changeInteractionOrderType}{interactionClass, ordering}
 
 May raise
+\exception{InteractionClassNotDefined},
+\exception{InteractionClassNotPublished},
+\exception{InvalidOrderingHandle},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{enableAttributeRelevanceAdvisorySwitch}{}
+\begin{hlamsc}{Federation Synchronization}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{registerFederationSynchronizationPoint}{m1}{m2}
+\nextlevel
+\mess{synchronizationPointRegistrationSucceeded}{m2}{m1}
+\nextlevel[2]
+\mess{announceSynchronizationPoint}{m2}{m1}
+\mess{announceSynchronizationPoint}{m2}{m3}
+\nextlevel
+\mess{synchronizationPointAchieved}{m1}{m2}
+\nextlevel
+\mess{synchronizationPointAchieved}{m3}{m2}
+\nextlevel
+\mess{federationSynchronized}{m2}{m1}
+\mess{federationSynchronized}{m2}{m3}
+\nextlevel
+\end{hlamsc}
+
+\begin{methoddesc}{registerFederationSynchronizationPoint}{label, 
tag\optional{, (federate)}}
 
 May raise
 \exception{FederateNotExecutionMember},
@@ -1146,77 +1444,127 @@
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{disableAttributeRelevanceAdvisorySwitch}{}
+\begin{methoddesc}{synchronizationPointAchieved}{label}
 
 May raise
+\exception{SynchronizationPointLabelWasNotAnnounced},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{enableAttributeScopeAdvisorySwitch}{}
+\begin{hlamsc}{Federation Save}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{requestFederationSave}{m1}{m2}
+\nextlevel
+\mess{initiateFederationSave}{m2}{m1}
+\mess{initiateFederationSave}{m2}{m3}
+\nextlevel
+\mess{federateSaveBegun}{m1}{m2}
+\nextlevel
+\mess{federateSaveBegun}{m3}{m2}
+\mess{federateSaveComplete}{m1}{m2}
+\nextlevel
+\mess{federateSaveComplete}{m3}{m2}
+\nextlevel
+\mess{federationSaved}{m2}{m1}
+\mess{federationSaved}{m2}{m3}
+\nextlevel
+\end{hlamsc}
+
+\begin{methoddesc}{requestFederationSave}{label\optional{, time}}
 
 May raise
+\exception{FederationTimeAlreadyPassed},
+\exception{InvalidFederationTime},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
 \exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{disableAttributeScopeAdvisorySwitch}{}
+\begin{methoddesc}{federateSaveBegun}{}
 
 May raise
+\exception{SaveNotInitiated},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{enableInteractionRelevanceAdvisorySwitch}{}
+\begin{methoddesc}{federateSaveComplete}{}
 
 May raise
+\exception{SaveNotInitiated},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{disableInteractionRelevanceAdvisorySwitch}{}
+\begin{methoddesc}{federateSaveNotComplete}{}
 
 May raise
+\exception{SaveNotInitiated},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
-\exception{SaveInProgress},
 \exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{tick}{\optional{minimum, maximum}}
-Returns True or False.
+\begin{hlamsc}{Federation Restore}
+\declinst{m1}{Federate}{A}
+\declinst{m2}{RTI}{}
+\declinst{m3}{Federate}{B}
+
+\mess{requestFederationRestore}{m1}{m2}
+\nextlevel
+\mess{requestFederationRestoreSucceeded}{m2}{m1}
+\nextlevel[2]
+\mess{federateRestoreBegun}{m2}{m1}
+\mess{federateRestoreBegun}{m2}{m3}
+\nextlevel
+\mess{initiateFederateRestore}{m2}{m1}
+\mess{initiateFederateRestore}{m2}{m3}
+\nextlevel
+\mess{federateRestoreComplete}{m1}{m2}
+\nextlevel
+\mess{federaterestoreComplete}{m3}{m2}
+\nextlevel
+\mess{federationRestored}{m2}{m1}
+\mess{federationRestored}{m2}{m3}
+\nextlevel
+\end{hlamsc}
+
+\begin{methoddesc}{requestFederationRestore}{label}
 
 May raise
-\exception{SpecifiedSaveLabelDoesNotExist},
-\exception{ConcurrentAccessAttempted}.
+\exception{FederateNotExecutionMember},
+\exception{ConcurrentAccessAttempted},
+\exception{SaveInProgress},
+\exception{RestoreInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getRegionToken}{region}
-Returns region token.
+\begin{methoddesc}{federateRestoreComplete}{}
 
 May raise
+\exception{RestoreNotRequested},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
-\exception{RegionNotKnown}.
+\exception{SaveInProgress}.
 \end{methoddesc}
 
-\begin{methoddesc}{getRegion}{regionToken}
-Returns region handle.
+\begin{methoddesc}{federateRestoreNotComplete}{}
 
 May raise
+\exception{RestoreNotRequested},
 \exception{FederateNotExecutionMember},
 \exception{ConcurrentAccessAttempted},
-\exception{RegionNotKnown}.
+\exception{SaveInProgress}.
 \end{methoddesc}
 
 \end{classdesc}
 
-% $Id: rtiambassador.tex,v 1.3 2008/10/02 10:04:36 gotthardp Exp $
+% $Id: rtiambassador.tex,v 1.4 2008/10/09 16:50:58 gotthardp Exp $

Index: hla/_rti/handles.cpp
===================================================================
RCS file: /sources/certi/applications/PyHLA/hla/_rti/handles.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- hla/_rti/handles.cpp        2 Oct 2008 10:04:04 -0000       1.3
+++ hla/_rti/handles.cpp        9 Oct 2008 16:50:58 -0000       1.4
@@ -11,7 +11,7 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
- * $Id: handles.cpp,v 1.3 2008/10/02 10:04:04 gotthardp Exp $
+ * $Id: handles.cpp,v 1.4 2008/10/09 16:50:58 gotthardp Exp $
  */
 
 // note: you must include Python.h before any standard headers are included
@@ -658,6 +658,198 @@
     return 1; // success
 }
 
+static int
+RegionHandle_print(RegionHandleObject *v, FILE *fp, int flags)
+{
+    fprintf(fp, "<%s=%lu>", v->ob_type->tp_name, v->ob_handle);
+    return 0;
+}
+
+static int
+RegionHandle_compare(RegionHandleObject *v, RegionHandleObject *w)
+{
+    return (v->ob_handle < w->ob_handle) ? -1 :
+        (v->ob_handle > w->ob_handle) ? 1 : 0;
+}
+
+static PyObject *
+RegionHandle_repr(RegionHandleObject *v)
+{
+    return PyString_FromFormat("<%s=%lu>", v->ob_type->tp_name, v->ob_handle);
+}
+
+static long
+RegionHandle_hash(RegionHandleObject *v)
+{
+    // create a "signed long" hash from an "unsigned long" number
+    static const int __shift = 15; // see SHIFT in longintrepr.h
+    return (v->ob_handle >> __shift) | (v->ob_handle & ~0UL << __shift);
+}
+
+PyTypeObject RegionHandleType = {
+    PyObject_HEAD_INIT(NULL)
+    0,                         /* ob_size */
+    MODULE_NAME ".RegionHandle", /* tp_name */
+    sizeof(RtiULongHandleObject), /* tp_basicsize */
+    0,                         /* tp_itemsize */
+    0,                         /* tp_dealloc */
+    (printfunc)RegionHandle_print, /* tp_print */
+    0,                         /* tp_getattr */
+    0,                         /* tp_setattr */
+    (cmpfunc)RegionHandle_compare, /* tp_compare */
+    (reprfunc)RegionHandle_repr, /* tp_repr */
+    0,                         /* tp_as_number */
+    0,                         /* tp_as_sequence */
+    0,                         /* tp_as_mapping */
+    (hashfunc)RegionHandle_hash, /* tp_hash */
+    0,                         /* tp_call */
+    0,                         /* tp_str */
+    0,                         /* tp_getattro */
+    0,                         /* tp_setattro */
+    0,                         /* tp_as_buffer */
+    Py_TPFLAGS_DEFAULT,        /* tp_flags */
+    "RegionHandle",            /* tp_doc */
+};
+
+int
+RegionHandle_FromPython(RegionHandleObject *value, RTI::Region **result)
+{
+    if(value == NULL || !PyObject_TypeCheck(value, &RegionHandleType)) {
+        PyErr_SetString(PyExc_TypeError,
+            "RegionHandle object required");
+        return 0; // failure
+    }
+
+    *result = value->ob_value;
+    return 1; // success
+}
+
+static int
+longhandle_print(RtiLongHandleObject *v, FILE *fp, int flags)
+{
+    fprintf(fp, "<%s=%li>", v->ob_type->tp_name, v->ob_ival);
+    return 0;
+}
+
+static int
+longhandle_compare(RtiLongHandleObject *v, RtiLongHandleObject *w)
+{
+    return (v->ob_ival < w->ob_ival) ? -1 :
+        (v->ob_ival > w->ob_ival) ? 1 : 0;
+}
+
+static PyObject *
+longhandle_repr(RtiLongHandleObject *v)
+{
+    return PyString_FromFormat("<%s=%li>", v->ob_type->tp_name, v->ob_ival);
+}
+
+static long
+longhandle_hash(RtiLongHandleObject *v)
+{
+    return v->ob_ival;
+}
+
+PyTypeObject RtiSpaceHandleType = {
+    PyObject_HEAD_INIT(NULL)
+    0,                         /* ob_size */
+    MODULE_NAME ".SpaceHandle", /* tp_name */
+    sizeof(RtiLongHandleObject), /* tp_basicsize */
+    0,                         /* tp_itemsize */
+    0,                         /* tp_dealloc */
+    (printfunc)longhandle_print, /* tp_print */
+    0,                         /* tp_getattr */
+    0,                         /* tp_setattr */
+    (cmpfunc)longhandle_compare, /* tp_compare */
+    (reprfunc)longhandle_repr, /* tp_repr */
+    0,                         /* tp_as_number */
+    0,                         /* tp_as_sequence */
+    0,                         /* tp_as_mapping */
+    (hashfunc)longhandle_hash, /* tp_hash */
+    0,                         /* tp_call */
+    0,                         /* tp_str */
+    0,                         /* tp_getattro */
+    0,                         /* tp_setattro */
+    0,                         /* tp_as_buffer */
+    Py_TPFLAGS_DEFAULT,        /* tp_flags */
+    "SpaceHandle",             /* tp_doc */
+};
+
+int
+RtiSpaceHandle_FromPython(RtiLongHandleObject *value, RTI::SpaceHandle *result)
+{
+    if(value == NULL || !PyObject_TypeCheck(value, &RtiSpaceHandleType)) {
+        PyErr_SetString(PyExc_TypeError,
+            "SpaceHandle object required");
+        return 0; // failure
+    }
+
+    *result = value->ob_ival;
+    return 1; // success
+}
+
+PyObject *
+RtiSpaceHandle_ToPython(RTI::SpaceHandle *value)
+{
+    RtiLongHandleObject *self =
+        PyObject_New(RtiLongHandleObject, &RtiSpaceHandleType);
+    if (self == NULL)
+        return NULL;
+    self->ob_ival = *value;
+
+    return (PyObject *)self;
+}
+
+PyTypeObject RtiDimensionHandleType = {
+    PyObject_HEAD_INIT(NULL)
+    0,                         /* ob_size */
+    MODULE_NAME ".DimensionHandle", /* tp_name */
+    sizeof(RtiULongHandleObject), /* tp_basicsize */
+    0,                         /* tp_itemsize */
+    0,                         /* tp_dealloc */
+    (printfunc)ulonghandle_print, /* tp_print */
+    0,                         /* tp_getattr */
+    0,                         /* tp_setattr */
+    (cmpfunc)ulonghandle_compare, /* tp_compare */
+    (reprfunc)ulonghandle_repr, /* tp_repr */
+    0,                         /* tp_as_number */
+    0,                         /* tp_as_sequence */
+    0,                         /* tp_as_mapping */
+    (hashfunc)ulonghandle_hash, /* tp_hash */
+    0,                         /* tp_call */
+    0,                         /* tp_str */
+    0,                         /* tp_getattro */
+    0,                         /* tp_setattro */
+    0,                         /* tp_as_buffer */
+    Py_TPFLAGS_DEFAULT,        /* tp_flags */
+    "DimensionHandle",         /* tp_doc */
+};
+
+int
+RtiDimensionHandle_FromPython(RtiULongHandleObject *value, 
RTI::DimensionHandle *result)
+{
+    if(value == NULL || !PyObject_TypeCheck(value, &RtiDimensionHandleType)) {
+        PyErr_SetString(PyExc_TypeError,
+            "DimensionHandle object required");
+        return 0; // failure
+    }
+
+    *result = value->ob_ival;
+    return 1; // success
+}
+
+PyObject *
+RtiDimensionHandle_ToPython(RTI::DimensionHandle *value)
+{
+    RtiULongHandleObject *self =
+        PyObject_New(RtiULongHandleObject, &RtiDimensionHandleType);
+    if (self == NULL)
+        return NULL;
+    self->ob_ival = *value;
+
+    return (PyObject *)self;
+}
+
 class HandlesInitializer : public RtiInitializer
 {
 public:
@@ -714,6 +906,21 @@
         return;
     Py_INCREF(&EventRetractionHandleType);
     PyModule_AddObject(module, "EventRetractionHandle", (PyObject 
*)&EventRetractionHandleType);
+
+    if (PyType_Ready(&RegionHandleType) < 0)
+        return;
+    Py_INCREF(&RegionHandleType);
+    PyModule_AddObject(module, "RegionHandle", (PyObject *)&RegionHandleType);
+
+    if (PyType_Ready(&RtiSpaceHandleType) < 0)
+        return;
+    Py_INCREF(&RtiSpaceHandleType);
+    PyModule_AddObject(module, "SpaceHandle", (PyObject *)&RtiSpaceHandleType);
+
+    if (PyType_Ready(&RtiDimensionHandleType) < 0)
+        return;
+    Py_INCREF(&RtiDimensionHandleType);
+    PyModule_AddObject(module, "DimensionHandle", (PyObject 
*)&RtiDimensionHandleType);
 }
 
-// $Id: handles.cpp,v 1.3 2008/10/02 10:04:04 gotthardp Exp $
+// $Id: handles.cpp,v 1.4 2008/10/09 16:50:58 gotthardp Exp $

Index: hla/_rti/handles.h
===================================================================
RCS file: /sources/certi/applications/PyHLA/hla/_rti/handles.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- hla/_rti/handles.h  2 Oct 2008 10:04:04 -0000       1.3
+++ hla/_rti/handles.h  9 Oct 2008 16:50:58 -0000       1.4
@@ -11,7 +11,7 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
- * $Id: handles.h,v 1.3 2008/10/02 10:04:04 gotthardp Exp $
+ * $Id: handles.h,v 1.4 2008/10/09 16:50:58 gotthardp Exp $
  */
 
 #ifndef RTI_HANDLES_H
@@ -21,7 +21,7 @@
 
 typedef struct {
   PyObject_HEAD
-  unsigned long ob_ival;
+    RTI::ULong ob_ival;
 } RtiULongHandleObject;
 
 extern PyTypeObject RtiObjectClassHandleType;
@@ -80,6 +80,30 @@
 
 int RTIfedTime_FromPython(PyObject *value, RTIfedTime *result);
 
+typedef struct {
+    PyObject_HEAD
+    RTI::RegionToken ob_handle;
+    RTI::Region *ob_value;
+} RegionHandleObject;
+
+extern PyTypeObject RegionHandleType;
+
+int RegionHandle_FromPython(RegionHandleObject *value, RTI::Region **result);
+
+typedef struct {
+    PyObject_HEAD
+    RTI::Long ob_ival;
+} RtiLongHandleObject;
+
+extern PyTypeObject RtiSpaceHandleType;
+extern PyTypeObject RtiDimensionHandleType;
+
+int RtiSpaceHandle_FromPython(RtiLongHandleObject *value, RTI::SpaceHandle 
*result);
+PyObject *RtiSpaceHandle_ToPython(RTI::SpaceHandle *value);
+
+int RtiDimensionHandle_FromPython(RtiULongHandleObject *value, 
RTI::DimensionHandle *result);
+PyObject *RtiDimensionHandle_ToPython(RTI::DimensionHandle *value);
+
 #endif // RTI_HANDLES_H
 
-// $Id: handles.h,v 1.3 2008/10/02 10:04:04 gotthardp Exp $
+// $Id: handles.h,v 1.4 2008/10/09 16:50:58 gotthardp Exp $

Index: hla/_rti/module.h
===================================================================
RCS file: /sources/certi/applications/PyHLA/hla/_rti/module.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- hla/_rti/module.h   25 Sep 2008 17:17:37 -0000      1.1
+++ hla/_rti/module.h   9 Oct 2008 16:50:58 -0000       1.2
@@ -11,7 +11,7 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
- * $Id: module.h,v 1.1 2008/09/25 17:17:37 gotthardp Exp $
+ * $Id: module.h,v 1.2 2008/10/09 16:50:58 gotthardp Exp $
  */
 
 #ifndef RTI_MODULE_H
@@ -22,6 +22,20 @@
 #define MODULE_NAME "rti"
 
 template<typename T>
+class auto_arrayptr
+{
+public:
+    auto_arrayptr(T *ptr = NULL) { m_ptr = ptr; }
+    ~auto_arrayptr() { delete[] m_ptr; }
+
+    operator T*() const { return m_ptr; }
+    T* get() const { return m_ptr; }
+
+private:
+    T* m_ptr;
+};
+
+template<typename T>
 class auto_decref
 {
 public:
@@ -51,4 +65,4 @@
 
 #endif // RTI_MODULE_H
 
-// $Id: module.h,v 1.1 2008/09/25 17:17:37 gotthardp Exp $
+// $Id: module.h,v 1.2 2008/10/09 16:50:58 gotthardp Exp $

Index: hla/_rti/rtiambassador.cpp
===================================================================
RCS file: /sources/certi/applications/PyHLA/hla/_rti/rtiambassador.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- hla/_rti/rtiambassador.cpp  2 Oct 2008 10:04:04 -0000       1.2
+++ hla/_rti/rtiambassador.cpp  9 Oct 2008 16:50:58 -0000       1.3
@@ -11,7 +11,7 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
- * $Id: rtiambassador.cpp,v 1.2 2008/10/02 10:04:04 gotthardp Exp $
+ * $Id: rtiambassador.cpp,v 1.3 2008/10/09 16:50:58 gotthardp Exp $
  */
 
 // note: you must include Python.h before any standard headers are included
@@ -152,10 +152,13 @@
 static PyObject *
 rtia_resignFederationExecution(RTIAmbassadorObject *self, PyObject *args)
 {
-    RTI::ResignAction theAction;
+    int theAction;
+
+    if(!PyArg_ParseTuple(args, "i", &theAction))
+        return NULL;
 
     try {
-        self->ob_rtia->resignFederationExecution(theAction);
+        self->ob_rtia->resignFederationExecution((RTI::ResignAction)theAction);
 
         // destroy the pointer stored in rtia_joinFederationExecution()
         Py_DECREF(self->ob_federate);
@@ -240,8 +243,7 @@
         return NULL;
 
     try {
-        size_t size = PyTuple_Size(args);
-        if(size == 1)
+        if(PyTuple_Size(args) == 1)
             self->ob_rtia->requestFederationSave(label);
         else
             self->ob_rtia->requestFederationSave(label, theTime);
@@ -1626,11 +1628,50 @@
 rtia_createRegion(RTIAmbassadorObject *self, PyObject *args)
 {
     RTI::SpaceHandle theSpace;
-    RTI::ULong numberOfExtents;
+    PyObject *theDimensions;
+
+    if(!PyArg_ParseTuple(args, "O&O",
+        RtiSpaceHandle_FromPython, &theSpace,
+        &theDimensions))
+        return NULL;
+
+    if(!PySequence_Check(theDimensions)) {
+        PyErr_SetString(PyExc_TypeError,
+            "sequence [DimensionHandle,(int,int)] required");
+        return NULL;
+    }
 
     try {
-        RTI::Region *result = self->ob_rtia->createRegion(theSpace, 
numberOfExtents);
+        RTI::ULong numberOfExtents = PySequence_Size(theDimensions);
+        RTI::Region *regionData = self->ob_rtia->createRegion(theSpace, 
numberOfExtents);
+
+        for (Py_ssize_t pos = 0; pos < numberOfExtents; pos++) {
+            RTI::DimensionHandle dimension;
+            unsigned long lowerBound;
+            unsigned long upperBound;
+
+            auto_decref<PyObject> item = PySequence_GetItem(theDimensions, 
pos);
 
+            if(!PyArg_ParseTuple(item, "O&(kk)",
+                RtiDimensionHandle_FromPython, &dimension,
+                &lowerBound,
+                &upperBound))
+                return 0; // failure
+
+            regionData->setRangeLowerBound(pos, dimension, lowerBound);
+            regionData->setRangeUpperBound(pos, dimension, upperBound);
+        }
+
+        RegionHandleObject *result =
+            PyObject_New(RegionHandleObject, &RegionHandleType);
+        if (result == NULL)
+            return NULL;
+        // keep also the handle
+        // this is to facilitate hashing and forward compatibility with 
IEEE1516
+        result->ob_handle = self->ob_rtia->getRegionToken(regionData);
+        result->ob_value = regionData;
+
+        return (PyObject *)result;
     }
     CATCH_RTI_EXCEPTION(SpaceNotDefined)
     CATCH_RTI_EXCEPTION(InvalidExtents)
@@ -1649,9 +1690,14 @@
 {
     RTI::Region *theRegion;
 
+    if(!PyArg_ParseTuple(args, "O&",
+        RegionHandle_FromPython, &theRegion))
+        return NULL;
+
     try {
         self->ob_rtia->notifyAboutRegionModification(*theRegion);
 
+        return Py_None;
     }
     CATCH_RTI_EXCEPTION(RegionNotKnown)
     CATCH_RTI_EXCEPTION(InvalidExtents)
@@ -1670,9 +1716,14 @@
 {
     RTI::Region *theRegion;
 
+    if(!PyArg_ParseTuple(args, "O&",
+        RegionHandle_FromPython, &theRegion))
+        return NULL;
+
     try {
         self->ob_rtia->deleteRegion(theRegion);
 
+        return Py_None;
     }
     CATCH_RTI_EXCEPTION(RegionNotKnown)
     CATCH_RTI_EXCEPTION(RegionInUse)
@@ -1690,32 +1741,40 @@
 rtia_registerObjectInstanceWithRegion(RTIAmbassadorObject *self, PyObject 
*args)
 {
     RTI::ObjectClassHandle theClass;
-    const char *theObject; // optional
-    RTI::AttributeHandle *theAttributes;
-    RTI::Region **theRegions;
-    RTI::ULong theNumberOfHandles;
+    PyObject *attributesAndRegions;
+    const char *theObject = NULL; // optional
+
+    if(!PyArg_ParseTuple(args, "O&O|s",
+        RtiObjectClassHandle_FromPython, &theClass,
+        &attributesAndRegions,
+        &theObject))
+        return NULL;
 
     try {
-        RTI::ObjectHandle result = 
self->ob_rtia->registerObjectInstanceWithRegion(theClass,
-            theAttributes, theRegions, theNumberOfHandles);
+        RTI::ULong theNumberOfHandles = PySequence_Size(attributesAndRegions);
 
+        // note, std::auto_ptr cannot handle arrays
+        auto_arrayptr<RTI::AttributeHandle> theAttributes = new 
RTI::AttributeHandle[theNumberOfHandles];
+        auto_arrayptr<RTI::Region *> theRegions = new RTI::Region 
*[theNumberOfHandles];
+
+        for (RTI::ULong pos = 0; pos < theNumberOfHandles; pos++) {
+            auto_decref<PyObject> item = 
PySequence_GetItem(attributesAndRegions, pos);
+
+            if(!PyArg_ParseTuple(item, "O&O&",
+                RtiAttributeHandle_FromPython, theAttributes+pos,
+                RegionHandle_FromPython, theRegions+pos))
+                return NULL;
     }
-    CATCH_RTI_EXCEPTION(ObjectClassNotDefined)
-    CATCH_RTI_EXCEPTION(ObjectClassNotPublished)
-    CATCH_RTI_EXCEPTION(AttributeNotDefined)
-    CATCH_RTI_EXCEPTION(AttributeNotPublished)
-    CATCH_RTI_EXCEPTION(RegionNotKnown)
-    CATCH_RTI_EXCEPTION(InvalidRegionContext)
-    CATCH_RTI_EXCEPTION(FederateNotExecutionMember)
-    CATCH_RTI_EXCEPTION(ConcurrentAccessAttempted)
-    CATCH_RTI_EXCEPTION(SaveInProgress)
-    CATCH_RTI_EXCEPTION(RestoreInProgress)
-    CATCH_RTI_EXCEPTION2(RTI::Exception, rti_RTIInternalError)
 
-    try {
-        RTI::ObjectHandle result = 
self->ob_rtia->registerObjectInstanceWithRegion(theClass,
-            theObject, theAttributes, theRegions, theNumberOfHandles);
+        RTI::ObjectHandle result;
+        if (theObject == NULL)
+            result = self->ob_rtia->registerObjectInstanceWithRegion(
+                theClass, theAttributes, theRegions, theNumberOfHandles);
+        else
+            result = self->ob_rtia->registerObjectInstanceWithRegion(
+                theClass, theObject, theAttributes, theRegions, 
theNumberOfHandles);
 
+        return RtiULongHandle_FromULong(&RtiObjectHandleType, result);
     }
     CATCH_RTI_EXCEPTION(ObjectClassNotDefined)
     CATCH_RTI_EXCEPTION(ObjectClassNotPublished)
@@ -1741,9 +1800,16 @@
     RTI::ObjectHandle theObject;
     RTI::AttributeHandleSet *theAttributes;
 
+    if(!PyArg_ParseTuple(args, "O&O&O&",
+        RegionHandle_FromPython, &theRegion,
+        RtiObjectHandle_FromPython, &theObject,
+        AttributeHandleSet_FromPython, &theAttributes))
+        return NULL;
+
     try {
         self->ob_rtia->associateRegionForUpdates(*theRegion, theObject, 
*theAttributes);
 
+        return Py_None;
     }
     CATCH_RTI_EXCEPTION(ObjectNotKnown)
     CATCH_RTI_EXCEPTION(AttributeNotDefined)
@@ -1765,9 +1831,15 @@
     RTI::Region *theRegion;
     RTI::ObjectHandle theObject;
 
+    if(!PyArg_ParseTuple(args, "O&O&",
+        RegionHandle_FromPython, &theRegion,
+        RtiObjectHandle_FromPython, &theObject))
+        return NULL;
+
     try {
         self->ob_rtia->unassociateRegionForUpdates(*theRegion, theObject);
 
+        return Py_None;
     }
     CATCH_RTI_EXCEPTION(ObjectNotKnown)
     CATCH_RTI_EXCEPTION(InvalidRegionContext)
@@ -1788,11 +1860,20 @@
     RTI::ObjectClassHandle theClass;
     RTI::Region *theRegion;
     RTI::AttributeHandleSet *attributeList;
-    RTI::Boolean active = RTI::RTI_TRUE;
+    bool pyActive = true;
+
+    if(!PyArg_ParseTuple(args, "O&O&O&|b",
+        RtiObjectClassHandle_FromPython, &theClass,
+        RegionHandle_FromPython, &theRegion,
+        AttributeHandleSet_FromPython, &attributeList,
+        &pyActive))
+        return NULL;
 
     try {
+        RTI::Boolean active = pyActive ? RTI::RTI_TRUE : RTI::RTI_FALSE;
         self->ob_rtia->subscribeObjectClassAttributesWithRegion(theClass, 
*theRegion, *attributeList, active);
 
+        return Py_None;
     }
     CATCH_RTI_EXCEPTION(ObjectClassNotDefined)
     CATCH_RTI_EXCEPTION(AttributeNotDefined)
@@ -1814,9 +1895,15 @@
     RTI::ObjectClassHandle theClass;
     RTI::Region *theRegion;
 
+    if(!PyArg_ParseTuple(args, "O&O&",
+        RtiObjectClassHandle_FromPython, &theClass,
+        RegionHandle_FromPython, &theRegion))
+        return NULL;
+
     try {
         self->ob_rtia->unsubscribeObjectClassWithRegion(theClass, *theRegion);
 
+        return Py_None;
     }
     CATCH_RTI_EXCEPTION(ObjectClassNotDefined)
     CATCH_RTI_EXCEPTION(RegionNotKnown)
@@ -1836,11 +1923,19 @@
 {
     RTI::InteractionClassHandle theClass;
     RTI::Region *theRegion;
-    RTI::Boolean active = RTI::RTI_TRUE;
+    bool pyActive = true;
+
+    if(!PyArg_ParseTuple(args, "O&O&|b",
+        RtiInteractionClassHandle_FromPython, &theClass,
+        RegionHandle_FromPython, &theRegion,
+        &pyActive))
+        return NULL;
 
     try {
+        RTI::Boolean active = pyActive ? RTI::RTI_TRUE : RTI::RTI_FALSE;
         self->ob_rtia->subscribeInteractionClassWithRegion(theClass, 
*theRegion, active);
 
+        return Py_None;
     }
     CATCH_RTI_EXCEPTION(InteractionClassNotDefined)
     CATCH_RTI_EXCEPTION(RegionNotKnown)
@@ -1862,9 +1957,15 @@
     RTI::InteractionClassHandle theClass;
     RTI::Region *theRegion;
 
+    if(!PyArg_ParseTuple(args, "O&O&",
+        RtiInteractionClassHandle_FromPython, &theClass,
+        RegionHandle_FromPython, &theRegion))
+        return NULL;
+
     try {
         self->ob_rtia->unsubscribeInteractionClassWithRegion(theClass, 
*theRegion);
 
+        return Py_None;
     }
     CATCH_RTI_EXCEPTION(InteractionClassNotDefined)
     CATCH_RTI_EXCEPTION(InteractionClassNotSubscribed)
@@ -1884,29 +1985,29 @@
 {
     RTI::InteractionClassHandle theInteraction;
     RTI::ParameterHandleValuePairSet *theParameters;
-    RTIfedTime theTime; // optional
-    const char *theTag;
     RTI::Region *theRegion;
+    const char *theTag;
+    RTIfedTime theTime; // optional
 
-    try {
-        self->ob_rtia->sendInteractionWithRegion(theInteraction, 
*theParameters, theTag, *theRegion);
-
-    }
-    CATCH_RTI_EXCEPTION(InteractionClassNotDefined)
-    CATCH_RTI_EXCEPTION(InteractionClassNotPublished)
-    CATCH_RTI_EXCEPTION(InteractionParameterNotDefined)
-    CATCH_RTI_EXCEPTION(RegionNotKnown)
-    CATCH_RTI_EXCEPTION(InvalidRegionContext)
-    CATCH_RTI_EXCEPTION(FederateNotExecutionMember)
-    CATCH_RTI_EXCEPTION(ConcurrentAccessAttempted)
-    CATCH_RTI_EXCEPTION(SaveInProgress)
-    CATCH_RTI_EXCEPTION(RestoreInProgress)
-    CATCH_RTI_EXCEPTION2(RTI::Exception, rti_RTIInternalError)
+    if(!PyArg_ParseTuple(args, "O&O&O&s|O&",
+        RtiInteractionClassHandle_FromPython, &theInteraction,
+        ParameterHandleValuePairSet_FromPython, &theParameters,
+        RegionHandle_FromPython, &theRegion,
+        &theTag,
+        RTIfedTime_FromPython, &theTime))
+        return NULL;
 
     try {
-        RTI::EventRetractionHandle result = 
self->ob_rtia->sendInteractionWithRegion(theInteraction,
-            *theParameters, theTime, theTag, *theRegion);
-
+        if(PyTuple_Size(args) == 4) {
+            self->ob_rtia->sendInteractionWithRegion(
+                theInteraction, *theParameters, theTag, *theRegion);
+            return Py_None;
+        }
+        else {
+            RTI::EventRetractionHandle result = 
self->ob_rtia->sendInteractionWithRegion(
+                theInteraction, *theParameters, theTime, theTag, *theRegion);
+            return EventRetractionHandle_ToPython(&result);
+        }
     }
     CATCH_RTI_EXCEPTION(InteractionClassNotDefined)
     CATCH_RTI_EXCEPTION(InteractionClassNotPublished)
@@ -1931,9 +2032,16 @@
     RTI::AttributeHandleSet *theAttributes;
     RTI::Region *theRegion;
 
+    if(!PyArg_ParseTuple(args, "O&O&O&",
+        RtiObjectClassHandle_FromPython, &theClass,
+        AttributeHandleSet_FromPython, &theAttributes,
+        RegionHandle_FromPython, &theRegion))
+        return NULL;
+
     try {
         self->ob_rtia->requestClassAttributeValueUpdateWithRegion(theClass, 
*theAttributes, *theRegion);
 
+        return Py_None;
     }
     CATCH_RTI_EXCEPTION(ObjectClassNotDefined)
     CATCH_RTI_EXCEPTION(AttributeNotDefined)
@@ -2194,9 +2302,13 @@
 {
     const char *theName;
 
+    if(!PyArg_ParseTuple(args, "s", &theName))
+        return NULL;
+
     try {
         RTI::SpaceHandle result = 
self->ob_rtia->getRoutingSpaceHandle(theName);
 
+        return RtiSpaceHandle_ToPython(&result);
     }
     CATCH_RTI_EXCEPTION(NameNotFound)
     CATCH_RTI_EXCEPTION(FederateNotExecutionMember)
@@ -2212,6 +2324,10 @@
 {
     RTI::SpaceHandle theHandle;
 
+    if(!PyArg_ParseTuple(args, "O&",
+        RtiSpaceHandle_FromPython, &theHandle))
+        return NULL;
+
     try {
         char *result = self->ob_rtia->getRoutingSpaceName(theHandle);
 
@@ -2232,9 +2348,15 @@
     const char *theName;
     RTI::SpaceHandle whichSpace;
 
+    if(!PyArg_ParseTuple(args, "sO&",
+        &theName,
+        RtiSpaceHandle_FromPython, &whichSpace))
+        return NULL;
+
     try {
         RTI::DimensionHandle result = 
self->ob_rtia->getDimensionHandle(theName, whichSpace);
 
+        return RtiDimensionHandle_ToPython(&result);
     }
     CATCH_RTI_EXCEPTION(SpaceNotDefined)
     CATCH_RTI_EXCEPTION(NameNotFound)
@@ -2252,6 +2374,11 @@
     RTI::DimensionHandle theHandle;
     RTI::SpaceHandle whichSpace;
 
+    if(!PyArg_ParseTuple(args, "O&O&",
+        RtiDimensionHandle_FromPython, &theHandle,
+        RtiSpaceHandle_FromPython, &whichSpace))
+        return NULL;
+
     try {
         char *result = self->ob_rtia->getDimensionName(theHandle, whichSpace);
 
@@ -2273,9 +2400,15 @@
     RTI::AttributeHandle theHandle;
     RTI::ObjectClassHandle whichClass;
 
+    if(!PyArg_ParseTuple(args, "O&O&",
+        RtiAttributeHandle_FromPython, &theHandle,
+        RtiObjectClassHandle_FromPython, &whichClass))
+        return NULL;
+
     try {
         RTI::SpaceHandle result = 
self->ob_rtia->getAttributeRoutingSpaceHandle(theHandle, whichClass);
 
+        return RtiSpaceHandle_ToPython(&result);
     }
     CATCH_RTI_EXCEPTION(ObjectClassNotDefined)
     CATCH_RTI_EXCEPTION(AttributeNotDefined)
@@ -2315,9 +2448,14 @@
 {
     RTI::InteractionClassHandle theHandle;
 
+    if(!PyArg_ParseTuple(args, "O&",
+        RtiInteractionClassHandle_FromPython, &theHandle))
+        return NULL;
+
     try {
         RTI::SpaceHandle result = 
self->ob_rtia->getInteractionRoutingSpaceHandle(theHandle);
 
+        return RtiSpaceHandle_ToPython(&result);
     }
     CATCH_RTI_EXCEPTION(InteractionClassNotDefined)
     CATCH_RTI_EXCEPTION(FederateNotExecutionMember)
@@ -2607,40 +2745,6 @@
         return __rtia_tick_2(self, args);
 }
 
-static PyObject *
-rtia_getRegionToken(RTIAmbassadorObject *self, PyObject *args)
-{
-    RTI::Region *region;
-
-    try {
-        RTI::RegionToken result = self->ob_rtia->getRegionToken(region);
-
-    }
-    CATCH_RTI_EXCEPTION(FederateNotExecutionMember)
-    CATCH_RTI_EXCEPTION(ConcurrentAccessAttempted)
-    CATCH_RTI_EXCEPTION(RegionNotKnown)
-    CATCH_RTI_EXCEPTION2(RTI::Exception, rti_RTIInternalError)
-
-    return NULL;
-}
-
-static PyObject *
-rtia_getRegion(RTIAmbassadorObject *self, PyObject *args)
-{
-    RTI::RegionToken token;
-
-    try {
-        RTI::Region *result = self->ob_rtia->getRegion(token);
-
-    }
-    CATCH_RTI_EXCEPTION(FederateNotExecutionMember)
-    CATCH_RTI_EXCEPTION(ConcurrentAccessAttempted)
-    CATCH_RTI_EXCEPTION(RegionNotKnown)
-    CATCH_RTI_EXCEPTION2(RTI::Exception, rti_RTIInternalError)
-
-    return NULL;
-}
-
 static PyMethodDef rtia_methods[] =
 {
     {"createFederationExecution",
@@ -2949,12 +3053,6 @@
     {"tick",
         (PyCFunction)rtia_tick, METH_VARARGS,
         ""},
-    {"getRegionToken",
-        (PyCFunction)rtia_getRegionToken, METH_VARARGS,
-        ""},
-    {"getRegion",
-        (PyCFunction)rtia_getRegion, METH_VARARGS,
-        ""},
     {NULL} // sentinel
 };
 
@@ -3025,4 +3123,4 @@
     PyModule_AddObject(module, "RTIAmbassador", (PyObject 
*)&RTIAmbassadorObjectType);
 }
 
-// $Id: rtiambassador.cpp,v 1.2 2008/10/02 10:04:04 gotthardp Exp $
+// $Id: rtiambassador.cpp,v 1.3 2008/10/09 16:50:58 gotthardp Exp $




reply via email to

[Prev in Thread] Current Thread [Next in Thread]