23 #include <vlutil/vlPrint.h>
24 #include <vlutil/vlFilename.h>
25 #include <vlutil/vlUtil.h>
26 #include <vlutil/vlPrint.h>
27 #include <vlutil/vlExceptions.h>
28 #include <vlutil/vlString.h>
29 #include <vlutil/vlInetAddr.h>
34 #include <netinet/if_ether.h>
49 #define MAK_STATIC static
63 const MAKRti::DtString& searchPath =
"" );
76 const MAKRti::DtString& fileName, MAKRti::DtFilename& resolvedFilePath);
81 const MAKRti::DtString& fileName,
bool makeUnique, MAKRti::DtFilename& resolvedFilePath);
121 char** fileBuffer,
unsigned int* fileSize);
153 DT_DLL_RTIUTIL void getRegKey( MAKRti::DtString& val, HKEY rootKey,
154 const MAKRti::DtString& keyPath,
const MAKRti::DtString& keyName );
155 DT_DLL_RTIUTIL void setRegKey(
const MAKRti::DtString& keyVal, HKEY rootKey,
156 const MAKRti::DtString& keyPath,
const MAKRti::DtString& keyName,
158 DT_DLL_RTIUTIL void removeRegKey( HKEY rootKey,
const MAKRti::DtString& keyPath,
159 const MAKRti::DtString& keyName );
161 DT_DLL_RTIUTIL void setEnvVar(
const MAKRti::DtString &val,
const MAKRti::DtString& name,
162 bool isSystem,
bool expand ) ;
163 DT_DLL_RTIUTIL void getEnvVar( MAKRti::DtString& val,
const MAKRti::DtString& name,
bool isSystem );
164 DT_DLL_RTIUTIL void removeEnvVar(
const MAKRti::DtString& name,
bool isSystem );
173 DT_DLL_RTIUTIL void getSystemRunLocation(HKEY& rootKey, MAKRti::DtString& regPath);
174 DT_DLL_RTIUTIL void getUserRunLocation(HKEY& rootKey, MAKRti::DtString& regPath);
179 , std::pair< void*, void* > & resultInfo );
217 #define DtRtiFatal DtRtiOutputStream( MAKRti::DtNlFatal )
218 #define DtRtiWarn DtRtiOutputStream( MAKRti::DtNlWarn )
219 #define DtRtiInfo DtRtiOutputStream( MAKRti::DtNlInfo )
220 #define DtRtiVerbose DtRtiOutputStream( MAKRti::DtNlVerbose )
221 #define DtRtiDebug DtRtiOutputStream( MAKRti::DtNlDebug )
224 #define DtIsMember(container, element) (container.find(element) != container.end())
230 typename T::iterator iter = pointerContainer.begin();
231 typename T::iterator theEnd = pointerContainer.end();
232 for (; iter != theEnd; ++iter)
237 pointerContainer.clear();
265 myVector.push_back(
new T(*element));
290 mySet.insert(element);
294 mySet.insert(
new T(*element));
303 typename T::iterator iter = byPointerMap.begin();
304 typename T::const_iter theEnd = byPointerMap.end();
305 for (; iter != theEnd; ++iter)
309 byPointerMap.clear();
333 myMap.insert(element);
337 myMap.insert(std::make_pair(
new T(*element.first), element.second));
346 typename T::iterator iter = pointerMap.begin();
347 typename T::const_iterator theEnd = pointerMap.end();
348 for (; iter != theEnd; ++iter)
376 myMap.insert(element);
380 myMap.insert(std::make_pair(element.first,
new Y(*element.second)));
396 std::map<TargetKeyType, T*>& targetMap,
397 std::map<SourceKeyType, T*>
const& sourceMap)
411 typename std::map<SourceKeyType, T*>::const_iterator findIter =
mySourceMap.find(element.second->handle());
422 template <
class T,
class Thandle>
void DtAdjustHandles(T* info, std::map<Thandle, T*>& byHandle,
423 std::map<MAKRti::DtString, T*>& byName)
428 typename std::map<MAKRti::DtString, T*>::reverse_iterator rClassIter = byName.rbegin();
429 Thandle handleReplacement = info->handle();
432 typename std::map<MAKRti::DtString, T*>::iterator findIter = byName.find(info->name());
433 typename std::map<MAKRti::DtString, T*>::reverse_iterator rClassEnd(findIter);
435 for (; rClassIter != rClassEnd; ++rClassIter)
437 Thandle thisHandle = rClassIter->second->handle();
438 rClassIter->second->setHandle(handleReplacement);
439 byHandle[handleReplacement] = rClassIter->second;
440 handleReplacement = thisHandle;
447 std::map<Thandle, T*>& ownByHandle, std::map<MAKRti::DtString, T*>& byName)
452 typename std::map<MAKRti::DtString, T*>::reverse_iterator rClassIter = byName.rbegin();
453 Thandle handleReplacement = info->handle();
456 typename std::map<MAKRti::DtString, T*>::iterator findIter = byName.find(info->name());
457 typename std::map<MAKRti::DtString, T*>::reverse_iterator rClassEnd(findIter);
459 for (; rClassIter != rClassEnd; ++rClassIter)
461 Thandle thisHandle = rClassIter->second->handle();
462 rClassIter->second->setHandle(handleReplacement);
463 byHandle[handleReplacement] = rClassIter->second;
464 ownByHandle[handleReplacement] = rClassIter->second;
465 handleReplacement = thisHandle;
472 template<
typename T,
typename TContainer >
475 typename TContainer::iterator pos = std::find( container.begin(), container.end(), value );
476 if ( pos != container.end() )
483 container.insert( pos, value );
489 #ifdef DtTHROW_PROPAGATE
490 #undef DtTHROW_PROPAGATE
492 #define DtTHROW_PROPAGATE(exceptionClass,errorMsg, exPtr) \
493 throw exceptionClass(MAKRti::DtString(#exceptionClass": ") + errorMsg, __DtFUNC__, MAKRti::DtFilename::stripPath(__FILE__), __LINE__, exPtr)
502 typedef MAKRti::DtTemplatedException<DtRtiExceptionDesignatorDefault>
DtRtiException;
517 bool ignoreLoopback);
Definition: rtiUtil.h:497
std::map< SourceKeyType, T * > const & mySourceMap
Definition: rtiUtil.h:391
DT_DLL_RTIUTIL MAKRti::DtInetAddr DtDefaultInterfaceAddr()
Get's the address of the default network interface on this machine.
std::pair< MAKRti::DtInetAddr, int > DtInetAddrAndPort
Definition: rtiUtil.h:148
DT_DLL_RTIUTIL void DtSetNotifyLevel(unsigned int notifyLevel)
void DtDeletePointerContainer(T &pointerContainer)
Delete elements of a unary container (e.g. vector or set) of pointers.
Definition: rtiUtil.h:227
DT_DLL_RTIUTIL MAKRti::DtFilename & DtResolveAbsoluteFileLocation(const MAKRti::DtString &path, const MAKRti::DtString &fileName, MAKRti::DtFilename &resolvedFilePath)
Returns the absolute file location Returns the constructed file name in the file name given as a para...
DT_DLL_RTIUTIL int DtGetKey()
Returns a single character of input from stdin.
Definition: rtiUtil.h:205
DT_DLL_RTIUTIL void DtRtiAttachNotificationPrinter(MAKRti::DtNotifyLevelType level, MAKRti::DtPrinter *printer)
Windows only: Attach a MAKRti::DtPrinter to the RTI .dll's internal notification stream, since they are not exported.
Definition: rtiUtil.h:190
Definition: rtiUtil.h:387
Definition: rtiUtil.h:499
std::map< T, Y * > & myMap
Definition: rtiUtil.h:362
DT_DLL_RTIUTIL void shutdownAssistant(bool force)
DT_DLL_RTIUTIL bool DtNonBlockingPollInputLine(MAKRti::DtString &buffer)
Polls line-buffered standard input without blocking execution.
DT_DLL_RTIUTIL MAKRti::DtString DtGetProcessName()
Return the process name of the current process.
void DtDeleteByPointerMap(T &byPointerMap)
Delete key elements of a map by pointers.
Definition: rtiUtil.h:300
DT_DLL_RTIUTIL void startupAssistant()
bool DtUNIQUE_INSERT(const T &value, TContainer &container)
Insert a copy of a value into a container IF that value is not already in the container If the value ...
Definition: rtiUtil.h:473
DtDeepCopyByPointerMap(std::map< T *, Y > &targetMap)
Constructor.
Definition: rtiUtil.h:322
Definition: rtiUtil.h:191
std::map< T *, Y > & myMap
Definition: rtiUtil.h:319
DT_DLL_RTIUTIL MAKRti::DtString DtPerformDNSLookup(MAKRti::DtInetAddr addr)
Could be costly operation.
void operator()(std::pair< TargetKeyType, T * > element)
Definition: rtiUtil.h:403
DT_DLL_RTIUTIL int DtBitsRequiredToRepresent(unsigned long x)
Return the number of bits required to represent the given value as an unsigned integer.
DT_DLL_RTIUTIL void writeMessageToStdErrPipe(const MAKRti::DtString &msg)
Write the given message to a stdErr pipe.
void DtAdjustOwnHandles(T *info, std::map< Thandle, T * > &byHandle, std::map< Thandle, T * > &ownByHandle, std::map< MAKRti::DtString, T * > &byName)
The given info has been inserted at end of byHandle map (with highest handle value).
Definition: rtiUtil.h:446
Definition: rtiUtil.h:194
DT_DLL_RTIUTIL MAKRti::DtString timeString(const MAKRti::DtClock &clock)
Return a string representing elapsed time and absolute time in seconds from clock wall clock time fro...
std::map< TargetKeyType, T * > & myTargetMap
Definition: rtiUtil.h:390
void DtAdjustHandles(T *info, std::map< Thandle, T * > &byHandle, std::map< MAKRti::DtString, T * > &byName)
The given info has been inserted at end of byHandle map (with highest handle value).
Definition: rtiUtil.h:422
std::set< T * > & mySet
Definition: rtiUtil.h:276
const unsigned int DtGreatestValidPortNumber
Definition: rtiUtil.h:52
Deep copy a set pointer entry into the provided target set This helper functor is used in for_each to...
Definition: rtiUtil.h:273
void DtDeleteToPointerMap(T &pointerMap)
Delete value elements of a map to pointers.
Definition: rtiUtil.h:343
void operator()(T *element)
Function operator.
Definition: rtiUtil.h:286
int targetFedexHandle
Definition: rtiUtil.h:198
DtRtiAssistantCommandEnum
Definition: rtiUtil.h:185
DT_DLL_RTIUTIL bool DtReadFile(FILE *fileHandle, char **fileBuffer, unsigned int *fileSize)
Read an opened file into a new buffer of returned size.
void operator()(const std::pair< T, Y *const > element)
Function operator.
Definition: rtiUtil.h:372
DtDeepCopyToPointerMap(std::map< T, Y * > &targetMap)
Constructor.
Definition: rtiUtil.h:365
Definition: rtiUtil.h:189
DT_DLL_RTIUTIL int DtKBHit()
Detect if there has been a button press on stdin.
DT_DLL_RTIUTIL MAKRti::DtException const & DtInitialException(MAKRti::DtException const &ex)
Return the initial exception if exceptions were chained or this one if not.
DT_DLL_RTIUTIL MAKRti::DtFilename DtRtiLibPath(const MAKRti::DtString &searchPath="")
Search the system path for the RTI library and return the path to it If searchPath isn't specified...
MAKRti::DtTemplatedException< DtRtiExceptionDesignatorDefault > DtRtiException
Definition: rtiUtil.h:502
DtRtiExceptionDesignator
Definition: rtiUtil.h:495
DT_DLL_RTIUTIL MAKRti::DtString addrAndPortToString(const DtInetAddrAndPort &addrPort)
DT_DLL_RTIUTIL typedef std::set< MAKRti::DtInetAddr > DtInetAddrSet
Definition: rtiUtil.h:506
Definition: rtiUtil.h:498
DT_DLL_RTIUTIL int DtEnumerateInterfaces(std::vector< MAKRti::DtInetAddr > &addresses, bool ignoreLoopback)
Populate addresses with the IPs of local NICs.
Deep copy a map of pointer entries into the provided target map.
Definition: rtiUtil.h:359
std::vector< T * > & myVector
Definition: rtiUtil.h:247
DtRtiAssistantStartupRequest
Definition: rtiUtil.h:202
DT_DLL_RTIUTIL bool changeAssistantStartup(DtRtiAssistantStartupRequest desiredState)
DT_DLL_RTIUTIL MAKRti::DtString & DtMakeFileNameUnique(MAKRti::DtString &fileName)
Given the filepath, append unique characters to base file name to make it unique Returns the submitte...
DT_DLL_RTIUTIL const MAKRti::DtString & DtGetLocalHostName()
Returns the local hostname. Not threadsafe.
DT_DLL_RTIUTIL MAKRti::DtFilename & DtMakeLogFilePath(const MAKRti::DtString &baseFilePath, const MAKRti::DtString &fileName, bool makeUnique, MAKRti::DtFilename &resolvedFilePath)
Makes a log file name from the given path and file name.
Definition: rtiUtil.h:206
Deep copy a vector pointer entry into the provided target vector This helper functor is used in for_e...
Definition: rtiUtil.h:244
DT_DLL_RTIUTIL bool DtLocateConfigFile(MAKRti::DtFilename const &fileName, MAKRti::DtFilename &locatedFileName)
Locate a configuration file in the following order.
DT_DLL_RTIUTIL void queryAssistantStartup(bool &isStartupItem, bool &isUserStartupItem)
Definition: rtiUtil.h:188
DT_DLL_RTIUTIL unsigned long long DtFirstHostMACAddr()
Definition: rtiUtil.h:204
int assistantHandle
Definition: rtiUtil.h:197
Deep copy a map pointer entry into the provided target map.
Definition: rtiUtil.h:316
void operator()(T *element)
Function operator.
Definition: rtiUtil.h:257
DtSourceKeyToTargetKeyLinkReconstructor(std::map< TargetKeyType, T * > &targetMap, std::map< SourceKeyType, T * > const &sourceMap)
Definition: rtiUtil.h:395
void operator()(const std::pair< T *const, Y > element)
Function operator.
Definition: rtiUtil.h:329
DT_DLL_RTIUTIL MAKRti::DtFilename DtRtiSearchPathList(const MAKRti::DtFilename &libName, const MAKRti::DtString &searchPath="")
Search the system path for the specified library by name, and return the path to it If searchPath isn...
MAKRti::DtTemplatedException< DtRtiExceptionDesignatorPopup > DtRtiExceptionPopup
Definition: rtiUtil.h:503
DtDeepCopyPointerSet(std::set< T * > &targetSet)
Constructor.
Definition: rtiUtil.h:279
DT_DLL_RTIUTIL bool removeAssistantStartup()
MAKRti::DtTemplatedException< DtRtiExceptionDesignatorInvalidRidExpression > DtRtiExceptionInvalidRidExpression
Definition: rtiUtil.h:504
#define DT_DLL_RTIUTIL
Definition: rtiMsConfig.h:160
DT_DLL_RTIUTIL bool DtIsIpOfLocalInterface(const MAKRti::DtInetAddr &addrInQuestion, bool refresh=false)
returns true for isAnyAddr, and if DtInetaddr matches ip of a local interface.
DT_DLL_RTIUTIL void DtRtiDetachNotificationPrinter(MAKRti::DtNotifyLevelType level, MAKRti::DtPrinter *printer)
Windows only: Detach a MAKRti::DtPrinter from the RTI .dll's internal notification stream...
Definition: rtiUtil.h:187
int targetFederateHandle
Definition: rtiUtil.h:199
DT_DLL_RTIUTIL MAKRti::DtOutputStream & DtRtiOutputStream(MAKRti::DtNotifyLevelType level)
Return a reference to the RTI's MAKRti::DtOutputStream objects so plugins and applications can log to...
DtDeepCopyPointerVector(std::vector< T * > &targetVector)
Constructor.
Definition: rtiUtil.h:250
Definition: rtiUtil.h:207
DtRtiAssistantCommandEnum commType
Definition: rtiUtil.h:196