Overview
This example shows how to create a very simple plug-in that creates a DIS driver and automatically connects to a DIS exercise.
Expected Result
DIS Connection Result
Example details
It shows how to create a new Dis Driver object, add it to the driver manager and set it up to start automatically.
Building the Example
VR-Vantage includes pre-built versions of the example plug-in. To build it yourself, follow the instructions at Building VR-Vantage Examples, Applications, and Plug-ins.
Running the Example
This example is a plug-in. You can run it by running ./bin64/exampleDisConnection_stealth.bat (on Windows) or ./bin64/exampleDisConnection_stealth.sh (on Linux). Menu "Settings->Connections...", you will see the "MyDisDriver" connection that was added. For more information about running examples, please see Running Applications and Examples.
Example Source Files
exampleDisConnectionInit.cxx
#include <functional>
{
return true;
}
namespace makVrv
{
namespace vrvExampleDisConnection
{
static vrvSignalsLib::connection postInitializeConnection;
static const std::string exampleDriverName =
"myDisDriver";
void createDriver(DtDe* de)
{
postInitializeConnection.disconnect();
DtDisDriver* disDriver = dynamic_cast<DtDisDriver*>(
createDriver(
std::string(
"DtDisDriver"), exampleDriverName));
DtDisExerciseConnInitializer exConnInitializer;
exConnInitializer.setExerciseId(1);
exConnInitializer.setMulticastTtl(-1);
exConnInitializer.setPort(3000);
exConnInitializer.setReceiveBufferSize(1048576);
exConnInitializer.setSendBufferSize(-1);
exConnInitializer.setSiteId(2);
exConnInitializer.setUseAsynchIO(true);
disDriver->setExerciseSettings(exConnInitializer);
de->driverManager().addDriver(disDriver);
}
{
try
{
postInitializeConnection = de.signal_postInitialize.connect(
std::bind(
&createDriver, &de));
DtDeInitializer initializer = de.deInitializer();
std::vector< std::string > autoStartList = initializer.autoStartDrivers();
autoStartList.push_back(exampleDriverName);
initializer.setAutoStartDrivers(autoStartList);
de.setDeInitializer(initializer);
}
DtCATCH_AND_PROPAGATE(DtCorruptedState)
}
}
}
exampleDisConnectionInit.h
#pragma once
#define DT_DE_PLUGIN_EXPORT_MACRO DT_DLL_EXAMPLEDISCONNECTION
namespace makVrv
{
class DtDe;
namespace vrvExampleDisConnection
{
}
}
exampleDisConnection.h
#ifndef exampleDisConnection_H_
#define exampleDisConnection_H_
#ifdef _WIN32
#ifdef EXAMPLEDISCONNECTION_EXPORTS
#define DT_DLL_EXAMPLEDISCONNECTION __declspec ( dllexport )
#else
#define DT_DLL_EXAMPLEDISCONNECTION __declspec ( dllimport )
#endif
#else
#define DT_DLL_EXAMPLEDISCONNECTION
#endif
#endif
[<< Examples] [Home] [Top of Page]