Example #1
0
/*
 * This will cache an individual method id. It will find the method of the given name
 * and signature and place it into the provided pointer. If there is a problem finding
 * the method, an exception is thrown.
 * 
 * This will look for ProxyRtiAmbassador methods. The overload takes a specific class
 */
void JavaRTI::cacheMethod( JNIEnv *jnienv, jmethodID *handle, string method, string signature )
	throw( RTIinternalError )
{
	cacheMethod( jnienv, handle, jproxyClass, method, signature );
}
Example #2
0
/*
 * This method will go through all of the methods that we will use and cache up their IDs.
 * These are needed when we actually call the methods, so rather than get them on the fly,
 * we cache up all the values before hand.
 */
void JavaRTI::cacheMethodIds() throw( RTIinternalError )
{
	logger->trace( "Caching RTIambassador method ids..." );
	
	JNIEnv* jnienv = getJniEnvironment();

	// federation management
	cacheMethod( jnienv, &CONNECT, "connect", "(Ljava/lang/String;)V" );
	cacheMethod( jnienv, &DISCONNECT, "disconnect", "()V" );
	cacheMethod( jnienv, &CREATE_FEDERATION, "createFederationExecution", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" );
	cacheMethod( jnienv, &CREATE_FEDERATION_WITH_MODULES, "createFederationExecution", "(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V" );
	cacheMethod( jnienv, &CREATE_FEDERATION_WITH_MIM, "createFederationExecutionWithMIM", "(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" );
	cacheMethod( jnienv, &DESTROY_FEDERATION, "destroyFederationExecution", "(Ljava/lang/String;)V" );
	cacheMethod( jnienv, &LIST_FEDERATIONS, "listFederationExecutions", "()V" );
	cacheMethod( jnienv, &JOIN_FEDERATION, "joinFederationExecution", "(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I" );
	cacheMethod( jnienv, &JOIN_FEDERATION_WITH_NAME, "joinFederationExecution", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I" );
	cacheMethod( jnienv, &RESIGN_FEDERATION, "resignFederationExecution", "(Ljava/lang/String;)V" );
	
	cacheMethod( jnienv, &REGISTER_FEDERATION_SYNC, "registerFederationSynchronizationPoint", "(Ljava/lang/String;[B)V" );
	cacheMethod( jnienv, &REGISTER_FEDERATION_SYNC_FEDSET, "registerFederationSynchronizationPoint", "(Ljava/lang/String;[B[I)V" );
	cacheMethod( jnienv, &SYNC_POINT_ACHIEVED, "synchronizationPointAchieved", "(Ljava/lang/String;)V" );
	cacheMethod( jnienv, &SYNC_POINT_ACHIEVED_WITH_INDICATOR, "synchronizationPointAchieved", "(Ljava/lang/String;Z)V" );
	cacheMethod( jnienv, &REQUEST_SAVE, "requestFederationSave", "(Ljava/lang/String;)V" );
	cacheMethod( jnienv, &REQUEST_SAVE_TIME, "requestFederationSave", "(Ljava/lang/String;D)V" );
	cacheMethod( jnienv, &SAVE_BEGUN, "federateSaveBegun", "()V" );
	cacheMethod( jnienv, &SAVE_COMPLETE, "federateSaveComplete", "()V" );
	cacheMethod( jnienv, &SAVE_NOT_COMPLETE, "federateSaveNotComplete", "()V" );
	cacheMethod( jnienv, &SAVE_ABORT, "abortFederationSave", "()V" );
	cacheMethod( jnienv, &SAVE_QUERY, "queryFederationSaveStatus", "()V" );
	cacheMethod( jnienv, &REQUEST_RESTORE, "requestFederationRestore", "(Ljava/lang/String;)V" );
	cacheMethod( jnienv, &RESTORE_COMPLETE, "federateRestoreComplete", "()V" );
	cacheMethod( jnienv, &RESTORE_NOT_COMPLETE, "federateRestoreNotComplete", "()V" );
	cacheMethod( jnienv, &RESTORE_ABORT, "abortFederationRestore", "()V" );
	cacheMethod( jnienv, &RESTORE_QUERY, "queryFederationRestoreStatus", "()V" );

	// publication and subscription
	cacheMethod( jnienv, &PUBLISH_OBJECT_CLASS, "publishObjectClassAttributes", "(I[I)V" );
	cacheMethod( jnienv, &UNPUBLISH_OBJECT_CLASS, "unpublishObjectClass", "(I)V" );
	cacheMethod( jnienv, &UNPUBLISH_OBJECT_CLASS_WITH_ATTRIBUTES, "publishObjectClassAttributes", "(I[I)V" );
	cacheMethod( jnienv, &PUBLISH_INTERACTION_CLASS, "publishInteractionClass", "(I)V" );
	cacheMethod( jnienv, &UNPUBLISH_INTERACTION_CLASS, "unpublishInteractionClass", "(I)V" );
	cacheMethod( jnienv, &SUBSCRIBE_ATTRIBUTES, "subscribeObjectClassAttributes", "(I[ILjava/lang/String;)V" );
	cacheMethod( jnienv, &SUBSCRIBE_ATTRIBUTES_PASSIVE, "subscribeObjectClassAttributesPassively", "(I[ILjava/lang/String;)V" );
	cacheMethod( jnienv, &UNSUBSCRIBE_OBJECT_CLASS, "unsubscribeObjectClass", "(I)V" );
	cacheMethod( jnienv, &UNSUBSCRIBE_OBJECT_CLASS_WITH_ATTRIBUTES, "unsubscribeObjectClassAttributes", "(I[I)V" );
	cacheMethod( jnienv, &SUBSCRIBE_INTERACTION_CLASS, "subscribeInteractionClass", "(I)V" );
	cacheMethod( jnienv, &SUBSCRIBE_INTERACTION_CLASS_PASSIVE, "subscribeInteractionClassPassively", "(I)V" );
	cacheMethod( jnienv, &UNSUBSCRIBE_INTERACTION_CLASS, "unsubscribeInteractionClass", "(I)V" );

	// object management
	cacheMethod( jnienv, &RESERVE_NAME, "reserveObjectInstanceName", "(Ljava/lang/String;)V" );
	cacheMethod( jnienv, &RELEASE_NAME, "releaseObjectInstanceName", "(Ljava/lang/String;)V" );
	cacheMethod( jnienv, &RESERVE_MULTIPLE_NAMES, "reserveMultipleObjectInstanceName", "([Ljava/lang/String;)V" );
	cacheMethod( jnienv, &RELEASE_MULTIPLE_NAMES, "releaseMultipleObjectInstanceName", "([Ljava/lang/String;)V" );
	cacheMethod( jnienv, &REGISTER_OBJECT, "registerObjectInstance", "(I)I" );
	cacheMethod( jnienv, &REGISTER_OBJECT_WITH_NAME, "registerObjectInstance", "(ILjava/lang/String;)I" );
	cacheMethod( jnienv, &UPDATE_ATTRIBUTE_VALUES, "updateAttributeValues", "(I[I[[B[B)V" );
	cacheMethod( jnienv, &UPDATE_ATTRIBUTE_VALUES_WITH_TIME, "updateAttributeValues", "(I[I[[B[BD)I" );
	cacheMethod( jnienv, &SEND_INTERACTION, "sendInteraction", "(I[I[[B[B)V" );
	cacheMethod( jnienv, &SEND_INTERACTION_WITH_TIME, "sendInteraction", "(I[I[[B[BD)I" );
	cacheMethod( jnienv, &DELETE_OBJECT_INSTANCE, "deleteObjectInstance", "(I[B)V" );
	cacheMethod( jnienv, &DELETE_OBJECT_INSTANCE_WITH_TIME, "deleteObjectInstance", "(I[BD)I" );
	cacheMethod( jnienv, &LOCAL_DELETE_OBJECT_INSTANCE, "localDeleteObjectInstance", "(I)V" );
	cacheMethod( jnienv, &REQUEST_OBJECT_ATTRIBUTE_VALUE_UPDATE, "requestAttributeValueUpdate", "(I[I[B)V" );
	cacheMethod( jnienv, &REQUEST_CLASS_ATTRIBUTE_VALUE_UPDATE, "requestAttributeValueUpdate", "(I[I[B)V" );
	cacheMethod( jnienv, &REQUEST_ATTRIBUTE_TRANSPORT_CHANGE, "requestAttributeTransportationTypeChange", "(I[ILjava/lang/String;)V" );
	cacheMethod( jnienv, &QUERY_ATTRIBUTE_TRANSPORT_TYPE, "queryAttributeTransportationType", "(II)V" );
	cacheMethod( jnienv, &REQUEST_INTERACTION_TRANSPORT_CHANGE, "requestInteractionTransportationTypeChange", "(ILjava/lang/String;)V" );
	cacheMethod( jnienv, &QUERY_INTERACTION_TRANSPORT_TYPE, "queryInteractionTransportationType", "(II)V" );

	// ownership management
	cacheMethod( jnienv, &UNCONDITIONAL_DIVEST, "unconditionalAttributeOwnershipDivestiture", "(I[I)V" );
	cacheMethod( jnienv, &NEGOTIATED_DIVEST, "negotiatedAttributeOwnershipDivestiture", "(I[I[B)V" );
	cacheMethod( jnienv, &CONFIRM_DIVEST, "confirmDivestiture", "(I[I[B)V" );
	cacheMethod( jnienv, &ATTRIBUTE_ACQUISITION, "attributeOwnershipAcquisition", "(I[I[B)V" );
	cacheMethod( jnienv, &ATTRIBUTE_ACQUISITION_AVAILABLE, "attributeOwnershipAcquisitionIfAvailable", "(I[I)V" );
	cacheMethod( jnienv, &ATTRIBUTE_OWNERSHIP_RELEASE_DENIED, "attributeOwnershipReleaseDenied", "(I[I)V" );
	cacheMethod( jnienv, &ATTRIBUTE_DIVEST_IF_WANTED, "attributeOwnershipDivestitureIfWanted", "(I[I)[I" );
	cacheMethod( jnienv, &CANCEL_NEGOTIATED_DIVEST, "cancelNegotiatedAttributeOwnershipDivestiture", "(I[I)V" );
	cacheMethod( jnienv, &CANCEL_OWNERSHIP_ACQUISITION, "cancelAttributeOwnershipAcquisition", "(I[I)V" );
	cacheMethod( jnienv, &QUERY_ATTRIBUTE_OWNERSHIP, "queryAttributeOwnership", "(II)V" );
	cacheMethod( jnienv, &IS_ATTRIBUTE_OWNED_BY_FEDERATE, "isAttributeOwnedByFederate", "(II)Z" );

	// time management
	cacheMethod( jnienv, &ENABLE_TIME_REGULATION, "enableTimeRegulation", "(D)V" );
	cacheMethod( jnienv, &DISABLE_TIME_REGULATION, "disableTimeRegulation", "()V" );
	cacheMethod( jnienv, &ENABLE_TIME_CONSTRAINED, "enableTimeConstrained", "()V" );
	cacheMethod( jnienv, &DISABLE_TIME_CONSTRAINED, "disableTimeConstrained", "()V" );
	cacheMethod( jnienv, &TIME_ADVANCE_REQUEST, "timeAdvanceRequest", "(D)V" );
	cacheMethod( jnienv, &TIME_ADVANCE_REQUEST_AVAILABLE, "timeAdvanceRequestAvailable", "(D)V" );
	cacheMethod( jnienv, &NEXT_EVENT_REQUEST, "nextMessageRequest", "(D)V" );
	cacheMethod( jnienv, &NEXT_EVENT_REQUEST_AVAILABLE, "nextMessageRequestAvailable", "(D)V" );
	cacheMethod( jnienv, &FLUSH_QUEUE_REQUEST, "flushQueueRequest", "(D)V" );
	cacheMethod( jnienv, &ENABLE_ASYNCHRONOUS_DELIVERY, "enableAsynchronousDelivery", "()V" );
	cacheMethod( jnienv, &DISABLE_ASYNCHRONOUS_DELIVERY, "disableAsynchronousDelivery", "()V" );
	cacheMethod( jnienv, &QUERY_GALT, "queryGALT", "()D" );
	cacheMethod( jnienv, &QUERY_TIME, "queryLogicalTime", "()D" );
	cacheMethod( jnienv, &QUERY_LITS, "queryLITS", "()D" );
	cacheMethod( jnienv, &MODIFY_LOOKAHEAD, "modifyLookahead", "(D)V" );
	cacheMethod( jnienv, &QUERY_LOOKAHEAD, "queryLookahead", "()D" );
	cacheMethod( jnienv, &RETRACT, "retract", "(I)V" );
	cacheMethod( jnienv, &CHANGE_ATTRIBUTE_ORDER_TYPE, "changeAttributeOrderType", "(I[ILjava/lang/String;)V" );
	cacheMethod( jnienv, &CHANGE_INTERACTION_ORDER_TYPE, "changeInteractionOrderType", "(ILjava/lang/String;)V" );

	// data distribution management
	// Note supported as yet
	cacheMethod( jnienv, &CREATE_REGION, "createRegion", "([I)I" );
	cacheMethod( jnienv, &COMMIT_REGION_MODIFICATION, "commitRegionModifications", "([I)V" );
	cacheMethod( jnienv, &DELETE_REGION, "deleteRegion", "(I)V" );
	cacheMethod( jnienv, &REGISTER_OBJECT_WITH_REGION, "registerObjectInstanceWithRegions", "(I[I[I)I" );
	cacheMethod( jnienv, &REGISTER_OBJECT_WITH_NAME_AND_REGION, "registerObjectInstanceWithRegions", "(I[I[ILjava/lang/String;)I" );
	cacheMethod( jnienv, &ASSOCIATE_REGION_FOR_UPDATES, "associateRegionsForUpdates", "(I[I[I)V" );
	cacheMethod( jnienv, &UNASSOCIATE_REGION_FOR_UPDATES, "unassociateRegionsForUpdates", "(I[I[I)V" );
	cacheMethod( jnienv, &SUBSCRIBE_ATTRIBUTES_WITH_REGION, "subscribeObjectClassAttributesWithRegions", "(I[I[I)V" );
	cacheMethod( jnienv, &SUBSCRIBE_ATTRIBUTES_WITH_REGION_AND_RATE, "subscribeObjectClassAttributesWithRegions", "(I[I[ILjava/lang/String;)V" );
	cacheMethod( jnienv, &SUBSCRIBE_ATTRIBUTES_PASSIVELY_WITH_REGION, "subscribeObjectClassAttributesPassivelyWithRegions", "(I[I[I)V" );
	cacheMethod( jnienv, &SUBSCRIBE_ATTRIBUTES_PASSIVELY_WITH_REGION_AND_RATE, "subscribeObjectClassAttributesPassivelyWithRegions", "(I[I[ILjava/lang/String;)V" );
	cacheMethod( jnienv, &UNSUBSCRIBE_ATTRIBUTES_WITH_REGION, "unsubscribeObjectClassAttributesWithRegions", "(I[I[I)V" );
	cacheMethod( jnienv, &SUBSCRIBE_INTERACTION_CLASS_WITH_REGION, "subscribeInteractionClassWithRegions", "(I[I)V" );
	cacheMethod( jnienv, &SUBSCRIBE_INTERACTION_CLASS_PASSIVELY_WITH_REGION, "subscribeInteractionClassPassivelyWithRegions", "(I[I)V" );
	cacheMethod( jnienv, &UNSUBSCRIBE_INTERACTION_CLASS_WITH_REGION, "unsubscribeInteractionClassWithRegions", "(I[I)V" );
	cacheMethod( jnienv, &SEND_INTERACTION_WITH_REGION, "sendInteractionWithRegions", "(I[I[[B[B)V" );
	cacheMethod( jnienv, &SEND_INTERACTION_WITH_TIME_AND_REGION, "sendInteractionWithRegions", "(I[I[[B[I[BD)I" );
	cacheMethod( jnienv, &REQUEST_CLASS_ATTRIBUTE_VALUE_UPDATE_WITH_REGION, "requestAttributeValueUpdateWithRegions", "(I[I[I[B)V" );


	// support services
	cacheMethod( jnienv, &GET_AUTO_RESIGN_DIRECTIVE, "getAutomaticResignDirective", "()Ljava/lang/String;" );
	cacheMethod( jnienv, &SET_AUTO_RESIGN_DIRECTIVE, "setAutomaticResignDirective", "(Ljava/lang/String;)V" );
	cacheMethod( jnienv, &GET_FEDERATE_HANDLE, "getFederateHandle", "(Ljava/lang/String;)I" );
	cacheMethod( jnienv, &GET_FEDERATE_NAME, "getFederateName", "(I)Ljava/lang/String;" );
	cacheMethod( jnienv, &GET_OBJECT_CLASS_HANDLE, "getObjectClassHandle", "(Ljava/lang/String;)I" );
	cacheMethod( jnienv, &GET_OBJECT_CLASS_NAME, "getObjectClassName", "(I)Ljava/lang/String;" );
	cacheMethod( jnienv, &GET_KNOWN_OBJECT_CLASS_HANDLE, "getKnownObjectClassHandle", "(I)I" );
	cacheMethod( jnienv, &GET_OBJECT_INSTANCE_HANDLE, "getObjectInstanceHandle", "(Ljava/lang/String;)I" );
	cacheMethod( jnienv, &GET_OBJECT_INSTANCE_NAME, "getObjectInstanceName", "(I)Ljava/lang/String;" );
	cacheMethod( jnienv, &GET_ATTRIBUTE_HANDLE, "getAttributeHandle", "(ILjava/lang/String;)I" );
	cacheMethod( jnienv, &GET_ATTRIBUTE_NAME, "getAttributeName", "(II)Ljava/lang/String;" );
	cacheMethod( jnienv, &GET_UPDATE_RATE, "getUpdateRateValue", "(Ljava/lang/String;)D" );
	cacheMethod( jnienv, &GET_UPDATE_RATE_FOR_ATTRIBUTE, "getUpdateRateValueForAttribute", "(II)D" );
	
	cacheMethod( jnienv, &GET_INTERACTION_CLASS_HANDLE, "getInteractionClassHandle", "(Ljava/lang/String;)I" );
	cacheMethod( jnienv, &GET_INTERACTION_CLASS_NAME, "getInteractionClassName", "(I)Ljava/lang/String;" );
	cacheMethod( jnienv, &GET_PARAMETER_HANDLE, "getParameterHandle", "(ILjava/lang/String;)I" );
	cacheMethod( jnienv, &GET_PARAMETER_NAME, "getParameterName", "(II)Ljava/lang/String;" );

	cacheMethod( jnienv, &GET_DIMENSIONS_FOR_CLASS_ATTRIBUTE, "getAvailableDimensionsForClassAttribute", "(II)[I" );
	cacheMethod( jnienv, &GET_DIMENSIONS_FOR_INTERACTION_CLASS, "getAvailableDimensionsForInteractionClass", "(I)[I" );
	cacheMethod( jnienv, &GET_DIMENSION_HANDLE, "getDimensionHandle", "(Ljava/lang/String;)I" );
	cacheMethod( jnienv, &GET_DIMENSION_NAME, "getDimensionName", "(I)Ljava/lang/String;" );
	cacheMethod( jnienv, &GET_DIMENSION_UPPER, "getDimensionUpperBound", "(I)J" );
	cacheMethod( jnienv, &GET_DIMENSION_HANDLE_SET, "getDimensionHandleSet", "(I)[I" );
	cacheMethod( jnienv, &GET_RANGE_BOUNDS, "getRangeBounds", "(II)[J" );
	cacheMethod( jnienv, &SET_RANGE_BOUNDS, "setRangeBounds", "(IIJJ)V" );
	cacheMethod( jnienv, &ENABLE_CLASS_RELEVANCE_ADVISORY_SWITCH, "enableObjectClassRelevanceAdvisorySwitch", "()V" );
	cacheMethod( jnienv, &DISABLE_CLASS_RELEVANCE_ADVISORY_SWITCH, "disableObjectClassRelevanceAdvisorySwitch", "()V" );
	cacheMethod( jnienv, &ENABLE_ATTRIBUTE_RELEVANCE_ADVISORY_SWITCH, "enableAttributeRelevanceAdvisorySwitch", "()V" );
	cacheMethod( jnienv, &DISABLE_ATTRIBUTE_RELEVANCE_ADVISORY_SWITCH, "disableAttributeRelevanceAdvisorySwitch", "()V" );
	cacheMethod( jnienv, &ENABLE_ATTRIBUTE_SCOPE_ADVISORY_SWITCH, "enableAttributeScopeAdvisorySwitch", "()V" );
	cacheMethod( jnienv, &DISABLE_ATTRIBUTE_SCOPE_ADVISORY_SWITCH, "disableAttributeScopeAdvisorySwitch", "()V" );
	cacheMethod( jnienv, &ENABLE_INTERACTION_RELEVANCE_ADVISORY_SWITCH, "enableInteractionRelevanceAdvisorySwitch", "()V" );
	cacheMethod( jnienv, &DISABLE_INTERACTION_RELEVANCE_ADVISORY_SWITCH, "disableInteractionRelevanceAdvisorySwitch", "()V" );
	
	cacheMethod( jnienv, &EVOKE_CALLBACK, "evokeCallback", "(D)Z" );
	cacheMethod( jnienv, &EVOKE_MULTIPLE_CALLBACKS, "evokeMultipleCallbacks", "(DD)Z" );
	cacheMethod( jnienv, &ENABLE_CALLBACKS, "enableCallbacks", "()V" );
	cacheMethod( jnienv, &DISABLE_CALLBACKS, "disableCallbacks", "()V" );
	cacheMethod( jnienv, &GET_HLA_VERSION, "getHLAversion", "()Ljava/lang/String;" );
	//cacheMethod( jnienv, &KILL, "", "" );

	logger->trace( "Cached RTIambassador method ids" );
	
//	logger->trace( "Caching Region method ids" );
//	cacheMethod( jnienv, &REGION_GET_NUMBER_OF_EXTENTS, jregionClass, "getNumberOfExtents", "()J" );
//	cacheMethod( jnienv, &REGION_GET_RANGE_LOWER_BOUND, jregionClass, "getRangeLowerBound", "(II)J" );
//	cacheMethod( jnienv, &REGION_GET_RANGE_UPPER_BOUND, jregionClass, "getRangeUpperBound", "(II)J" );
//	cacheMethod( jnienv, &REGION_GET_SPACE_HANDLE, jregionClass, "getSpaceHandle", "()I" );
//	cacheMethod( jnienv, &REGION_SET_RANGE_LOWER_BOUND, jregionClass, "setRangeLowerBound", "(IIJ)V" );
//	cacheMethod( jnienv, &REGION_SET_RANGE_UPPER_BOUND, jregionClass, "setRangeUpperBound", "(IIJ)V" );
//	cacheMethod( jnienv, &REGION_GET_RANGE_UPPER_BOUND_NOTIFICATION_LIMIT, jregionClass,
//	             "getRangeUpperBoundNotificationLimit", "(II)J" );
//	cacheMethod( jnienv, &REGION_GET_RANGE_LOWER_BOUND_NOTIFICATION_LIMIT, jregionClass,
//	             "getRangeLowerBoundNotificationLimit", "(II)J" );
//	logger->trace( "Cached Region method ids" );
}
Example #3
0
/*
 * This method will go through all of the methods that we will use and cache up their IDs.
 * These are needed when we actually call the methods, so rather than get them on the fly,
 * we cache up all the values before hand.
 */
void JavaRTI::cacheMethodIds() throw( HLA::RTIinternalError )
{
	logger->trace( "Caching RTIambassador method ids..." );

	// federation management
	cacheMethod( &CREATE_FEDERATION, "createFederationExecution", "(Ljava/lang/String;Ljava/lang/String;)V" );
	cacheMethod( &DESTROY_FEDERATION, "destroyFederationExecution", "(Ljava/lang/String;)V" );
	cacheMethod( &JOIN_FEDERATION, "joinFederationExecution", "(Ljava/lang/String;Ljava/lang/String;)I" );
	cacheMethod( &RESIGN_FEDERATION, "resignFederationExecution", "(I)V" );
	cacheMethod( &REGISTER_FEDERATION_SYNCH, "registerFederationSynchronizationPoint", "(Ljava/lang/String;[B)V" );
	cacheMethod( &REGISTER_FEDERATION_SYNCH_FEDHANDLESET, "registerFederationSynchronizationPoint", "(Ljava/lang/String;[B[I)V" );
	cacheMethod( &SYNCH_POINT_ACHIEVED, "synchronizationPointAchieved", "(Ljava/lang/String;)V" );
	cacheMethod( &REQUEST_FEDERATION_SAVE_TIME, "requestFederationSave", "(Ljava/lang/String;D)V" );
	cacheMethod( &REQUEST_FEDERATION_SAVE, "requestFederationSave", "(Ljava/lang/String;)V" );
	cacheMethod( &FEDERATE_SAVE_BEGUN, "federateSaveBegun", "()V" );
	cacheMethod( &FEDERATE_SAVE_COMPLETE, "federateSaveComplete", "()V" );
	cacheMethod( &FEDERATE_SAVE_NOT_COMPLETE, "federateSaveNotComplete", "()V" );
	cacheMethod( &REQUEST_FEDERATION_RESTORE, "requestFederationRestore", "(Ljava/lang/String;)V" );
	cacheMethod( &FEDERATE_RESTORE_COMPLETE, "federateRestoreComplete", "()V" );
	cacheMethod( &FEDERATE_RESTORE_NOT_COMPLETE, "federateRestoreNotComplete", "()V" );

	// publication and subscription
	cacheMethod( &PUBLISH_OBJECT_CLASS, "publishObjectClass", "(I[I)V" );
	cacheMethod( &UNPUBLISH_OBJECT_CLASS, "unpublishObjectClass", "(I)V" );
	cacheMethod( &PUBLISH_INTERACTION_CLASS, "publishInteractionClass", "(I)V" );
	cacheMethod( &UNPUBLISH_INTERACTION_CLASS, "unpublishInteractionClass", "(I)V" );
	cacheMethod( &SUBSCRIBE_OBJECT_CLASS_ATTRIBUTES_ACTIVELY, "subscribeObjectClassAttributes", "(I[I)V" );
	cacheMethod( &SUBSCRIBE_OBJECT_CLASS_ATTRIBUTES_PASSIVELY, "subscribeObjectClassAttributesPassively", "(I[I)V" );
	cacheMethod( &UNSUBSCRIBE_OBJECT_CLASS, "unsubscribeObjectClass", "(I)V" );
	cacheMethod( &SUBSCRIBE_INTERACTION_CLASS, "subscribeInteractionClass", "(I)V" );
	cacheMethod( &SUBSCRIBE_INTERACTION_CLASS_PASSIVELY, "subscribeInteractionClassPassively", "(I)V" );
	cacheMethod( &UNSUBSCRIBE_INTERACTION_CLASS, "unsubscribeInteractionClass", "(I)V" );

	// object management
	cacheMethod( &REGISTER_OBJECT_INSTANCE, "registerObjectInstance", "(I)I" );
	cacheMethod( &REGISTER_OBJECT_INSTANCE_WITH_NAME, "registerObjectInstance", "(ILjava/lang/String;)I" );
	cacheMethod( &UPDATE_ATTRIBUTE_VALUES, "updateAttributeValues", "(I[I[[B[B)V" );
	cacheMethod( &UPDATE_ATTRIBUTE_VALUES_WITH_TIME, "updateAttributeValues", "(I[I[[B[BD)I" );
	cacheMethod( &SEND_INTERACTION, "sendInteraction", "(I[I[[B[B)V" );
	cacheMethod( &SEND_INTERACTION_WITH_TIME, "sendInteraction", "(I[I[[B[BD)I" );
	cacheMethod( &DELETE_OBJECT_INSTANCE, "deleteObjectInstance", "(I[B)V" );
	cacheMethod( &DELETE_OBJECT_INSTANCE_WITH_TIME, "deleteObjectInstance", "(I[BD)I" );
	cacheMethod( &LOCAL_DELETE_OBJECT_INSTANCE, "localDeleteObjectInstance", "(I)V" );
	cacheMethod( &CHANGE_ATTRIBUTE_TRANSPORTATION_TYPE, "changeAttributeTransportationType", "(I[II)V" );
	cacheMethod( &CHANGE_INTERACTION_TRANSPORTATION_TYPE, "changeInteractionTransportationType", "(II)V" );
	cacheMethod( &REQUEST_OBJECT_ATTRIBUTE_VALUE_UPDATE, "requestObjectAttributeValueUpdate", "(I[I)V" );
	cacheMethod( &REQUEST_CLASS_ATTRIBUTE_VALUE_UPDATE, "requestClassAttributeValueUpdate", "(I[I)V" );

	// ownership management
	cacheMethod( &UNCONDITIONAL_DIVEST, "unconditionalAttributeOwnershipDivestiture", "(I[I)V" );
	cacheMethod( &NEGOTIATED_DIVEST, "negotiatedAttributeOwnershipDivestiture", "(I[I[B)V" );
	cacheMethod( &ATTRIBUTE_ACQUISITION, "attributeOwnershipAcquisition", "(I[I[B)V" );
	cacheMethod( &ATTRIBUTE_ACQUISITION_AVAILABLE, "attributeOwnershipAcquisitionIfAvailable", "(I[I)V" );
	cacheMethod( &ATTRIBUTE_OWNERSHIP_RELEASE_RESPOSE, "attributeOwnershipReleaseResponse", "(I[I)[I" );
	cacheMethod( &CANCEL_NEGOTIATED_DIVEST, "cancelNegotiatedAttributeOwnershipDivestiture", "(I[I)V" );
	cacheMethod( &CANCEL_OWNERSHIP_ACQUISITION, "cancelAttributeOwnershipAcquisition", "(I[I)V" );
	cacheMethod( &QUERY_ATTRIBUTE_OWNERSHIP, "queryAttributeOwnership", "(II)V" );
	cacheMethod( &IS_ATTRIBUTE_OWNED_BY_FEDERATE, "isAttributeOwnedByFederate", "(II)Z" );

	// time management
	cacheMethod( &ENABLE_TIME_REGULATION, "enableTimeRegulation", "(DD)V" );
	cacheMethod( &DISABLE_TIME_REGULATION, "disableTimeRegulation", "()V" );
	cacheMethod( &ENABLE_TIME_CONSTRAINED, "enableTimeConstrained", "()V" );
	cacheMethod( &DISABLE_TIME_CONSTRAINED, "disableTimeConstrained", "()V" );
	cacheMethod( &TIME_ADVANCE_REQUEST, "timeAdvanceRequest", "(D)V" );
	cacheMethod( &TIME_ADVANCE_REQUEST_AVAILABLE, "timeAdvanceRequestAvailable", "(D)V" );
	cacheMethod( &NEXT_EVENT_REQUEST, "nextEventRequest", "(D)V" );
	cacheMethod( &NEXT_EVENT_REQUEST_AVAILABLE, "nextEventRequestAvailable", "(D)V" );
	cacheMethod( &FLUSH_QUEUE_REQUEST, "flushQueueRequest", "(D)V" );
	cacheMethod( &ENABLE_ASYNCHRONOUS_DELIVERY, "enableAsynchronousDelivery", "()V" );
	cacheMethod( &DISABLE_ASYNCHRONOUS_DELIVERY, "disableAsynchronousDelivery", "()V" );
	cacheMethod( &QUERY_LBTS, "queryLBTS", "()D" );
	cacheMethod( &QUERY_FEDERATE_TIME, "queryFederateTime", "()D" );
	cacheMethod( &QUERY_MIN_NEXT_EVENT_TIME, "queryMinNextEventTime", "()D" );
	cacheMethod( &MODIFY_LOOKAHEAD, "modifyLookahead", "(D)V" );
	cacheMethod( &QUERY_LOOKAHEAD, "queryLookahead", "()D" );
	cacheMethod( &RETRACT, "retract", "(I)V" );
	cacheMethod( &CHANGE_ATTRIBUTE_ORDER_TYPE, "changeAttributeOrderType", "(I[II)V" );
	cacheMethod( &CHANGE_INTERACTION_ORDER_TYPE, "changeInteractionOrderType", "(II)V" );

	// data distribution management
	cacheMethod( &GET_REGION, "getRegion", "(I)Lhla/rti/Region;" );
	cacheMethod( &GET_REGION_TOKEN, "getRegionToken", "(Lhla/rti/Region;)I" );
	cacheMethod( &CREATE_REGION, "createRegion", "(II)Lhla/rti/Region;" );
	cacheMethod( &NOTIFY_OF_REGION_MODIFICATION, "notifyOfRegionModification", "(Lhla/rti/Region;)V" );
	cacheMethod( &DELETE_REGION, "deleteRegion", "(Lhla/rti/Region;)V" );
	cacheMethod( &REGISTER_OBJECT_WITH_REGION, "registerObjectInstanceWithRegion", "(I[I[Lhla/rti/Region;)I" );
	cacheMethod( &REGISTER_OBJECT_WITH_NAME_AND_REGION, "registerObjectInstanceWithRegion", "(ILjava/lang/String;[I[Lhla/rti/Region;)I" );
	cacheMethod( &ASSOCIATE_REGION_FOR_UPDATES, "associateRegionForUpdates", "(Lhla/rti/Region;I[I)V" );
	cacheMethod( &UNASSOCIATE_REGION_FOR_UPDATES, "unassociateRegionForUpdates", "(Lhla/rti/Region;I)V" );
	cacheMethod( &SUBSCRIBE_ATTRIBUTES_WITH_REGION, "subscribeObjectClassAttributesWithRegion", "(ILhla/rti/Region;[I)V" );
	cacheMethod( &SUBSCRIBE_ATTRIBUTES_PASSIVELY_WITH_REGION, "subscribeObjectClassAttributesPassivelyWithRegion", "(ILhla/rti/Region;[I)V" );
	cacheMethod( &UNSUBSCRIBE_ATTRIBUTES_WITH_REGION, "unsubscribeObjectClassWithRegion", "(ILhla/rti/Region;)V" );
	cacheMethod( &SUBSCRIBE_INTERACTION_CLASS_WITH_REGION, "subscribeInteractionClassWithRegion", "(ILhla/rti/Region;)V" );
	cacheMethod( &SUBSCRIBE_INTERACTION_CLASS_PASSIVELY_WITH_REGION, "subscribeInteractionClassPassivelyWithRegion", "(ILhla/rti/Region;)V" );
	cacheMethod( &UNSUBSCRIBE_INTERACTION_CLASS_WITH_REGION, "unsubscribeInteractionClassWithRegion", "(ILhla/rti/Region;)V" );
	cacheMethod( &SEND_INTERACTION_WITH_REGION, "sendInteractionWithRegion", "(I[I[[B[BLhla/rti/Region;)V" );
	cacheMethod( &SEND_INTERACTION_WITH_TIME_AND_REGION, "sendInteractionWithRegion", "(I[I[[B[BLhla/rti/Region;D)I" );
	cacheMethod( &REQUEST_CLASS_ATTRIBUTE_VALUE_UPDATE_WITH_REGION, "requestClassAttributeValueUpdateWithRegion", "(I[ILhla/rti/Region;)V" );

	// support services
	cacheMethod( &GET_OBJECT_CLASS_HANDLE, "getObjectClassHandle", "(Ljava/lang/String;)I" );
	cacheMethod( &GET_OBJECT_CLASS_NAME, "getObjectClassName", "(I)Ljava/lang/String;" );
	cacheMethod( &GET_ATTRIBUTE_HANDLE, "getAttributeHandle", "(Ljava/lang/String;I)I" );
	cacheMethod( &GET_ATTRIBUTE_NAME, "getAttributeName", "(II)Ljava/lang/String;" );
	cacheMethod( &GET_INTERACTION_CLASS_HANDLE, "getInteractionClassHandle", "(Ljava/lang/String;)I" );
	cacheMethod( &GET_INTERACTION_CLASS_NAME, "getInteractionClassName", "(I)Ljava/lang/String;" );
	cacheMethod( &GET_PARAMETER_HANDLE, "getParameterHandle", "(Ljava/lang/String;I)I" );
	cacheMethod( &GET_PARAMETER_NAME, "getParameterName", "(II)Ljava/lang/String;" );
	cacheMethod( &GET_OBJECT_INSTANCE_HANDLE, "getObjectInstanceHandle", "(Ljava/lang/String;)I" );
	cacheMethod( &GET_OBJECT_INSTANCE_NAME, "getObjectInstanceName", "(I)Ljava/lang/String;" );
	cacheMethod( &GET_ROUTING_SPACE_HANDLE, "getRoutingSpaceHandle", "(Ljava/lang/String;)I" );
	cacheMethod( &GET_ROUTING_SPACE_NAME, "getRoutingSpaceName", "(I)Ljava/lang/String;" );
	cacheMethod( &GET_DIMENSION_HANDLE, "getDimensionHandle", "(Ljava/lang/String;I)I" );
	cacheMethod( &GET_DIMENSION_NAME, "getDimensionName", "(II)Ljava/lang/String;" );
	cacheMethod( &GET_ATTRIBUTE_ROUTING_SPACE_HANDLE, "getAttributeRoutingSpaceHandle", "(II)I" );
	cacheMethod( &GET_OBJECT_CLASS, "getObjectClass", "(I)I" );
	cacheMethod( &GET_INTERACTION_ROUTING_SPACE_HANDLE, "getInteractionRoutingSpaceHandle", "(I)I" );
	cacheMethod( &GET_TRANSPORTATION_HANDLE, "getTransportationHandle", "(Ljava/lang/String;)I" );
	cacheMethod( &GET_TRANSPORTATION_NAME, "getTransportationName", "(I)Ljava/lang/String;" );
	cacheMethod( &GET_ORDERING_HANDLE, "getOrderingHandle", "(Ljava/lang/String;)I" );
	cacheMethod( &GET_ORDERING_NAME, "getOrderingName", "(I)Ljava/lang/String;" );
	cacheMethod( &ENABLE_CLASS_RELEVANCE_ADVISORY_SWITCH, "enableClassRelevanceAdvisorySwitch", "()V" );
	cacheMethod( &DISABLE_CLASS_RELEVANCE_ADVISORY_SWITCH, "disableClassRelevanceAdvisorySwitch", "()V" );
	cacheMethod( &ENABLE_ATTRIBUTE_RELEVANCE_ADVISORY_SWITCH, "enableAttributeRelevanceAdvisorySwitch", "()V" );
	cacheMethod( &DISABLE_ATTRIBUTE_RELEVANCE_ADVISORY_SWITCH, "disableAttributeRelevanceAdvisorySwitch", "()V" );
	cacheMethod( &ENABLE_ATTRIBUTE_SCOPE_ADVISORY_SWITCH, "enableAttributeScopeAdvisorySwitch", "()V" );
	cacheMethod( &DISABLE_ATTRIBUTE_SCOPE_ADVISORY_SWITCH, "disableAttributeScopeAdvisorySwitch", "()V" );
	cacheMethod( &ENABLE_INTERACTION_RELEVANCE_ADVISORY_SWITCH, "enableInteractionRelevanceAdvisorySwitch", "()V" );
	cacheMethod( &DISABLE_INTERACTION_RELEVANCE_ADVISORY_SWITCH, "disableInteractionRelevanceAdvisorySwitch", "()V" );

	cacheMethod( &TICK, "tick", "()V" );
	cacheMethod( &TICK_WITH_TIME, "tick", "(DD)Z" );
	cacheMethod( &KILL, "kill", "()V" );

	logger->trace( "Cached RTIambassador method ids" );
	logger->trace( "Caching Region method ids" );

	cacheMethod( &REGION_GET_NUMBER_OF_EXTENTS, jregionClass, "getNumberOfExtents", "()J" );
	cacheMethod( &REGION_GET_RANGE_LOWER_BOUND, jregionClass, "getRangeLowerBound", "(II)J" );
	cacheMethod( &REGION_GET_RANGE_UPPER_BOUND, jregionClass, "getRangeUpperBound", "(II)J" );
	cacheMethod( &REGION_GET_SPACE_HANDLE, jregionClass, "getSpaceHandle", "()I" );
	cacheMethod( &REGION_SET_RANGE_LOWER_BOUND, jregionClass, "setRangeLowerBound", "(IIJ)V" );
	cacheMethod( &REGION_SET_RANGE_UPPER_BOUND, jregionClass, "setRangeUpperBound", "(IIJ)V" );
	cacheMethod( &REGION_GET_RANGE_UPPER_BOUND_NOTIFICATION_LIMIT, jregionClass,
	             "getRangeUpperBoundNotificationLimit", "(II)J" );
	cacheMethod( &REGION_GET_RANGE_LOWER_BOUND_NOTIFICATION_LIMIT, jregionClass,
	             "getRangeLowerBoundNotificationLimit", "(II)J" );

	logger->trace( "Cached Region method ids" );
}