diff --git a/DDSTypesManaged/DDSTypesManaged-64-VS2015.vcxproj b/DDSTypesManaged/DDSTypesManaged-64-VS2015.vcxproj
new file mode 100644
index 00000000..ab1effcb
--- /dev/null
+++ b/DDSTypesManaged/DDSTypesManaged-64-VS2015.vcxproj
@@ -0,0 +1,139 @@
+
+
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ DDSTypesManaged-64-VS2015
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}
+ DDSTypesManaged
+ ManagedCProj
+
+
+
+ DynamicLibrary
+ Unicode
+ true
+ true
+ v140
+
+
+ DynamicLibrary
+ Unicode
+ true
+ v140
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.30319.1
+ $(NDDSHOME)/lib/x64Win64VS2015;$(ReferencePath)
+ $(SolutionDir)\bin\x64Win64VS2015\$(Configuration)\
+ $(SolutionDir)\bin\x64Win64VS2015\$(Configuration)\
+ true
+ $(NDDSHOME)/lib/x64Win64VS2015;$(ReferencePath)
+ $(SolutionDir)\bin\x64Win64VS2015\$(Configuration)\
+ $(SolutionDir)\bin\x64Win64VS2015\$(Configuration)\
+ false
+
+
+
+ X64
+
+
+ Disabled
+ $(NDDSHOME)/include;$(NDDSHOME)/include/ndds;%(AdditionalIncludeDirectories)
+ WIN32;_DEBUG;RTI_WIN32;NDDS_DLL_VARIABLE;WIN32_LEAN_AND_MEAN;%(PreprocessorDefinitions)
+ MultiThreadedDebugDLL
+
+
+ Level3
+ ProgramDatabase
+
+
+ nddscppd.lib;nddscd.lib;nddscored.lib
+ $(NDDSHOME)/lib/x64Win64VS2015;%(AdditionalLibraryDirectories)
+ true
+ true
+ MachineX64
+
+
+
+
+ X64
+
+
+ $(NDDSHOME)/include;$(NDDSHOME)/include/ndds;%(AdditionalIncludeDirectories)
+ WIN32;NDEBUG;RTI_WIN32;NDDS_DLL_VARIABLE;WIN32_LEAN_AND_MEAN;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+
+
+ Level3
+ ProgramDatabase
+
+
+ nddscpp.lib;nddsc.lib;nddscore.lib
+ $(NDDSHOME)/lib/x64Win64VS2015;%(AdditionalLibraryDirectories)
+ true
+ MachineX64
+
+
+
+
+ $(NDDSHOME)\x64Win64VS2015\nddsdotnet46.dll
+
+
+ true
+ true
+
+
+ true
+ true
+
+
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Regenerating type support plugin from %(Filename)%(Extension) $(RTIDDSGEN_PREPROCESSOR)
+ "$(NDDSHOME)\bin\rtiddsgen" -replace -language C++/CLI -d ../DDSTypesManaged $(RTIDDSGEN_PREPROCESSOR) ../idl/%(Filename)%(Extension)
+
+ ../DDSTypesManaged/test.h;../DDSTypesManaged/test.cpp;../DDSTypesManaged/testPlugin.h;../DDSTypesManaged/testPlugin.cpp;../DDSTypesManaged/testSupport.h;../DDSTypesManaged/testSupport.cpp;%(Outputs)
+ Regenerating type support plugin from %(Filename)%(Extension) $(RTIDDSGEN_PREPROCESSOR)
+ "$(NDDSHOME)/bin/rtiddsgen" -replace -language C++/CLI -d ../DDSTypesManaged $(RTIDDSGEN_PREPROCESSOR) ../idl/%(Filename)%(Extension)
+
+ ../DDSTypesManaged/test.h;../DDSTypesManaged/test.cpp;../DDSTypesManaged/testPlugin.h;../DDSTypesManaged/testPlugin.cpp;../DDSTypesManaged/testSupport.h;../DDSTypesManaged/testSupport.cpp;%(Outputs)
+
+
+
+
+
+
diff --git a/DDSTypesManaged/DDSTypesManaged-VS2015.vcxproj b/DDSTypesManaged/DDSTypesManaged-VS2015.vcxproj
new file mode 100644
index 00000000..8c388f68
--- /dev/null
+++ b/DDSTypesManaged/DDSTypesManaged-VS2015.vcxproj
@@ -0,0 +1,141 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+
+ DDSTypesManaged-VS2015
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}
+ DDSTypesManaged
+ ManagedCProj
+
+
+
+ DynamicLibrary
+ Unicode
+ true
+ true
+ v140
+
+
+ DynamicLibrary
+ Unicode
+ true
+ v140
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.40219.1
+ $(NDDSHOME)/lib/i86Win32VS2015;$(ReferencePath)
+ $(SolutionDir)\bin\i86Win32VS2015\$(Configuration)\
+ obj\i86Win32VS2015\$(Configuration)\
+ true
+ $(NDDSHOME)/lib/i86Win32VS2015;$(ReferencePath)
+ $(SolutionDir)\bin\i86Win32VS2015\$(Configuration)\
+ obj\i86Win32VS2015\$(Configuration)\
+ false
+
+
+
+ Disabled
+ $(NDDSHOME)/include;$(NDDSHOME)/include/ndds;%(AdditionalIncludeDirectories)
+ WIN32;_DEBUG;RTI_WIN32;NDDS_DLL_VARIABLE;WIN32_LEAN_AND_MEAN;%(PreprocessorDefinitions)
+ MultiThreadedDebugDLL
+
+
+ Level3
+ ProgramDatabase
+
+
+ nddscppd.lib;nddscd.lib;nddscored.lib
+ $(NDDSHOME)/lib/i86Win32VS2015;%(AdditionalLibraryDirectories)
+ true
+ true
+ false
+
+
+ MachineX86
+
+
+
+
+ $(NDDSHOME)/include;$(NDDSHOME)/include/ndds;%(AdditionalIncludeDirectories)
+ WIN32;NDEBUG;RTI_WIN32;NDDS_DLL_VARIABLE;WIN32_LEAN_AND_MEAN;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+
+
+ Level3
+ ProgramDatabase
+
+
+ nddscpp.lib;nddsc.lib;nddscore.lib
+ $(NDDSHOME)/lib/i86Win32VS2015;%(AdditionalLibraryDirectories)
+ true
+ false
+
+
+ MachineX86
+
+
+
+
+ true
+ true
+
+
+ true
+ true
+
+
+ true
+ true
+
+
+ nddsdotnet46.dll
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Regenerating type support plugin from %(Filename)%(Extension) $(RTIDDSGEN_PREPROCESSOR)
+ "$(NDDSHOME)\bin\rtiddsgen" -replace -language C++/CLI -d ../DDSTypesManaged $(RTIDDSGEN_PREPROCESSOR) ../idl/%(Filename)%(Extension)
+
+ ../DDSTypesManaged/test.h;../DDSTypesManaged/test.cpp;../DDSTypesManaged/testPlugin.h;../DDSTypesManaged/testPlugin.cpp;../DDSTypesManaged/testSupport.h;../DDSTypesManaged/testSupport.cpp;%(Outputs)
+ Regenerating type support plugin from %(Filename)%(Extension) $(RTIDDSGEN_PREPROCESSOR)
+ "$(NDDSHOME)/bin/rtiddsgen" -replace -language C++/CLI -d ../DDSTypesManaged $(RTIDDSGEN_PREPROCESSOR) ../idl/%(Filename)%(Extension)
+
+ ../DDSTypesManaged/test.h;../DDSTypesManaged/test.cpp;../DDSTypesManaged/testPlugin.h;../DDSTypesManaged/testPlugin.cpp;../DDSTypesManaged/testSupport.h;../DDSTypesManaged/testSupport.cpp;%(Outputs)
+
+
+
+
+
+
diff --git a/README.md b/README.md
index 54ce1fbc..4d00c62b 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,3 @@
-# RTI Perftest 5.2.3
-
-*RTI Perftest 5.2.3* release is based on the *RTI Perftest 5.2.0* code. No changes were performed in the code.
+# RTI Perftest 5.2.4
Find the documentation built as a `.pdf` document under [`rtiperftest/doc`](doc/RTI_ConnextDDS_PerformanceTest_GettingStarted.pdf).
\ No newline at end of file
diff --git a/doc/RTI_ConnextDDS_PerformanceTest_GettingStarted.pdf b/doc/RTI_ConnextDDS_PerformanceTest_GettingStarted.pdf
index 25169fb2..7c44e336 100644
Binary files a/doc/RTI_ConnextDDS_PerformanceTest_GettingStarted.pdf and b/doc/RTI_ConnextDDS_PerformanceTest_GettingStarted.pdf differ
diff --git a/idl/test.idl b/idl/test.idl
index a3130d48..6a86b6ff 100644
--- a/idl/test.idl
+++ b/idl/test.idl
@@ -1,24 +1,8 @@
-/* $Id: test.idl,v 1.7 2014/09/22 16:28:49 jmorales Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history
---------------------
- 5.1.0,22sep14,jm PERFTEST-75 Fixed LargeData + Turbo-Mode. Changing max size to
- 131072.
- 5.1.0,16sep14,jm PERFTEST-60 PERFTEST-64 PERFTEST-65 PERFTEST-66 Large data
- support added for perftest.
- 5.1.0,28aug14,jm PERFTEST-64 PERFTEST-65 PERFTEST-66 Reverting changes, since
- They causes issues in Java with the allocated heap.
- 5.1.0,28aug14,jm PERFTEST-64 PERFTEST-65 PERFTEST-66 Added support
- for large data.
-5.1.0,11aug14,jm PERFTEST-57 Added -keyed command line option.
-1.0a,08may08,ch Added keyed type support
-1.0a,15apr08,fcs Added entity_id field
-1.0a,18mar08,hhw Created.
-===================================================================== */
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
const long MAX_BINDATA_SIZE = 131072;
const long KEY_SIZE = 4;
diff --git a/perftest-64-VS2015.sln b/perftest-64-VS2015.sln
new file mode 100644
index 00000000..187213ea
--- /dev/null
+++ b/perftest-64-VS2015.sln
@@ -0,0 +1,58 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.23107.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perftest_cpp-64-VS2015", "perftest_cpp\perftest_cpp-64-VS2015.vcxproj", "{1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DDSTypesManaged-64-VS2015", "DDSTypesManaged\DDSTypesManaged-64-VS2015.vcxproj", "{02F70308-1E4F-413C-B7B7-FCFECB116D64}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "perftest_cs-64-VS2015", "perftest_cs\perftest_cs-64-VS2015.csproj", "{680B5E8F-6CAD-4946-9952-F74B4E233E1C}"
+ ProjectSection(ProjectDependencies) = postProject
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64} = {02F70308-1E4F-413C-B7B7-FCFECB116D64}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|Mixed Platforms = Debug|Mixed Platforms
+ Debug|x64 = Debug|x64
+ Release|Any CPU = Release|Any CPU
+ Release|Mixed Platforms = Release|Mixed Platforms
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Mixed Platforms.Build.0 = Debug|x64
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|x64.ActiveCfg = Debug|x64
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|x64.Build.0 = Debug|x64
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Any CPU.ActiveCfg = Release|x64
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Mixed Platforms.ActiveCfg = Release|x64
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Mixed Platforms.Build.0 = Release|x64
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|x64.ActiveCfg = Release|x64
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|x64.Build.0 = Release|x64
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Mixed Platforms.Build.0 = Debug|x64
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|x64.ActiveCfg = Debug|x64
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|x64.Build.0 = Debug|x64
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Any CPU.ActiveCfg = Release|x64
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Mixed Platforms.ActiveCfg = Release|x64
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Mixed Platforms.Build.0 = Release|x64
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|x64.ActiveCfg = Release|x64
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|x64.Build.0 = Release|x64
+ {680B5E8F-6CAD-4946-9952-F74B4E233E1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {680B5E8F-6CAD-4946-9952-F74B4E233E1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {680B5E8F-6CAD-4946-9952-F74B4E233E1C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {680B5E8F-6CAD-4946-9952-F74B4E233E1C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {680B5E8F-6CAD-4946-9952-F74B4E233E1C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {680B5E8F-6CAD-4946-9952-F74B4E233E1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {680B5E8F-6CAD-4946-9952-F74B4E233E1C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {680B5E8F-6CAD-4946-9952-F74B4E233E1C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {680B5E8F-6CAD-4946-9952-F74B4E233E1C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {680B5E8F-6CAD-4946-9952-F74B4E233E1C}.Release|x64.ActiveCfg = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/perftest-VS2013.sln b/perftest-VS2013.sln
index 050691e6..f1987260 100644
--- a/perftest-VS2013.sln
+++ b/perftest-VS2013.sln
@@ -1,67 +1,67 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.31101.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DDSTypesManaged-VS2013", "DDSTypesManaged\DDSTypesManaged-VS2013.vcxproj", "{02F70308-1E4F-413C-B7B7-FCFECB116D64}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perftest_cpp-VS2013", "perftest_cpp\perftest_cpp-VS2013.vcxproj", "{1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perftest_cpp2-VS2013", "perftest_cpp2\perftest_cpp2-VS2013.vcxproj", "{8A65C606-01BF-4BB1-978D-8FFE84AE83A2}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "perftest_cs-VS2013", "perftest_cs\perftest_cs-VS2013.csproj", "{098429B9-BBF2-44A0-831A-3EB491A7122F}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|Mixed Platforms = Debug|Mixed Platforms
- Debug|Win32 = Debug|Win32
- Release|Any CPU = Release|Any CPU
- Release|Mixed Platforms = Release|Mixed Platforms
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Any CPU.ActiveCfg = Debug|Win32
- {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
- {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Mixed Platforms.Build.0 = Debug|Win32
- {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Win32.ActiveCfg = Debug|Win32
- {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Win32.Build.0 = Debug|Win32
- {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Any CPU.ActiveCfg = Release|Win32
- {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Mixed Platforms.ActiveCfg = Release|Win32
- {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Mixed Platforms.Build.0 = Release|Win32
- {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Win32.ActiveCfg = Release|Win32
- {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Win32.Build.0 = Release|Win32
- {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Any CPU.ActiveCfg = Debug|Win32
- {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
- {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Mixed Platforms.Build.0 = Debug|Win32
- {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Win32.ActiveCfg = Debug|Win32
- {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Win32.Build.0 = Debug|Win32
- {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Any CPU.ActiveCfg = Release|Win32
- {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Mixed Platforms.ActiveCfg = Release|Win32
- {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Mixed Platforms.Build.0 = Release|Win32
- {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Win32.ActiveCfg = Release|Win32
- {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Win32.Build.0 = Release|Win32
- {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Debug|Any CPU.ActiveCfg = Debug|Win32
- {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
- {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Debug|Mixed Platforms.Build.0 = Debug|Win32
- {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Debug|Win32.ActiveCfg = Debug|Win32
- {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Debug|Win32.Build.0 = Debug|Win32
- {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Release|Any CPU.ActiveCfg = Release|Win32
- {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Release|Mixed Platforms.ActiveCfg = Release|Win32
- {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Release|Mixed Platforms.Build.0 = Release|Win32
- {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Release|Win32.ActiveCfg = Release|Win32
- {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Release|Win32.Build.0 = Release|Win32
- {098429B9-BBF2-44A0-831A-3EB491A7122F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {098429B9-BBF2-44A0-831A-3EB491A7122F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {098429B9-BBF2-44A0-831A-3EB491A7122F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {098429B9-BBF2-44A0-831A-3EB491A7122F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {098429B9-BBF2-44A0-831A-3EB491A7122F}.Debug|Win32.ActiveCfg = Debug|Any CPU
- {098429B9-BBF2-44A0-831A-3EB491A7122F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {098429B9-BBF2-44A0-831A-3EB491A7122F}.Release|Any CPU.Build.0 = Release|Any CPU
- {098429B9-BBF2-44A0-831A-3EB491A7122F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {098429B9-BBF2-44A0-831A-3EB491A7122F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {098429B9-BBF2-44A0-831A-3EB491A7122F}.Release|Win32.ActiveCfg = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
+Microsoft Visual Studio Solution File, Format Version 13.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.31101.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DDSTypesManaged-VS2013", "DDSTypesManaged\DDSTypesManaged-VS2013.vcxproj", "{02F70308-1E4F-413C-B7B7-FCFECB116D64}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perftest_cpp-VS2013", "perftest_cpp\perftest_cpp-VS2013.vcxproj", "{1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perftest_cpp2-VS2013", "perftest_cpp2\perftest_cpp2-VS2013.vcxproj", "{8A65C606-01BF-4BB1-978D-8FFE84AE83A2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "perftest_cs-VS2013", "perftest_cs\perftest_cs-VS2013.csproj", "{098429B9-BBF2-44A0-831A-3EB491A7122F}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|Mixed Platforms = Debug|Mixed Platforms
+ Debug|Win32 = Debug|Win32
+ Release|Any CPU = Release|Any CPU
+ Release|Mixed Platforms = Release|Mixed Platforms
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Win32.ActiveCfg = Debug|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Win32.Build.0 = Debug|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Any CPU.ActiveCfg = Release|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Win32.ActiveCfg = Release|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Win32.Build.0 = Release|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Win32.Build.0 = Debug|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Any CPU.ActiveCfg = Release|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Win32.ActiveCfg = Release|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Win32.Build.0 = Release|Win32
+ {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+ {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Debug|Win32.Build.0 = Debug|Win32
+ {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Release|Any CPU.ActiveCfg = Release|Win32
+ {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Release|Win32.ActiveCfg = Release|Win32
+ {8A65C606-01BF-4BB1-978D-8FFE84AE83A2}.Release|Win32.Build.0 = Release|Win32
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Release|Win32.ActiveCfg = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/perftest-VS2015.sln b/perftest-VS2015.sln
new file mode 100644
index 00000000..26ad570c
--- /dev/null
+++ b/perftest-VS2015.sln
@@ -0,0 +1,61 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2015
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "perftest_cs-VS2015", "perftest_cs\perftest_cs-VS2015.csproj", "{098429B9-BBF2-44A0-831A-3EB491A7122F}"
+ ProjectSection(ProjectDependencies) = postProject
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64} = {02F70308-1E4F-413C-B7B7-FCFECB116D64}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perftest_cpp-VS2015", "perftest_cpp\perftest_cpp-VS2015.vcxproj", "{1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}"
+ ProjectSection(ProjectDependencies) = postProject
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64} = {02F70308-1E4F-413C-B7B7-FCFECB116D64}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DDSTypesManaged-VS2015", "DDSTypesManaged\DDSTypesManaged-VS2015.vcxproj", "{02F70308-1E4F-413C-B7B7-FCFECB116D64}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|Mixed Platforms = Debug|Mixed Platforms
+ Debug|Win32 = Debug|Win32
+ Release|Any CPU = Release|Any CPU
+ Release|Mixed Platforms = Release|Mixed Platforms
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Debug|Win32.Build.0 = Debug|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Release|Win32.ActiveCfg = Release|Any CPU
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}.Release|Win32.Build.0 = Release|Any CPU
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Debug|Win32.Build.0 = Debug|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Any CPU.ActiveCfg = Release|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Win32.ActiveCfg = Release|Win32
+ {1B3F9AC0-1095-4025-8505-3FDDD0C8DC39}.Release|Win32.Build.0 = Release|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Win32.ActiveCfg = Debug|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Debug|Win32.Build.0 = Debug|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Any CPU.ActiveCfg = Release|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Win32.ActiveCfg = Release|Win32
+ {02F70308-1E4F-413C-B7B7-FCFECB116D64}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/perftest.xml b/perftest.xml
index 3b46cd16..9b0879b1 100644
--- a/perftest.xml
+++ b/perftest.xml
@@ -1,20 +1,9 @@
+
-
-
@@ -94,7 +78,12 @@ _KeepDurationUsec variable name corresponds to the command-line option -keepDura
null terminating characters, of all the (name,value) pairs associated with the
DomainParticipant properties.
-->
- 2048
+ 4096
+
+
+ 64
+
\ No newline at end of file
diff --git a/perftest_cs/perftest_cs-VS2013.csproj b/perftest_cs/perftest_cs-VS2013.csproj
index 3030f69e..da0d46d6 100755
--- a/perftest_cs/perftest_cs-VS2013.csproj
+++ b/perftest_cs/perftest_cs-VS2013.csproj
@@ -41,7 +41,7 @@
..\bin\i86Win32VS2013\Release\DDSTypesManaged-VS2013.dll
-
+
False
$(NDDSHOME)\lib\i86Win32VS2013\nddsdotnet451.dll
True
diff --git a/perftest_cs/perftest_cs-VS2015.csproj b/perftest_cs/perftest_cs-VS2015.csproj
new file mode 100644
index 00000000..3727cc2b
--- /dev/null
+++ b/perftest_cs/perftest_cs-VS2015.csproj
@@ -0,0 +1,67 @@
+
+
+
+ Debug
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {098429B9-BBF2-44A0-831A-3EB491A7122F}
+ Exe
+ Properties
+ perftest_cs
+ perftest_cs
+
+
+ 3.5
+
+
+ v4.0
+
+
+
+ true
+ full
+ false
+ ..\bin\i86Win32VS2015\Debug\
+ TRACE
+ prompt
+ 4
+ x86
+
+
+ pdbonly
+ true
+ ..\bin\i86Win32VS2015\Release\
+ TRACE
+ prompt
+ 4
+ x86
+
+
+
+ ..\bin\i86Win32VS2015\Release\DDSTypesManaged-VS2015.dll
+
+
+ False
+ $(NDDSHOME)\lib\i86Win32VS2015\nddsdotnet46.dll
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/perftest_cs/perftest_cs.cs b/perftest_cs/perftest_cs.cs
index a2b7d893..599c2e9f 100644
--- a/perftest_cs/perftest_cs.cs
+++ b/perftest_cs/perftest_cs.cs
@@ -1,52 +1,8 @@
-/* $Id: perftest_cs.cs,v 1.15 2015/04/29 14:28:49 jmorales Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history
---------------------
-5.2.0,27apr14,jm PERFTEST-86 Removing .ini support.
-5.2.0,31oct14.jmc PERFTEST-76 Fixed segfault in ProcessMessage
-5.1.0,16sep14,jm PERFTEST-60 PERFTEST-65 Large data support
- added for perftest.
-5.1.0,27aug14,jmc PERFTEST-62 Added -executionTime command line option
-5.1.0,27aug14,jm Fixes for PERFTEST-71 and PERFTEST-72.
-5.1.0,26aug14,jm Added support for -pubRate and -keyed option in perftest.ini
- Added logic for checking -pubRate bounds.
-5.1.0,11aug14,jm PERFTEST-68 Added -keyed command line option.
-5.1.0,16jul14,jmc PERFTEST-52 Added -pubRate to -h
-5.1.0,15jul14,jmc PERFTEST-52 Added -pubRate command-line option.
- Also modifying _SpinLoopCount to be ulong
-5.1.0,19may2014,jmc PERFTEST-48 Added 99.9999% latency
-1.0a,13jul10,jsr Added WaitForPingResponse with timeout
-1.0a,09jul10,jsr Fixed LatencyListener constructor
-1.0a,08jul10,jsr Fixed LatencyListener constructor calls
-1.0a,07jul10,jsr Fixed _LatencyCount option default value
-1.0a,11may10,jsr Added LatencyTest option
-1.0a,14may09,fcs Added instances to INI
-1.0a,14may09,fcs Fixed command-line arguments processing
-1.0a,14may09,fcs Fixed output in scan mode
-1.0a,29may09,jsr Added detection of wrong command line parameter
-1.0a,23apr09,jsr Changed to stderr the error and status messages
-1.0a,21apr09,jsr Reformat the help menu
-1.0a,02oct08,eys Added 99.99% latency
-1.0a,22aug08,eys Flush after every send when initializing the channel
-1.0a,22aug08,eys decrease checking interval on subscriber to gather latency
- numbers
-1.0a,20aug08,eys initialize channel by writing InstanceCount initially
-1.0a,14aug08,ch changed key to be 4 bytes long -> overhead change
-1.0a,13aug08,ch added check to not exceed MAX_BINDATA_SIZE
-1.0a,12may08,hhw Fixed some length checks to accommodate 32 byte overhead.
-1.0a,09may08,ch Changed OVERHEAD bytes
-1.0a,04may08,hhw Modified batch processing for sending latency count.
- Synchronized to perftest.cxx changes.
-1.0a,22apr08,fcs Fixed lost count
-1.0a,21apr08,ch Added median to the ouput
-1.0a,21apr08,fcs Changed OVERHEAD bytes
-1.0a,07apr08,hhw Now printing end of test in listener to avoid race condition.
-1.0a,18mar08,hhw Created.
-===================================================================== */
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
using System;
using System.Collections.Generic;
@@ -371,8 +327,6 @@ bool ParseConfig(string[] argv)
_MessagingImpl.PrintCmdLineHelp();
return false;
}
-
-
for (int i = 0; i < argc; ++i)
{
if ( "-help".StartsWith(argv[i], true, null) )
@@ -389,6 +343,7 @@ bool ParseConfig(string[] argv)
if ("-pub".StartsWith(argv[i], true, null))
{
_IsPub = true;
+ _MessagingArgv[_MessagingArgc++] = argv[i];
}
else if ("-sub".StartsWith(argv[i], true, null))
{
diff --git a/perftest_java/build.xml b/perftest_java/build.xml
index 672aab36..a11fd968 100644
--- a/perftest_java/build.xml
+++ b/perftest_java/build.xml
@@ -1,5 +1,5 @@
-
-
+
diff --git a/perftest_java/com/rti/perftest/ddsimpl/DataTypeHelper.java b/perftest_java/com/rti/perftest/ddsimpl/DataTypeHelper.java
index 3d61647c..86e96070 100644
--- a/perftest_java/com/rti/perftest/ddsimpl/DataTypeHelper.java
+++ b/perftest_java/com/rti/perftest/ddsimpl/DataTypeHelper.java
@@ -1,10 +1,8 @@
/*
-
-modification history:
---------------------
- 5.1.0,11aug14,jm PERFTEST-69 Added -keyed command line option.
-
-*/
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest.ddsimpl;
diff --git a/perftest_java/com/rti/perftest/ddsimpl/DataTypeKeyedHelper.java b/perftest_java/com/rti/perftest/ddsimpl/DataTypeKeyedHelper.java
index 0cd9e2dc..a6f7d64c 100644
--- a/perftest_java/com/rti/perftest/ddsimpl/DataTypeKeyedHelper.java
+++ b/perftest_java/com/rti/perftest/ddsimpl/DataTypeKeyedHelper.java
@@ -1,10 +1,8 @@
/*
-
-modification history:
---------------------
- 5.1.0,11aug14,jm PERFTEST-69 Added -keyed command line option.
-
-*/
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest.ddsimpl;
diff --git a/perftest_java/com/rti/perftest/ddsimpl/DomainListener.java b/perftest_java/com/rti/perftest/ddsimpl/DomainListener.java
index 921f6ddc..c8f3c3b0 100644
--- a/perftest_java/com/rti/perftest/ddsimpl/DomainListener.java
+++ b/perftest_java/com/rti/perftest/ddsimpl/DomainListener.java
@@ -1,14 +1,8 @@
-/* $Id: DomainListener.java,v 1.3 2014/09/02 13:53:33 jmorales Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history:
---------------------
-5.1.0,28sep02,jm PERF-37 Fixed issue when topic is inconsistent.
-01apr08,rbw Created
-=========================================================================== */
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest.ddsimpl;
@@ -67,4 +61,4 @@ public void on_requested_incompatible_qos(
}
// ===========================================================================
-// End of $Id: DomainListener.java,v 1.3 2014/09/02 13:53:33 jmorales Exp $
+// End of $Id$
diff --git a/perftest_java/com/rti/perftest/ddsimpl/PerfTestLauncher.java b/perftest_java/com/rti/perftest/ddsimpl/PerfTestLauncher.java
index f8e0c6f3..678018d3 100644
--- a/perftest_java/com/rti/perftest/ddsimpl/PerfTestLauncher.java
+++ b/perftest_java/com/rti/perftest/ddsimpl/PerfTestLauncher.java
@@ -1,16 +1,8 @@
-/* $Id: PerfTestLauncher.java,v 1.7 2015/05/09 12:59:22 jmorales Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history:
---------------------
-5.2.0,09may14,jm PERFTEST-86 Removing support for .ini file config.
-5.1.0,26aug14,jm Added support for read the iskeyed option in perftest.ini.
-5.1.0,11aug14,jm PERFTEST-69 Changes in the implementation.
-08oct08,rbw Created
-=========================================================================== */
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest.ddsimpl;
@@ -78,4 +70,4 @@ private static boolean parseConfig(String[] argv) {
}
// ===========================================================================
-// End of $Id: PerfTestLauncher.java,v 1.7 2015/05/09 12:59:22 jmorales Exp $
+// End of $Id$
diff --git a/perftest_java/com/rti/perftest/ddsimpl/RTIDDSImpl.java b/perftest_java/com/rti/perftest/ddsimpl/RTIDDSImpl.java
index c0a546cf..e08da655 100644
--- a/perftest_java/com/rti/perftest/ddsimpl/RTIDDSImpl.java
+++ b/perftest_java/com/rti/perftest/ddsimpl/RTIDDSImpl.java
@@ -1,66 +1,8 @@
-/* $Id: RTIDDSImpl.java,v 1.17 2015/05/09 18:06:06 jmorales Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history:
---------------------
-5.2.0,09may15,jm PERFTEST-86 Reader's max instances not modified now, set to
- DDS_LENGTH_UNLIMITED via perftest.xml.
-5.2.0,27apr14,jm PERFTEST-86 Removing .ini support. Fixing warnings.
-5.1.0,22sep14,jm PERFTEST-75 Fixed LargeData + Turbo-Mode. Changing max size to
- 131072.
-5.1.0,16sep14,jm PERFTEST-60 PERFTEST-66 Large data support
- added for perftest.
-5.1.0,11aug14,jm PERFTEST-69 Added -keyed command line option.
-5.1.0.9,27mar14,jmc PERFTEST-27 Fixing resource limits when using
- Turbo Mode
-5.1.0,19dec13,jmc PERFTEST-3 Added autothrottle and turbomode
-5.1.0,19dec13,jmc PERFTEST-2 window size in batching path and
- domain id now is 1
-29aug13,jmc CORE-5854 multicast disabled by default
-29aug13,jmc CORE-5919 Moved hardcoded QoS to XML file when
- possible
-29aug13,jmc CORE-5867 transport builtin mask to only shmem
-07jul10,eys Cleanup perftest parameters
-07jul10,jsr Fixed keepDurationUsec help
-29jun10,jsr Fix heartbeat and fastheartbeat for windows
-01may10,jsr Added latencyTest option
-10mar10,gn Ported tcp implementation from c++
-26may09,fcs Fixed test finalization for keyed topics
-14may09,fcs Added instances to INI
-14may09,fcs Fixed command-line arguments processing
-08may09,jsr Fixed default profile names
-29apr09,jsr Added detection of wrong command line parameter
-23apr09,jsr Changed to stderr the error and status messages
-21apr09,jsr Reformat the help menu
-17apr09,jsr Fixed #12322, added -waitsetDelayUsec and -waitsetEventCount
- command line option
-17apr09,jsr Fixed #12656, -keepDurationUsec command line option and
- resolution
-22jan09,jsr Added EDS support
-08dec08,jsr Added heartbeat_period and fastHeartbeat_period parameters
-04sep08,rbw Fixed key logic. Conformed fields to Java naming conventions.
- Refactored endpoint QoS configuration.
-20aug08,eys Move InstanceCount to perftest.java
-15aug08,ch added PresentationQosPolicyAccessScopeKind.TOPIC_PRESENTATION_QOS
-09aug08,ch Key support, multi-instances, durability
-11jun08,rbw Follow Java naming conventions. Fixed compiler warnings.
-01may08,hhw Removed singleCore option.
- Increased shared memory buffer for shm tests
- KEEP_ALL is used for both reliable/unreliable.
- Added announcement msg support.
-28apr08,rbw Fixed string comparison bug
-02apr08,rbw Improved config file checking; minor stylistic improvements
-02apr08,rbw Moved PerfTest to package com.rti.perftest.harness to distinguish
- between (1) RTI-specific test implementation and (2) generic test
- harness
-02apr08,rbw Implemented *.ini file parsing
-01apr08,rbw Fixed string comparisons
-01apr08,rbw Follow Java naming conventions
-01apr08,rbw Created
-=========================================================================== */
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest.ddsimpl;
@@ -124,6 +66,14 @@ public final class RTIDDSImpl implements IMessaging {
private static String LATENCY_MULTICAST_ADDR = "239.255.1.2";
private static String ANNOUNCEMENT_MULTICAST_ADDR = "239.255.1.100";
private static String PROFILE_LIBRARY_NAME = "PerftestQosLibrary";
+ private static String SECUREPRIVATEKEYFILEPUB = "./resource/secure/pubkey.pem";
+ private static String SECUREPRIVATEKEYFILESUB = "./resource/secure/subkey.pem";
+ private static String SECURECERTIFICATEFILEPUB = "./resource/secure/pub.pem";
+ private static String SECURECERTIFICATEFILESUB = "./resource/secure/sub.pem";
+ private static String SECURECERTAUTHORITYFILE = "./resource/secure/cacert.pem";
+ private static String SECUREPERMISIONFILEPUB = "./resource/secure/signed_PerftestPermissionsPub.xml";
+ private static String SECUREPERMISIONFILESUB = "./resource/secure/signed_PerftestPermissionsSub.xml";
+ private static String SECURELIBRARYNAME = "nddssecurity";
private int _sendQueueSize = 50;
private Duration_t _heartbeatPeriod = new Duration_t(0,0);
@@ -150,6 +100,25 @@ public final class RTIDDSImpl implements IMessaging {
private boolean _latencyTest = false;
private boolean _isLargeData = false;
private boolean _isScan = false;
+ private boolean _isPublisher = false;
+
+ private boolean _secureUseSecure = false;
+ private boolean _secureIsSigned = false;
+ private boolean _secureIsDataEncrypted = false; // User Data
+ private boolean _secureIsSMEncrypted = false; // Sub-message
+ private boolean _secureIsDiscoveryEncrypted = false;
+ private String _secureCertAuthorityFile = null;
+ private String _secureCertificateFile = null;
+ private String _securePrivateKeyFile = null;
+
+ /*
+ * if _GovernanceFile is specified, overrides the options for
+ * signing, encrypting, and authentication.
+ */
+ private String _governanceFile = null;
+ private String _securePermissionsFile = null;
+ private String _secureLibrary = null;
+ private int _secyreDebugLevel = -1;
private DomainParticipantFactory _factory = null;
private DomainParticipant _participant = null;
@@ -170,12 +139,10 @@ public RTIDDSImpl(TypeHelper typeHelper) {
_myDataType = typeHelper;
}
-
public void dispose() {
shutdown();
}
-
public void shutdown() {
if (_participant != null) {
// This synchronized block just protects this method from itself
@@ -202,7 +169,6 @@ public void shutdown() {
}
}
-
public int getBatchSize() {
return _batchSize;
}
@@ -215,13 +181,13 @@ public void printCmdLineHelp() {
String usage_string =
/**************************************************************************/
"\t-sendQueueSize - Sets number of samples (or batches) in send\n" +
- "\t queue, default 50\n" +
+ "\t queue, default 50\n" +
"\t-domain - RTI DDS Domain, default 1\n" +
"\t-qosprofile - Name of XML file for DDS Qos profiles, default\n" +
"\t perftest.xml\n" +
"\t-nic - Use only the nic specified by .\n" +
- "\t If unspecified, use all available interfaces\n" +
- "\t-multicast - Use multicast to send data, default not to\n"+
+ "\t If unspecified, use all available interfaces\n" +
+ "\t-multicast - Use multicast to send data, default not to\n"+
"\t use multicast\n" +
"\t-nomulticast - Do not use multicast to send data (default),\n" +
"\t-multicastAddress - Multicast address to use for receiving \n" +
@@ -229,20 +195,20 @@ public void printCmdLineHelp() {
"\t throughtput (sub) data. \n" +
"\t If unspecified: latency 239.255.1.2,\n" +
"\t announcement 239.255.1.100,\n" +
- "\t throughput 239.255.1.1\n" +
+ "\t throughput 239.255.1.1\n" +
"\t-bestEffort - Run test in best effort mode, default reliable\n" +
"\t-batchSize - Size in bytes of batched message,\n" +
- "\t default 0 (no batching)\n" +
+ "\t default 0 (no batching)\n" +
"\t-noPositiveAcks - Disable use of positive acks in reliable\n" +
"\t protocol, default use positive acks\n" +
"\t-keepDurationUsec - Minimum time (us) to keep samples when\n" +
"\t positive acks are disabled, default 1000 us\n" +
"\t-enableSharedMemory - Enable use of shared memory transport and\n" +
"\t disable all the other transports, default\n"+
- "\t shared memory not enabled\n" +
+ "\t shared memory not enabled\n" +
"\t-enableTcpOnly - Enable use of tcp transport and disable all\n"+
- "\t the other transports, default do not use\n" +
- "\t tcp transport\n" +
+ "\t the other transports, default do not use\n" +
+ "\t tcp transport\n" +
"\t-heartbeatPeriod : - Sets the regular heartbeat period\n" +
"\t for the throughput DataWriter, default 0:0\n" +
"\t (use XML QoS Profile value)\n" +
@@ -255,7 +221,7 @@ public void printCmdLineHelp() {
"\t-noDirectCommunication - Use brokered mode for persistent durability\n" +
"\t-instanceHashBuckets <#count> - Number of hash buckets for instances.\n" +
"\t If unspecified, same as number of\n" +
- "\t instances.\n" +
+ "\t instances.\n" +
"\t-waitsetDelayUsec - UseReadThread related. Allows you to\n" +
"\t process incoming data in groups, based on the\n" +
"\t time rather than individually. It can be used \n" +
@@ -266,15 +232,31 @@ public void printCmdLineHelp() {
"\t number of samples rather than individually. It\n" +
"\t can be used combined with -waitsetDelayUsec,\n" +
"\t default 5\n" +
- "\t-enableAutoThrottle - Enables the AutoThrottling feature in the\n"+
- "\t throughput DataWriter (pub)\n"+
- "\t-enableTurboMode - Enables the TurboMode feature in the throughput\n"+
- "\t DataWriter (pub)\n"
+ "\t-enableAutoThrottle - Enables the AutoThrottling feature in the\n"+
+ "\t throughput DataWriter (pub)\n"+
+ "\t-enableTurboMode - Enables the TurboMode feature in the throughput\n"+
+ "\t DataWriter (pub)\n" +
+ "\t-secureEncryptDiscovery - Encrypt discovery traffic\n" +
+ "\t-secureSign - Sign (HMAC) discovery and user data\n" +
+ "\t-secureEncryptData - Encrypt topic (user) data\n" +
+ "\t-secureEncryptSM - Encrypt RTPS submessages\n" +
+ "\t-secureGovernanceFile - Governance file. If specified, the authentication,\n" +
+ "\t signing, and encryption arguments are ignored. The\n" +
+ "\t governance document configuration will be used instead\n" +
+ "\t Default: built using the secure options.\n" +
+ "\t-securePermissionsFile - Permissions file \n" +
+ "\t Default: \"./resource/secure/signed_PerftestPermissionsSub.xml\"\n" +
+ "\t-secureCertAuthority - Certificate authority file \n" +
+ "\t Default: \"./resource/secure/cacert.pem\"\n" +
+ "\t-secureCertFile - Certificate file \n" +
+ "\t Default: \"./resource/secure/sub.pem\"\n" +
+ "\t-securePrivateKey - Private key file \n" +
+ "\t Default: \"./resource/secure/subkey.pem\"\n"
;
+
System.err.print(usage_string);
}
-
public boolean initialize(int argc, String[] argv) {
_typename = _myDataType.getTypeSupport().get_type_nameI();
@@ -317,16 +299,25 @@ public boolean initialize(int argc, String[] argv) {
DomainParticipantQos qos = new DomainParticipantQos();
_factory.get_participant_qos_from_profile(qos, "PerftestQosLibrary" , "BaseProfileQos");
- // set participant to be able to receive and process packets up to 64K
+ if (_secureUseSecure) {
+ // validate arguments
+ if (!validateSecureArgs()) {
+ System.err.println("Failure validating arguments");
+ return false;
+ }
+ configureSecurePlugin(qos);
+ }
qos.transport_builtin.mask = TransportBuiltinKind.UDPv4;
// set transports to use
if (_UseTcpOnly) {
qos.transport_builtin.mask = TransportBuiltinKind.MASK_NONE;
- PropertyQosPolicyHelper.add_property(qos.property,
- "dds.transport.load_plugins", "dds.transport.TCPv4.tcp1",
- false);
+ PropertyQosPolicyHelper.add_property(
+ qos.property,
+ "dds.transport.load_plugins",
+ "dds.transport.TCPv4.tcp1",
+ false);
}
else{
if (_useSharedMemory)
@@ -336,10 +327,10 @@ public boolean initialize(int argc, String[] argv) {
}
if (_AutoThrottle) {
- PropertyQosPolicyHelper.add_property(qos.property,
- "dds.domain_participant.auto_throttle.enable", "true",
+ PropertyQosPolicyHelper.add_property(qos.property,
+ "dds.domain_participant.auto_throttle.enable", "true",
false);
- }
+ }
if (!_UseTcpOnly) {
@@ -400,7 +391,6 @@ public boolean initialize(int argc, String[] argv) {
return true;
}
-
public IMessagingWriter createWriter(String topicName) {
DataWriter writer = null;
DataWriterQos dwQos = new DataWriterQos();
@@ -465,7 +455,6 @@ public IMessagingWriter createWriter(String topicName) {
return pub;
}
-
public IMessagingReader createReader(String topicName,
IMessagingCB callback) {
Topic topic = _participant.create_topic(
@@ -542,11 +531,210 @@ public IMessagingReader createReader(String topicName,
return sub;
}
-
-
// -----------------------------------------------------------------------
// Private Methods
// -----------------------------------------------------------------------
+ private boolean validateSecureArgs() {
+ if (_secureUseSecure) {
+
+ if (_securePrivateKeyFile == null) {
+ if (_isPublisher) {
+ _securePrivateKeyFile = SECUREPRIVATEKEYFILEPUB;
+ } else {
+ _securePrivateKeyFile = SECUREPRIVATEKEYFILESUB;
+ }
+ }
+
+ if (_secureCertificateFile == null) {
+ if (_isPublisher) {
+ _secureCertificateFile = SECURECERTIFICATEFILEPUB;
+ } else {
+ _secureCertificateFile = SECURECERTIFICATEFILESUB;
+ }
+ }
+
+ if (_secureCertAuthorityFile == null) {
+ _secureCertAuthorityFile = SECURECERTAUTHORITYFILE;
+ }
+
+ if (_securePermissionsFile == null) {
+ if (_isPublisher) {
+ _securePermissionsFile = SECUREPERMISIONFILEPUB;
+ } else {
+ _securePermissionsFile = SECUREPERMISIONFILESUB;
+ }
+ }
+
+ if (_secureLibrary == null) {
+ _secureLibrary = SECURELIBRARYNAME;
+ }
+ }
+
+ return true;
+ }
+
+ private void printSecureArgs() {
+
+ String secure_arguments_string =
+ "Secure Arguments:\n" +
+ "\t encrypt discovery: " + _secureIsDiscoveryEncrypted + "\n" +
+ "\t encrypt topic (user) data: " + _secureIsDataEncrypted + "\n" +
+ "\t encrypt submessage: " + _secureIsSMEncrypted + "\n" +
+ "\t sign data: " +_secureIsSigned + "\n";
+
+ if (_governanceFile != null) {
+ secure_arguments_string += "\t governance file: " + _governanceFile
+ + "\n";
+ } else {
+ secure_arguments_string += "\t governance file: Not specified\n";
+ }
+
+ if (_securePermissionsFile != null) {
+ secure_arguments_string += "\t permissions file: " + _securePermissionsFile
+ + "\n";
+ } else {
+ secure_arguments_string += "\t permissions file: Not specified\n";
+ }
+
+ if (_securePrivateKeyFile != null) {
+ secure_arguments_string += "\t private key file: " + _securePrivateKeyFile
+ + "\n";
+ } else {
+ secure_arguments_string += "\t private key file: Not specified\n";
+ }
+
+ if (_secureCertificateFile != null) {
+ secure_arguments_string += "\t certificate file: " + _secureCertificateFile
+ + "\n";
+ } else {
+ secure_arguments_string += "\t certificate file: Not specified\n";
+ }
+
+ if (_secureCertAuthorityFile != null) {
+ secure_arguments_string += "\t certificate authority file: "
+ + _secureCertAuthorityFile + "\n";
+ } else {
+ secure_arguments_string += "\t certificate authority file: Not specified\n";
+ }
+
+ if (_secureLibrary != null) {
+ secure_arguments_string += "\t plugin library: " + _secureLibrary + "\n";
+ } else {
+ secure_arguments_string += "\t plugin library: Not specified\n";
+ }
+
+ if( _secyreDebugLevel != -1 ){
+ secure_arguments_string += "\t debug level: " + _secyreDebugLevel + "\n";
+ }
+ System.out.print(secure_arguments_string);
+ }
+
+ private void configureSecurePlugin(DomainParticipantQos dpQos) {
+ // configure use of security plugins, based on provided arguments
+
+ // print arguments
+ printSecureArgs();
+
+ // load plugin
+ PropertyQosPolicyHelper.add_property(
+ dpQos.property,
+ "com.rti.serv.load_plugin",
+ "com.rti.serv.secure",
+ false);
+
+ PropertyQosPolicyHelper.add_property(
+ dpQos.property,
+ "com.rti.serv.secure.create_function",
+ "RTI_Security_PluginSuite_create",
+ false);
+
+ PropertyQosPolicyHelper.add_property(
+ dpQos.property,
+ "com.rti.serv.secure.library",
+ _secureLibrary,
+ false);
+
+ // check if governance file provided
+ if (_governanceFile == null) {
+ // choose a pre-built governance file
+ String file = "resource/secure/signed_PerftestGovernance_";
+
+ if (_secureIsDiscoveryEncrypted) {
+ file += "Discovery";
+ }
+
+ if (_secureIsSigned) {
+ file += "Sign";
+ }
+
+ if (_secureIsDataEncrypted && _secureIsSMEncrypted) {
+ file += "EncryptBoth";
+ } else if (_secureIsDataEncrypted) {
+ file += "EncryptData";
+ } else if (_secureIsSMEncrypted) {
+ file += "EncryptSubmessage";
+ }
+
+ file = file + ".xml";
+
+ System.out.println("Secure: using pre-built governance file:" +
+ file);
+ PropertyQosPolicyHelper.add_property(
+ dpQos.property,
+ "com.rti.serv.secure.access_control.governance_file",
+ file,
+ false);
+ } else {
+ PropertyQosPolicyHelper.add_property(
+ dpQos.property,
+ "com.rti.serv.secure.access_control.governance_file",
+ _governanceFile,
+ false);
+ }
+
+ // permissions file
+ PropertyQosPolicyHelper.add_property(
+ dpQos.property,
+ "com.rti.serv.secure.access_control.permissions_file",
+ _securePermissionsFile,
+ false);
+
+ // permissions authority file
+ PropertyQosPolicyHelper.add_property(
+ dpQos.property,
+ "com.rti.serv.secure.access_control.permissions_authority_file",
+ _secureCertAuthorityFile,
+ false);
+
+ // certificate authority
+ PropertyQosPolicyHelper.add_property(
+ dpQos.property,
+ "com.rti.serv.secure.authentication.ca_file",
+ _secureCertAuthorityFile,
+ false);
+
+ // public key
+ PropertyQosPolicyHelper.add_property(
+ dpQos.property,
+ "com.rti.serv.secure.authentication.certificate_file",
+ _secureCertificateFile,
+ false);
+
+ // private key
+ PropertyQosPolicyHelper.add_property(
+ dpQos.property,
+ "com.rti.serv.secure.authentication.private_key_file",
+ _securePrivateKeyFile,
+ false);
+
+ if (_secyreDebugLevel != -1) {
+ PropertyQosPolicyHelper.add_property(
+ dpQos.property,
+ "com.rti.serv.secure.logging.log_level",
+ (new Integer(_secyreDebugLevel)).toString(),
+ false);
+ }
+ }
private void configureWriterQos(
String topicName, String qosProfile, DataWriterQos dwQos) {
@@ -580,13 +768,13 @@ private void configureWriterQos(
if (_batchSize > 0) {
dwQos.batch.enable = true;
dwQos.batch.max_data_bytes = _batchSize;
- dwQos.resource_limits.max_samples = ResourceLimitsQosPolicy.LENGTH_UNLIMITED;
+ dwQos.resource_limits.max_samples = ResourceLimitsQosPolicy.LENGTH_UNLIMITED;
dwQos.writer_resource_limits.max_batches = _sendQueueSize;
} else {
dwQos.resource_limits.max_samples = _sendQueueSize;
}
-
+
if (_heartbeatPeriod.sec > 0 || _heartbeatPeriod.nanosec > 0) {
// set the heartbeat_period
dwQos.protocol.rtps_reliable_writer.heartbeat_period.sec = _heartbeatPeriod.sec;
@@ -600,23 +788,22 @@ private void configureWriterQos(
dwQos.protocol.rtps_reliable_writer.fast_heartbeat_period.sec = _fastHeartbeatPeriod.sec;
dwQos.protocol.rtps_reliable_writer.fast_heartbeat_period.nanosec = _fastHeartbeatPeriod.nanosec;
}
-
+
if (_AutoThrottle) {
- PropertyQosPolicyHelper.add_property(
- dwQos.property, "dds.data_writer.auto_throttle.enable",
+ PropertyQosPolicyHelper.add_property(
+ dwQos.property, "dds.data_writer.auto_throttle.enable",
"true", false);
}
-
+
if (_TurboMode) {
- PropertyQosPolicyHelper.add_property(
- dwQos.property, "dds.data_writer.enable_turbo_mode",
+ PropertyQosPolicyHelper.add_property(
+ dwQos.property, "dds.data_writer.enable_turbo_mode",
"true", false);
- dwQos.batch.enable = false;
+ dwQos.batch.enable = false;
dwQos.resource_limits.max_samples = ResourceLimitsQosPolicy.LENGTH_UNLIMITED;
dwQos.writer_resource_limits.max_batches = _sendQueueSize;
}
-
-
+
dwQos.resource_limits.initial_samples = _sendQueueSize;
dwQos.resource_limits.max_samples_per_instance
= dwQos.resource_limits.max_samples;
@@ -637,16 +824,16 @@ private void configureWriterQos(
}
dwQos.durability.direct_communication = _directCommunication;
-
+
dwQos.protocol.rtps_reliable_writer.heartbeats_per_max_samples = _sendQueueSize / 10;
-
+
dwQos.protocol.rtps_reliable_writer.low_watermark = _sendQueueSize * 1 / 10;
dwQos.protocol.rtps_reliable_writer.high_watermark = _sendQueueSize * 9 / 10;
dwQos.protocol.rtps_reliable_writer.max_send_window_size =
- _sendQueueSize;
+ _sendQueueSize;
dwQos.protocol.rtps_reliable_writer.min_send_window_size =
- _sendQueueSize;
+ _sendQueueSize;
}
@@ -678,7 +865,6 @@ private void configureWriterQos(
}
}
-
private void configureReaderQos(
String topicName, String qosProfile, DataReaderQos drQos) {
// Configure reliability
@@ -765,7 +951,6 @@ private void configureReaderQos(
}
}
-
private boolean parseConfig(int argc, String[] argv) {
for (int i = 0; i < argc; ++i) {
@@ -773,7 +958,11 @@ private boolean parseConfig(int argc, String[] argv) {
if ("-scan".toLowerCase().startsWith(argv[i].toLowerCase()))
{
_isScan = true;
- } else if ("-dataLen".toLowerCase().startsWith(argv[i].toLowerCase())) {
+ }
+ else if ("-pub".toLowerCase().startsWith(argv[i].toLowerCase())) {
+ _isPublisher = true;
+ }
+ else if ("-dataLen".toLowerCase().startsWith(argv[i].toLowerCase())) {
if ((i == (argc - 1)) || argv[++i].startsWith("-")) {
System.err.print("Missing after -dataLen\n");
return false;
@@ -1013,6 +1202,77 @@ else if ("-noPositiveAcks".toLowerCase().startsWith(argv[i].toLowerCase())) {
_AutoThrottle = true;
} else if ("-enableTurboMode".toLowerCase().startsWith(argv[i].toLowerCase())) {
_TurboMode = true;
+ } else if ("-secureSign".toLowerCase().startsWith(argv[i].toLowerCase())) {
+ _secureIsSigned = true;
+ _secureUseSecure = true;
+ } else if ("-secureEncryptBoth".toLowerCase().startsWith(argv[i].toLowerCase())) {
+ _secureIsDataEncrypted = true;
+ _secureIsSMEncrypted = true;
+ _secureUseSecure = true;
+ } else if ("-secureEncryptData".toLowerCase().startsWith(argv[i].toLowerCase())) {
+ _secureIsDataEncrypted = true;
+ _secureUseSecure = true;
+ } else if ("-secureEncryptSM".toLowerCase().startsWith(argv[i].toLowerCase())) {
+ _secureIsSMEncrypted = true;
+ _secureUseSecure = true;
+ } else if ("-secureEncryptDiscovery".toLowerCase().startsWith(argv[i].toLowerCase())) {
+ _secureIsDiscoveryEncrypted = true;
+ _secureUseSecure = true;
+ } else if ("-secureGovernanceFile".toLowerCase().startsWith(argv[i].toLowerCase())) {
+ if ((i == (argc - 1)) || argv[++i].startsWith("-")) {
+ System.err.print("Missing after -secureGovernanceFile\n");
+ return false;
+ }
+ _governanceFile = argv[i];
+ System.out.println("Warning -- authentication, encryption, signing arguments " +
+ "will be ignored, and the values specified by the Governance file will " +
+ "be used instead");
+ _secureUseSecure = true;
+ } else if ("-securePermissionsFile".toLowerCase().startsWith(argv[i].toLowerCase())) {
+ if ((i == (argc - 1)) || argv[++i].startsWith("-")) {
+ System.err.print("Missing after -securePermissionsFile\n");
+ return false;
+ }
+ _securePermissionsFile = argv[i];
+ _secureUseSecure = true;
+ } else if ("-secureCertAuthority".toLowerCase().startsWith(argv[i].toLowerCase())) {
+ if ((i == (argc - 1)) || argv[++i].startsWith("-")) {
+ System.err.print("Missing after -secureCertAuthority\n");
+ return false;
+ }
+ _secureCertAuthorityFile = argv[i];
+ _secureUseSecure = true;
+ } else if ("-secureCertFile".toLowerCase().startsWith(argv[i].toLowerCase())) {
+ if ((i == (argc - 1)) || argv[++i].startsWith("-")) {
+ System.err.print("Missing after -secureCertAuthority\n");
+ return false;
+ }
+ _secureCertificateFile = argv[i];
+ _secureUseSecure = true;
+ } else if ("-securePrivateKey".toLowerCase().startsWith(argv[i].toLowerCase())) {
+ if ((i == (argc - 1)) || argv[++i].startsWith("-")) {
+ System.err.print("Missing after -securePrivateKey\n");
+ return false;
+ }
+ _securePrivateKeyFile = argv[i];
+ _secureUseSecure = true;
+ } else if ("-secureLibrary".toLowerCase().startsWith(argv[i].toLowerCase())) {
+ if ((i == (argc - 1)) || argv[++i].startsWith("-")) {
+ System.err.print("Missing after -secureLibrary\n");
+ return false;
+ }
+ _secureLibrary = argv[i];
+ } else if ("-secureDebug".toLowerCase().startsWith(argv[i].toLowerCase())) {
+ if ((i == (argc - 1)) || argv[++i].startsWith("-")) {
+ System.err.print("Missing after -secureDebug\n");
+ return false;
+ }
+ try {
+ _secyreDebugLevel = Integer.parseInt(argv[i]);
+ } catch (NumberFormatException nfx) {
+ System.err.print("Bad value for -secureDebug\n");
+ return false;
+ }
} else {
System.err.print(argv[i] + ": not recognized\n");
return false;
@@ -1044,4 +1304,5 @@ else if ("-noPositiveAcks".toLowerCase().startsWith(argv[i].toLowerCase())) {
}
// ===========================================================================
-// End of $Id: RTIDDSImpl.java,v 1.17 2015/05/09 18:06:06 jmorales Exp $
+
+// End of $Id$
diff --git a/perftest_java/com/rti/perftest/ddsimpl/RTIPublisher.java b/perftest_java/com/rti/perftest/ddsimpl/RTIPublisher.java
index 32ca327b..7304b913 100644
--- a/perftest_java/com/rti/perftest/ddsimpl/RTIPublisher.java
+++ b/perftest_java/com/rti/perftest/ddsimpl/RTIPublisher.java
@@ -1,25 +1,8 @@
-/* $Id: RTIPublisher.java,v 1.4 2014/08/12 10:21:28 jmorales Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history:
---------------------
-5.1.0,11aug14,jm PERFTEST-69 Added -keyed command line option.
-09jul10,jsr Added new waitForPingResponse with timeout
-07jul10,eys Fixed return value for wiatForPingResponse and notifyPingResponse
-03may10,jsr Added waitForPingResponse and notifyPingResponse
-21may09,fcs Optimized send for unkeyed topics
-14aug08,ch optimized changing the key value before write
-09aug08,ch Key support, multi-instances, durability
-01may08,hhw Removed singleCore option.
-18apr08,eys Added loan() and unloan() feature to octet sequence
-03apr08,rbw Fixed byte copy
-02apr08,rbw Fixed syntax error in printf() calls
-01apr08,rbw Follow Java naming conventions
-01apr08,rbw Created
-=========================================================================== */
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest.ddsimpl;
@@ -167,4 +150,4 @@ public boolean notifyPingResponse()
}
// ===========================================================================
-// End of $Id: RTIPublisher.java,v 1.4 2014/08/12 10:21:28 jmorales Exp $
+// End of $Id$
diff --git a/perftest_java/com/rti/perftest/ddsimpl/RTISubscriber.java b/perftest_java/com/rti/perftest/ddsimpl/RTISubscriber.java
index f8dba617..585b6edd 100644
--- a/perftest_java/com/rti/perftest/ddsimpl/RTISubscriber.java
+++ b/perftest_java/com/rti/perftest/ddsimpl/RTISubscriber.java
@@ -1,17 +1,8 @@
-/* $Id: RTISubscriber.java,v 1.4 2014/08/12 10:21:28 jmorales Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history:
---------------------
-5.1.0,11aug14,jm PERFTEST-69 Added -keyed command line option.
-04may08,hhw Added WaitForWriters()
-02apr08,rbw Fixed syntax error in printf() calls
-01apr08,rbw Follow Java naming conventions
-01apr08,rbw Created
-=========================================================================== */
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest.ddsimpl;
@@ -184,4 +175,4 @@ public void waitForWriters(int numPublishers) {
}
// ===========================================================================
-// End of $Id: RTISubscriber.java,v 1.4 2014/08/12 10:21:28 jmorales Exp $
+// End of $Id$
diff --git a/perftest_java/com/rti/perftest/ddsimpl/ReceiverListener.java b/perftest_java/com/rti/perftest/ddsimpl/ReceiverListener.java
index 247a4582..0eb7ec9c 100644
--- a/perftest_java/com/rti/perftest/ddsimpl/ReceiverListener.java
+++ b/perftest_java/com/rti/perftest/ddsimpl/ReceiverListener.java
@@ -1,16 +1,8 @@
-/* $Id: ReceiverListener.java,v 1.4 2014/08/12 10:21:28 jmorales Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history:
---------------------
-5.1.0,11aug14,jm PERFTEST-69 Added -keyed command line option.
-02apr08,rbw Fixed syntax error in printf() calls
-01apr08,rbw Follow Java naming conventions
-01apr08,rbw Created
-=========================================================================== */
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest.ddsimpl;
@@ -105,4 +97,4 @@ public void on_data_available(DataReader reader) {
}
// ===========================================================================
-// End of $Id: ReceiverListener.java,v 1.4 2014/08/12 10:21:28 jmorales Exp $
+// End of $Id$
diff --git a/perftest_java/com/rti/perftest/ddsimpl/TypeHelper.java b/perftest_java/com/rti/perftest/ddsimpl/TypeHelper.java
index a37bffb7..b71d2f9b 100644
--- a/perftest_java/com/rti/perftest/ddsimpl/TypeHelper.java
+++ b/perftest_java/com/rti/perftest/ddsimpl/TypeHelper.java
@@ -1,10 +1,8 @@
/*
-
-modification history:
---------------------
- 5.1.0,11aug14,jm PERFTEST-69 Added -keyed command line option.
-
-*/
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest.ddsimpl;
diff --git a/perftest_java/com/rti/perftest/gen/KEY_SIZE.java b/perftest_java/com/rti/perftest/gen/KEY_SIZE.java
deleted file mode 100644
index 0a60ad1e..00000000
--- a/perftest_java/com/rti/perftest/gen/KEY_SIZE.java
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-/*
-WARNING: THIS FILE IS AUTO-GENERATED. DO NOT MODIFY.
-
-This file was generated from .idl using "rtiddsgen".
-The rtiddsgen tool is part of the RTI Connext distribution.
-For more information, type 'rtiddsgen -help' at a command shell
-or consult the RTI Connext manual.
-*/
-
-package com.rti.perftest.gen;
-
-public class KEY_SIZE {
-
- public static final int VALUE = 4;
-}
diff --git a/perftest_java/com/rti/perftest/gen/MAX_BINDATA_SIZE.java b/perftest_java/com/rti/perftest/gen/MAX_BINDATA_SIZE.java
deleted file mode 100644
index 3317e75a..00000000
--- a/perftest_java/com/rti/perftest/gen/MAX_BINDATA_SIZE.java
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-/*
-WARNING: THIS FILE IS AUTO-GENERATED. DO NOT MODIFY.
-
-This file was generated from .idl using "rtiddsgen".
-The rtiddsgen tool is part of the RTI Connext distribution.
-For more information, type 'rtiddsgen -help' at a command shell
-or consult the RTI Connext manual.
-*/
-
-package com.rti.perftest.gen;
-
-public class MAX_BINDATA_SIZE {
-
- public static final int VALUE = 131072;
-}
diff --git a/perftest_java/com/rti/perftest/gen/TestDataKeyed_t.java b/perftest_java/com/rti/perftest/gen/TestDataKeyed_t.java
deleted file mode 100644
index 8e1022b3..00000000
--- a/perftest_java/com/rti/perftest/gen/TestDataKeyed_t.java
+++ /dev/null
@@ -1,195 +0,0 @@
-
-
-/*
-WARNING: THIS FILE IS AUTO-GENERATED. DO NOT MODIFY.
-
-This file was generated from .idl using "rtiddsgen".
-The rtiddsgen tool is part of the RTI Connext distribution.
-For more information, type 'rtiddsgen -help' at a command shell
-or consult the RTI Connext manual.
-*/
-
-package com.rti.perftest.gen;
-
-import com.rti.dds.infrastructure.*;
-import com.rti.dds.infrastructure.Copyable;
-import java.io.Serializable;
-import com.rti.dds.cdr.CdrHelper;
-
-public class TestDataKeyed_t implements Copyable, Serializable{
-
- public byte [] key= new byte [(com.rti.perftest.gen.KEY_SIZE.VALUE)];
- public int entity_id= 0;
- public int seq_num= 0;
- public int timestamp_sec= 0;
- public int timestamp_usec= 0;
- public int latency_ping= 0;
- public ByteSeq bin_data = new ByteSeq(((com.rti.perftest.gen.MAX_BINDATA_SIZE.VALUE)));
-
- public TestDataKeyed_t() {
-
- }
- public TestDataKeyed_t (TestDataKeyed_t other) {
-
- this();
- copy_from(other);
- }
-
- public static Object create() {
-
- TestDataKeyed_t self;
- self = new TestDataKeyed_t();
- self.clear();
- return self;
-
- }
-
- public void clear() {
-
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- key[i1__] = 0;
- }
-
- entity_id= 0;
- seq_num= 0;
- timestamp_sec= 0;
- timestamp_usec= 0;
- latency_ping= 0;
- if (bin_data != null) {
- bin_data.clear();
- }
- }
-
- public boolean equals(Object o) {
-
- if (o == null) {
- return false;
- }
-
- if(getClass() != o.getClass()) {
- return false;
- }
-
- TestDataKeyed_t otherObj = (TestDataKeyed_t)o;
-
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- if(key[i1__] != otherObj.key[i1__]) {
- return false;
- }
- }
-
- if(entity_id != otherObj.entity_id) {
- return false;
- }
- if(seq_num != otherObj.seq_num) {
- return false;
- }
- if(timestamp_sec != otherObj.timestamp_sec) {
- return false;
- }
- if(timestamp_usec != otherObj.timestamp_usec) {
- return false;
- }
- if(latency_ping != otherObj.latency_ping) {
- return false;
- }
- if(!bin_data.equals(otherObj.bin_data)) {
- return false;
- }
-
- return true;
- }
-
- public int hashCode() {
- int __result = 0;
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- __result += (int)key[i1__];
- }
-
- __result += (int)entity_id;
- __result += (int)seq_num;
- __result += (int)timestamp_sec;
- __result += (int)timestamp_usec;
- __result += (int)latency_ping;
- __result += bin_data.hashCode();
- return __result;
- }
-
- /**
- * This is the implementation of the Copyable
interface.
- * This method will perform a deep copy of src
- * This method could be placed into TestDataKeyed_tTypeSupport
- * rather than here by using the -noCopyable
option
- * to rtiddsgen.
- *
- * @param src The Object which contains the data to be copied.
- * @return Returns this
.
- * @exception NullPointerException If src
is null.
- * @exception ClassCastException If src
is not the
- * same type as this
.
- * @see com.rti.dds.infrastructure.Copyable#copy_from(java.lang.Object)
- */
- public Object copy_from(Object src) {
-
- TestDataKeyed_t typedSrc = (TestDataKeyed_t) src;
- TestDataKeyed_t typedDst = this;
-
- System.arraycopy(typedSrc.key,0,
- typedDst.key,0,
- typedSrc.key.length);
-
- typedDst.entity_id = typedSrc.entity_id;
- typedDst.seq_num = typedSrc.seq_num;
- typedDst.timestamp_sec = typedSrc.timestamp_sec;
- typedDst.timestamp_usec = typedSrc.timestamp_usec;
- typedDst.latency_ping = typedSrc.latency_ping;
- typedDst.bin_data.copy_from(typedSrc.bin_data);
-
- return this;
- }
-
- public String toString(){
- return toString("", 0);
- }
-
- public String toString(String desc, int indent) {
- StringBuffer strBuffer = new StringBuffer();
-
- if (desc != null) {
- CdrHelper.printIndent(strBuffer, indent);
- strBuffer.append(desc).append(":\n");
- }
-
- CdrHelper.printIndent(strBuffer, indent+1);
- strBuffer.append("key: ");
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- strBuffer.append(key[i1__]).append(", ");
- }
-
- strBuffer.append("\n");
- CdrHelper.printIndent(strBuffer, indent+1);
- strBuffer.append("entity_id: ").append(entity_id).append("\n");
- CdrHelper.printIndent(strBuffer, indent+1);
- strBuffer.append("seq_num: ").append(seq_num).append("\n");
- CdrHelper.printIndent(strBuffer, indent+1);
- strBuffer.append("timestamp_sec: ").append(timestamp_sec).append("\n");
- CdrHelper.printIndent(strBuffer, indent+1);
- strBuffer.append("timestamp_usec: ").append(timestamp_usec).append("\n");
- CdrHelper.printIndent(strBuffer, indent+1);
- strBuffer.append("latency_ping: ").append(latency_ping).append("\n");
- CdrHelper.printIndent(strBuffer, indent+1);
- strBuffer.append("bin_data: ");
- for(int i__ = 0; i__ < bin_data.size(); ++i__) {
- if (i__!=0) strBuffer.append(", ");
- strBuffer.append(bin_data.get(i__));
- }
- strBuffer.append("\n");
-
- return strBuffer.toString();
- }
-
-}
diff --git a/perftest_java/com/rti/perftest/gen/TestDataKeyed_tDataReader.java b/perftest_java/com/rti/perftest/gen/TestDataKeyed_tDataReader.java
deleted file mode 100644
index 40134994..00000000
--- a/perftest_java/com/rti/perftest/gen/TestDataKeyed_tDataReader.java
+++ /dev/null
@@ -1,160 +0,0 @@
-
-
-/*
-WARNING: THIS FILE IS AUTO-GENERATED. DO NOT MODIFY.
-
-This file was generated from .idl using "rtiddsgen".
-The rtiddsgen tool is part of the RTI Connext distribution.
-For more information, type 'rtiddsgen -help' at a command shell
-or consult the RTI Connext manual.
-*/
-
-package com.rti.perftest.gen;
-
-import com.rti.dds.infrastructure.InstanceHandle_t;
-import com.rti.dds.subscription.DataReaderImpl;
-import com.rti.dds.subscription.DataReaderListener;
-import com.rti.dds.subscription.ReadCondition;
-import com.rti.dds.subscription.SampleInfo;
-import com.rti.dds.subscription.SampleInfoSeq;
-import com.rti.dds.topic.TypeSupportImpl;
-
-// ===========================================================================
-
-/**
-* A reader for the TestDataKeyed_t user type.
-*/
-public class TestDataKeyed_tDataReader extends DataReaderImpl {
- // -----------------------------------------------------------------------
- // Public Methods
- // -----------------------------------------------------------------------
-
- public void read(TestDataKeyed_tSeq received_data, SampleInfoSeq info_seq,
- int max_samples,
- int sample_states, int view_states, int instance_states) {
- read_untyped(received_data, info_seq, max_samples, sample_states,
- view_states, instance_states);
- }
-
- public void take(TestDataKeyed_tSeq received_data, SampleInfoSeq info_seq,
- int max_samples,
- int sample_states, int view_states, int instance_states) {
- take_untyped(received_data, info_seq, max_samples, sample_states,
- view_states, instance_states);
- }
-
- public void read_w_condition(TestDataKeyed_tSeq received_data,
- SampleInfoSeq info_seq,
- int max_samples,
- ReadCondition condition) {
- read_w_condition_untyped(received_data, info_seq, max_samples,
- condition);
- }
-
- public void take_w_condition(TestDataKeyed_tSeq received_data,
- SampleInfoSeq info_seq,
- int max_samples,
- ReadCondition condition) {
- take_w_condition_untyped(received_data, info_seq, max_samples,
- condition);
- }
-
- public void read_next_sample(TestDataKeyed_t received_data, SampleInfo sample_info) {
- read_next_sample_untyped(received_data, sample_info);
- }
-
- public void take_next_sample(TestDataKeyed_t received_data, SampleInfo sample_info) {
- take_next_sample_untyped(received_data, sample_info);
- }
-
- public void read_instance(TestDataKeyed_tSeq received_data, SampleInfoSeq info_seq,
- int max_samples, InstanceHandle_t a_handle, int sample_states,
- int view_states, int instance_states) {
-
- read_instance_untyped(received_data, info_seq, max_samples, a_handle,
- sample_states, view_states, instance_states);
- }
-
- public void take_instance(TestDataKeyed_tSeq received_data, SampleInfoSeq info_seq,
- int max_samples, InstanceHandle_t a_handle, int sample_states,
- int view_states, int instance_states) {
-
- take_instance_untyped(received_data, info_seq, max_samples, a_handle,
- sample_states, view_states, instance_states);
- }
-
- public void read_instance_w_condition(TestDataKeyed_tSeq received_data,
- SampleInfoSeq info_seq, int max_samples,
- InstanceHandle_t a_handle, ReadCondition condition) {
-
- read_instance_w_condition_untyped(received_data, info_seq,
- max_samples, a_handle, condition);
- }
-
- public void take_instance_w_condition(TestDataKeyed_tSeq received_data,
- SampleInfoSeq info_seq, int max_samples,
- InstanceHandle_t a_handle, ReadCondition condition) {
-
- take_instance_w_condition_untyped(received_data, info_seq,
- max_samples, a_handle, condition);
- }
-
- public void read_next_instance(TestDataKeyed_tSeq received_data,
- SampleInfoSeq info_seq, int max_samples,
- InstanceHandle_t a_handle, int sample_states, int view_states,
- int instance_states) {
-
- read_next_instance_untyped(received_data, info_seq, max_samples,
- a_handle, sample_states, view_states, instance_states);
- }
-
- public void take_next_instance(TestDataKeyed_tSeq received_data,
- SampleInfoSeq info_seq, int max_samples,
- InstanceHandle_t a_handle, int sample_states, int view_states,
- int instance_states) {
-
- take_next_instance_untyped(received_data, info_seq, max_samples,
- a_handle, sample_states, view_states, instance_states);
- }
-
- public void read_next_instance_w_condition(TestDataKeyed_tSeq received_data,
- SampleInfoSeq info_seq, int max_samples,
- InstanceHandle_t a_handle, ReadCondition condition) {
-
- read_next_instance_w_condition_untyped(received_data, info_seq,
- max_samples, a_handle, condition);
- }
-
- public void take_next_instance_w_condition(TestDataKeyed_tSeq received_data,
- SampleInfoSeq info_seq, int max_samples,
- InstanceHandle_t a_handle, ReadCondition condition) {
-
- take_next_instance_w_condition_untyped(received_data, info_seq,
- max_samples, a_handle, condition);
- }
-
- public void return_loan(TestDataKeyed_tSeq received_data, SampleInfoSeq info_seq) {
- return_loan_untyped(received_data, info_seq);
- }
-
- public void get_key_value(TestDataKeyed_t key_holder, InstanceHandle_t handle){
- get_key_value_untyped(key_holder, handle);
- }
-
- public InstanceHandle_t lookup_instance(TestDataKeyed_t key_holder) {
- return lookup_instance_untyped(key_holder);
- }
-
- // -----------------------------------------------------------------------
- // Package Methods
- // -----------------------------------------------------------------------
-
- // --- Constructors: -----------------------------------------------------
-
- /*package*/ TestDataKeyed_tDataReader (long native_reader, DataReaderListener listener,
- int mask, TypeSupportImpl data_type) {
- super(native_reader, listener, mask, data_type);
- }
-
-}
-
diff --git a/perftest_java/com/rti/perftest/gen/TestDataKeyed_tDataWriter.java b/perftest_java/com/rti/perftest/gen/TestDataKeyed_tDataWriter.java
deleted file mode 100644
index 09fa7ab1..00000000
--- a/perftest_java/com/rti/perftest/gen/TestDataKeyed_tDataWriter.java
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-/*
-WARNING: THIS FILE IS AUTO-GENERATED. DO NOT MODIFY.
-
-This file was generated from .idl using "rtiddsgen".
-The rtiddsgen tool is part of the RTI Connext distribution.
-For more information, type 'rtiddsgen -help' at a command shell
-or consult the RTI Connext manual.
-*/
-
-package com.rti.perftest.gen;
-
-import com.rti.dds.infrastructure.Time_t;
-import com.rti.dds.infrastructure.WriteParams_t;
-import com.rti.dds.infrastructure.InstanceHandle_t;
-import com.rti.dds.publication.DataWriterImpl;
-import com.rti.dds.publication.DataWriterListener;
-import com.rti.dds.topic.TypeSupportImpl;
-
-// ===========================================================================
-/**
-* A writer for the TestDataKeyed_t user type.
-*/
-public class TestDataKeyed_tDataWriter extends DataWriterImpl {
- // -----------------------------------------------------------------------
- // Public Methods
- // -----------------------------------------------------------------------
-
- public InstanceHandle_t register_instance(TestDataKeyed_t instance_data) {
- return register_instance_untyped(instance_data);
- }
-
- public InstanceHandle_t register_instance_w_timestamp(TestDataKeyed_t instance_data,
- Time_t source_timestamp) {
- return register_instance_w_timestamp_untyped(
- instance_data, source_timestamp);
- }
-
- public InstanceHandle_t register_instance_w_params(TestDataKeyed_t instance_data,
- WriteParams_t params) {
- return register_instance_w_params_untyped(
- instance_data, params);
- }
-
- public void unregister_instance(TestDataKeyed_t instance_data,
- InstanceHandle_t handle) {
- unregister_instance_untyped(instance_data, handle);
- }
-
- public void unregister_instance_w_timestamp(TestDataKeyed_t instance_data,
- InstanceHandle_t handle, Time_t source_timestamp) {
-
- unregister_instance_w_timestamp_untyped(
- instance_data, handle, source_timestamp);
- }
-
- public void unregister_instance_w_params(TestDataKeyed_t instance_data,
- WriteParams_t params) {
-
- unregister_instance_w_params_untyped(
- instance_data, params);
- }
-
- public void write(TestDataKeyed_t instance_data, InstanceHandle_t handle) {
- write_untyped(instance_data, handle);
- }
-
- public void write_w_timestamp(TestDataKeyed_t instance_data,
- InstanceHandle_t handle, Time_t source_timestamp) {
-
- write_w_timestamp_untyped(instance_data, handle, source_timestamp);
- }
-
- public void write_w_params(TestDataKeyed_t instance_data,
- WriteParams_t params) {
-
- write_w_params_untyped(instance_data, params);
- }
-
- public void dispose(TestDataKeyed_t instance_data, InstanceHandle_t instance_handle){
- dispose_untyped(instance_data, instance_handle);
- }
-
- public void dispose_w_timestamp(TestDataKeyed_t instance_data,
- InstanceHandle_t instance_handle, Time_t source_timestamp) {
-
- dispose_w_timestamp_untyped(
- instance_data, instance_handle, source_timestamp);
- }
-
- public void dispose_w_params(TestDataKeyed_t instance_data,
- WriteParams_t params) {
-
- dispose_w_params_untyped(instance_data, params);
- }
-
- public void get_key_value(TestDataKeyed_t key_holder, InstanceHandle_t handle) {
- get_key_value_untyped(key_holder, handle);
- }
-
- public InstanceHandle_t lookup_instance(TestDataKeyed_t key_holder) {
- return lookup_instance_untyped(key_holder);
- }
-
- // -----------------------------------------------------------------------
- // Package Methods
- // -----------------------------------------------------------------------
-
- // --- Constructors: -----------------------------------------------------
-
- /*package*/ TestDataKeyed_tDataWriter(long native_writer, DataWriterListener listener,
- int mask, TypeSupportImpl type) {
- super(native_writer, listener, mask, type);
- }
-}
-
diff --git a/perftest_java/com/rti/perftest/gen/TestDataKeyed_tSeq.java b/perftest_java/com/rti/perftest/gen/TestDataKeyed_tSeq.java
deleted file mode 100644
index 2732a5e6..00000000
--- a/perftest_java/com/rti/perftest/gen/TestDataKeyed_tSeq.java
+++ /dev/null
@@ -1,119 +0,0 @@
-
-/*
-WARNING: THIS FILE IS AUTO-GENERATED. DO NOT MODIFY.
-
-This file was generated from .idl using "rtiddsgen".
-The rtiddsgen tool is part of the RTI Connext distribution.
-For more information, type 'rtiddsgen -help' at a command shell
-or consult the RTI Connext manual.
-*/
-
-package com.rti.perftest.gen;
-
-import java.util.Collection;
-
-import com.rti.dds.infrastructure.Copyable;
-import com.rti.dds.util.Enum;
-import com.rti.dds.util.Sequence;
-import com.rti.dds.util.LoanableSequence;
-
-/**
-* A sequence of TestDataKeyed_t instances.
-*/
-public final class TestDataKeyed_tSeq extends LoanableSequence implements Copyable {
- // -----------------------------------------------------------------------
- // Package Fields
- // -----------------------------------------------------------------------
-
- /**
- * When a memory loan has been taken out in the lower layers of
- * RTI Data Distribution Service, store a pointer to the native sequence here.
- * That way, when we call finish(), we can give the memory back.
- */
- /*package*/ transient Sequence _loanedInfoSequence = null;
-
- // -----------------------------------------------------------------------
- // Public Fields
- // -----------------------------------------------------------------------
-
- // --- Constructors: -----------------------------------------------------
-
- public TestDataKeyed_tSeq() {
- super(TestDataKeyed_t.class);
- }
-
- public TestDataKeyed_tSeq (int initialMaximum) {
- super(TestDataKeyed_t.class, initialMaximum);
- }
-
- public TestDataKeyed_tSeq (Collection elements) {
- super(TestDataKeyed_t.class, elements);
- }
-
- // --- From Copyable: ----------------------------------------------------
-
- /**
- * Copy data into this
object from another.
- * The result of this method is that both this
- * and src
will be the same size and contain the
- * same data.
- *
- * @param src The Object which contains the data to be copied
- * @return this
- * @exception NullPointerException If src
is null.
- * @exception ClassCastException If src
is not a
- * Sequence
OR if one of the objects contained in
- * the Sequence
is not of the expected type.
- * @see com.rti.dds.infrastructure.Copyable#copy_from(java.lang.Object)
- */
- public Object copy_from(Object src) {
- Sequence typedSrc = (Sequence) src;
- final int srcSize = typedSrc.size();
- final int origSize = size();
-
- // if this object's size is less than the source, ensure we have
- // enough room to store all of the objects
- if (getMaximum() < srcSize) {
- setMaximum(srcSize);
- }
-
- // trying to avoid clear() method here since it allocates memory
- // (an Iterator)
- // if the source object has fewer items than the current object,
- // remove from the end until the sizes are equal
- if (srcSize < origSize){
- removeRange(srcSize, origSize);
- }
-
- // copy the data from source into this (into positions that already
- // existed)
- for(int i = 0; (i < origSize) && (i < srcSize); i++){
- if (typedSrc.get(i) == null){
- set(i, null);
- } else {
- // check to see if our entry is null, if it is, a new instance has to be allocated
- if (get(i) == null){
-
- set(i, TestDataKeyed_t.create());
- }
- set(i, ((Copyable) get(i)).copy_from(typedSrc.get(i)));
- }
- }
-
- // copy 'new' TestDataKeyed_t objects (beyond the original size of this object)
- for(int i = origSize; i < srcSize; i++){
- if (typedSrc.get(i) == null) {
- add(null);
- } else {
- // NOTE: we need to create a new object here to hold the copy
- add(TestDataKeyed_t.create());
- // we need to do a set here since enums aren't truely Copyable
- set(i, ((Copyable) get(i)).copy_from(typedSrc.get(i)));
- }
- }
-
- return this;
- }
-
-}
-
diff --git a/perftest_java/com/rti/perftest/gen/TestDataKeyed_tTypeCode.java b/perftest_java/com/rti/perftest/gen/TestDataKeyed_tTypeCode.java
deleted file mode 100644
index b1c49414..00000000
--- a/perftest_java/com/rti/perftest/gen/TestDataKeyed_tTypeCode.java
+++ /dev/null
@@ -1,35 +0,0 @@
-
-/*
-WARNING: THIS FILE IS AUTO-GENERATED. DO NOT MODIFY.
-
-This file was generated from .idl using "rtiddsgen".
-The rtiddsgen tool is part of the RTI Connext distribution.
-For more information, type 'rtiddsgen -help' at a command shell
-or consult the RTI Connext manual.
-*/
-
-package com.rti.perftest.gen;
-
-import com.rti.dds.typecode.*;
-
-public class TestDataKeyed_tTypeCode {
- public static final TypeCode VALUE = getTypeCode();
-
- private static TypeCode getTypeCode() {
- TypeCode tc = null;
- int __i=0;
- StructMember sm[]=new StructMember[7];
-
- sm[__i]=new StructMember("key", false, (short)-1, true,(TypeCode) new TypeCode(new int[] {(com.rti.perftest.gen.KEY_SIZE.VALUE)}, TypeCode.TC_OCTET),0 , false);__i++;
- sm[__i]=new StructMember("entity_id", false, (short)-1, false,(TypeCode) TypeCode.TC_LONG,1 , false);__i++;
- sm[__i]=new StructMember("seq_num", false, (short)-1, false,(TypeCode) TypeCode.TC_ULONG,2 , false);__i++;
- sm[__i]=new StructMember("timestamp_sec", false, (short)-1, false,(TypeCode) TypeCode.TC_LONG,3 , false);__i++;
- sm[__i]=new StructMember("timestamp_usec", false, (short)-1, false,(TypeCode) TypeCode.TC_ULONG,4 , false);__i++;
- sm[__i]=new StructMember("latency_ping", false, (short)-1, false,(TypeCode) TypeCode.TC_LONG,5 , false);__i++;
- sm[__i]=new StructMember("bin_data", false, (short)-1, false,(TypeCode) new TypeCode((com.rti.perftest.gen.MAX_BINDATA_SIZE.VALUE), TypeCode.TC_OCTET),6 , false);__i++;
-
- tc = TypeCodeFactory.TheTypeCodeFactory.create_struct_tc("TestDataKeyed_t",ExtensibilityKind.EXTENSIBLE_EXTENSIBILITY, sm);
- return tc;
- }
-}
-
diff --git a/perftest_java/com/rti/perftest/gen/TestDataKeyed_tTypeSupport.java b/perftest_java/com/rti/perftest/gen/TestDataKeyed_tTypeSupport.java
deleted file mode 100644
index ef3a3d0a..00000000
--- a/perftest_java/com/rti/perftest/gen/TestDataKeyed_tTypeSupport.java
+++ /dev/null
@@ -1,694 +0,0 @@
-
-/*
-WARNING: THIS FILE IS AUTO-GENERATED. DO NOT MODIFY.
-
-This file was generated from .idl using "rtiddsgen".
-The rtiddsgen tool is part of the RTI Connext distribution.
-For more information, type 'rtiddsgen -help' at a command shell
-or consult the RTI Connext manual.
-*/
-
-package com.rti.perftest.gen;
-
-import com.rti.dds.cdr.CdrEncapsulation;
-import com.rti.dds.cdr.CdrInputStream;
-import com.rti.dds.cdr.CdrOutputStream;
-import com.rti.dds.cdr.CdrPrimitiveType;
-import com.rti.dds.cdr.CdrBuffer;
-import com.rti.dds.cdr.CdrHelper;
-import com.rti.dds.cdr.CdrMemberInfo;
-import com.rti.dds.domain.DomainParticipant;
-import com.rti.dds.publication.DataWriter;
-import com.rti.dds.publication.DataWriterListener;
-import com.rti.dds.subscription.DataReader;
-import com.rti.dds.subscription.DataReaderListener;
-import com.rti.dds.topic.KeyHash_t;
-import com.rti.dds.topic.TypeSupportImpl;
-import com.rti.dds.topic.TypeSupportType;
-import com.rti.dds.util.Sequence;
-import com.rti.dds.topic.DefaultEndpointData;
-import com.rti.dds.infrastructure.RETCODE_ERROR;
-
-import com.rti.dds.infrastructure.*;
-import com.rti.dds.topic.TypeSupportParticipantInfo;
-import com.rti.dds.topic.TypeSupportEndpointInfo;
-import com.rti.dds.typecode.TypeCode;
-import com.rti.dds.cdr.IllegalCdrStateException;
-
-import com.rti.dds.infrastructure.Copyable;
-
-/**
-* A collection of useful methods for dealing with objects of type
-* TestDataKeyed_t
-*/
-
-public class TestDataKeyed_tTypeSupport extends TypeSupportImpl {
- // -----------------------------------------------------------------------
- // Private Fields
- // -----------------------------------------------------------------------
-
- private static final String TYPE_NAME = "TestDataKeyed_t";
-
- private static final char[] PLUGIN_VERSION = {2, 0, 0, 0};
- private static final TestDataKeyed_tTypeSupport _singleton
- = new TestDataKeyed_tTypeSupport();
-
- // -----------------------------------------------------------------------
- // Public Methods
- // -----------------------------------------------------------------------
-
- // --- External methods: -------------------------------------------------
- /* The methods in this section are for use by users of RTI Connext
- */
-
- public static String get_type_name() {
- return _singleton.get_type_nameI();
- }
-
- public static void register_type(DomainParticipant participant,
- String type_name) {
- _singleton.register_typeI(participant, type_name);
- }
-
- public static void unregister_type(DomainParticipant participant,
- String type_name) {
- _singleton.unregister_typeI(participant, type_name);
- }
-
- /* The methods in this section are for use by RTI Connext
- * itself and by the code generated by rtiddsgen for other types.
- * They should be used directly or modified only by advanced users and are
- * subject to change in future versions of RTI Connext.
- */
- public static TestDataKeyed_tTypeSupport get_instance() {
- return _singleton;
- }
-
- public static TestDataKeyed_tTypeSupport getInstance() {
- return get_instance();
- }
-
- public static TypeCode getTypeCode(){
- return TestDataKeyed_tTypeCode.VALUE;
- }
-
- public Object create_data() {
- return TestDataKeyed_t.create();
- }
-
- public void destroy_data(Object data) {
- return;
- }
- public Object create_key() {
- return new TestDataKeyed_t();
- }
-
- public void destroy_key(Object key) {
- return;
- }
- public Class get_type() {
- return TestDataKeyed_t.class;
- }
-
- /**
- * This is a concrete implementation of this method inherited from the base class.
- * This method will perform a deep copy of source
into
- * destination
.
- *
- * @param src The Object which contains the data to be copied.
- * @return Returns destination
.
- * @exception NullPointerException If destination
or
- * source
is null.
- * @exception ClassCastException If either destination
or
- * this
is not a TestDataKeyed_t
- * type.
- */
- public Object copy_data(Object destination, Object source) {
-
- TestDataKeyed_t typedDst = (TestDataKeyed_t) destination;
- TestDataKeyed_t typedSrc = (TestDataKeyed_t) source;
-
- return typedDst.copy_from(typedSrc);
-
- }
-
- public long get_serialized_sample_max_size(Object endpoint_data,boolean include_encapsulation,short encapsulation_id,long currentAlignment) {
-
- long origAlignment = currentAlignment;
- long encapsulation_size = currentAlignment;
-
- if(include_encapsulation) {
- if (!CdrEncapsulation.isValidEncapsulationKind(encapsulation_id)) {
- throw new RETCODE_ERROR("Unsupported encapsulation");
- }
-
- encapsulation_size += CdrPrimitiveType.SHORT.getMaxSizeSerialized(encapsulation_size);
- encapsulation_size += CdrPrimitiveType.SHORT.getMaxSizeSerialized(encapsulation_size);
- encapsulation_size -= currentAlignment;
- currentAlignment = 0;
- origAlignment = 0;
-
- }
-
- currentAlignment += CdrPrimitiveType.BYTE.getArrayMaxSizeSerialized(currentAlignment, ((com.rti.perftest.gen.KEY_SIZE.VALUE)));
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.BYTE.getSequenceMaxSizeSerialized(currentAlignment, ((com.rti.perftest.gen.MAX_BINDATA_SIZE.VALUE)));
- if (include_encapsulation) {
- currentAlignment += encapsulation_size;
- }
- return currentAlignment - origAlignment;
- }
-
- public long get_serialized_sample_min_size(Object endpoint_data,boolean include_encapsulation,short encapsulation_id,long currentAlignment) {
-
- long origAlignment = currentAlignment;
- long encapsulation_size = currentAlignment;
-
- if(include_encapsulation) {
- if (!CdrEncapsulation.isValidEncapsulationKind(encapsulation_id)) {
- throw new RETCODE_ERROR("Unsupported encapsulation");
- }
-
- encapsulation_size += CdrPrimitiveType.SHORT.getMaxSizeSerialized(encapsulation_size);
- encapsulation_size += CdrPrimitiveType.SHORT.getMaxSizeSerialized(encapsulation_size);
- encapsulation_size -= currentAlignment;
- currentAlignment = 0;
- origAlignment = 0;
-
- }
-
- currentAlignment += CdrPrimitiveType.BYTE.getArrayMaxSizeSerialized(currentAlignment, ((com.rti.perftest.gen.KEY_SIZE.VALUE)));
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.BYTE.getSequenceMaxSizeSerialized(currentAlignment, 0);
-
- if (include_encapsulation) {
- currentAlignment += encapsulation_size;
- }
- return currentAlignment - origAlignment;
-
- }
-
- public long get_serialized_sample_size(
- Object endpoint_data, boolean include_encapsulation,
- short encapsulation_id, long currentAlignment,
- Object sample)
- {
- TestDataKeyed_t typedSrc = (TestDataKeyed_t) sample;
- long origAlignment = currentAlignment;
- long encapsulation_size = currentAlignment;
-
- if(include_encapsulation) {
- if (!CdrEncapsulation.isValidEncapsulationKind(encapsulation_id)) {
- throw new RETCODE_ERROR("Unsupported encapsulation");
- }
-
- encapsulation_size += CdrPrimitiveType.SHORT.getMaxSizeSerialized(encapsulation_size);
- encapsulation_size += CdrPrimitiveType.SHORT.getMaxSizeSerialized(encapsulation_size);
- encapsulation_size -= currentAlignment;
- currentAlignment = 0;
- origAlignment = 0;
-
- }
-
- currentAlignment += CdrPrimitiveType.BYTE.getArrayMaxSizeSerialized(currentAlignment, ((com.rti.perftest.gen.KEY_SIZE.VALUE)));
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment);
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment);
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment);
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment);
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment);
- currentAlignment += CdrPrimitiveType.BYTE.getSequenceSerializedSize(
- currentAlignment , typedSrc.bin_data );
-
- if (include_encapsulation) {
- currentAlignment += encapsulation_size;
- }
- return currentAlignment - origAlignment;
- }
-
- public long get_serialized_key_max_size(
- Object endpoint_data,
- boolean include_encapsulation,
- short encapsulation_id,
- long currentAlignment)
- {
-
- long origAlignment = currentAlignment;
- long encapsulation_size = currentAlignment;
-
- if(include_encapsulation) {
- if (!CdrEncapsulation.isValidEncapsulationKind(encapsulation_id)) {
- throw new RETCODE_ERROR("Unsupported encapsulation");
- }
-
- encapsulation_size += CdrPrimitiveType.SHORT.getMaxSizeSerialized(encapsulation_size);
- encapsulation_size += CdrPrimitiveType.SHORT.getMaxSizeSerialized(encapsulation_size);
- encapsulation_size -= currentAlignment;
- currentAlignment = 0;
- origAlignment = 0;
-
- }
-
- currentAlignment += CdrPrimitiveType.BYTE.getArrayMaxSizeSerialized(currentAlignment, ((com.rti.perftest.gen.KEY_SIZE.VALUE)));
-
- if (include_encapsulation) {
- currentAlignment += encapsulation_size;
- }
-
- return currentAlignment - origAlignment;
- }
-
- public void serialize(Object endpoint_data,Object src, CdrOutputStream dst,boolean serialize_encapsulation,
- short encapsulation_id, boolean serialize_sample, Object endpoint_plugin_qos) {
- int position = 0;
-
- if(serialize_encapsulation) {
- dst.serializeAndSetCdrEncapsulation(encapsulation_id);
-
- position = dst.resetAlignment();
-
- }
-
- if(serialize_sample) {
-
- TestDataKeyed_t typedSrc = (TestDataKeyed_t) src;
-
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- dst.writeByte(typedSrc.key[i1__]);
- }
-
- dst.writeInt(typedSrc.entity_id);
-
- dst.writeInt(typedSrc.seq_num);
-
- dst.writeInt(typedSrc.timestamp_sec);
-
- dst.writeInt(typedSrc.timestamp_usec);
-
- dst.writeInt(typedSrc.latency_ping);
-
- dst.writeByteSeq(typedSrc.bin_data,((com.rti.perftest.gen.MAX_BINDATA_SIZE.VALUE)));
- }
-
- if (serialize_encapsulation) {
- dst.restoreAlignment(position);
- }
-
- }
- public long serialize_to_cdr_buffer(
- byte[] buffer,
- long length,
- TestDataKeyed_t src)
- {
- return super.serialize_to_cdr_buffer(buffer,length,src);
- }
-
- public void serialize_key(
- Object endpoint_data,
- Object src,
- CdrOutputStream dst,
- boolean serialize_encapsulation,
- short encapsulation_id,
- boolean serialize_key,
- Object endpoint_plugin_qos)
- {
- int position = 0;
-
- if (serialize_encapsulation) {
- dst.serializeAndSetCdrEncapsulation(encapsulation_id);
-
- position = dst.resetAlignment();
- }
-
- if (serialize_key) {
-
- TestDataKeyed_t typedSrc = (TestDataKeyed_t) src;
-
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- dst.writeByte(typedSrc.key[i1__]);
- }
-
- }
-
- if (serialize_encapsulation) {
- dst.restoreAlignment(position);
- }
- }
-
- public Object deserialize_sample(
- Object endpoint_data,
- Object dst,
- CdrInputStream src, boolean deserialize_encapsulation,
- boolean deserialize_sample,
- Object endpoint_plugin_qos)
- {
- int position = 0;
-
- if(deserialize_encapsulation) {
- src.deserializeAndSetCdrEncapsulation();
-
- position = src.resetAlignment();
- }
-
- if(deserialize_sample) {
-
- TestDataKeyed_t typedDst = (TestDataKeyed_t) dst;
- typedDst.clear();
- try{
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- typedDst.key[i1__] = src.readByte();
- }
-
- typedDst.entity_id = src.readInt();
- typedDst.seq_num = src.readInt();
- typedDst.timestamp_sec = src.readInt();
- typedDst.timestamp_usec = src.readInt();
- typedDst.latency_ping = src.readInt();
- src.readByteSequence(typedDst.bin_data, ((com.rti.perftest.gen.MAX_BINDATA_SIZE.VALUE)));
- } catch (IllegalCdrStateException stateEx) {
- if (src.available() >= CdrEncapsulation.CDR_ENCAPSULATION_PARAMETER_ID_ALIGNMENT) {
- throw new RETCODE_ERROR("Error deserializing sample! Remainder: " + src.available() + "\n" +
- "Exception caused by: " + stateEx.getMessage());
- }
- } catch (Exception ex) {
- throw new RETCODE_ERROR(ex.getMessage());
- }
-
- }
- if (deserialize_encapsulation) {
- src.restoreAlignment(position);
- }
-
- return dst;
- }
-
- public void deserialize_from_cdr_buffer(
- TestDataKeyed_t dst,
- byte[] buffer,
- long length)
- {
- super.deserialize_from_cdr_buffer(dst,buffer,length);
- }
-
- public Object deserialize_key_sample(
- Object endpoint_data,
- Object dst,
- CdrInputStream src,
- boolean deserialize_encapsulation,
- boolean deserialize_key,
- Object endpoint_plugin_qos)
- {
- int position = 0;
-
- if(deserialize_encapsulation) {
- src.deserializeAndSetCdrEncapsulation();
-
- position = src.resetAlignment();
- }
-
- if(deserialize_key) {
-
- TestDataKeyed_t typedDst = (TestDataKeyed_t) dst;
-
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- typedDst.key[i1__] = src.readByte();
- }
-
- }
- if (deserialize_encapsulation) {
- src.restoreAlignment(position);
- }
-
- return dst;
- }
-
- public void skip(Object endpoint_data,
- CdrInputStream src,
- boolean skip_encapsulation,
- boolean skip_sample,
- Object endpoint_plugin_qos)
- {
- int position = 0;
-
- if (skip_encapsulation) {
- src.skipEncapsulation();
-
- position = src.resetAlignment();
- }
-
- if (skip_sample) {
-
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- src.skipByte();
- }
-
- src.skipInt();
-
- src.skipInt();
-
- src.skipInt();
-
- src.skipInt();
-
- src.skipInt();
-
- src.skipByteSequence();
-
- }
-
- if (skip_encapsulation) {
- src.restoreAlignment(position);
- }
- }
-
- public Object serialized_sample_to_key(
- Object endpoint_data,
- Object sample,
- CdrInputStream src,
- boolean deserialize_encapsulation,
- boolean deserialize_key,
- Object endpoint_plugin_qos)
- {
-
- int position = 0;
-
- if(deserialize_encapsulation) {
- src.deserializeAndSetCdrEncapsulation();
-
- position = src.resetAlignment();
- }
-
- if (deserialize_key) {
-
- TestDataKeyed_t typedDst = (TestDataKeyed_t) sample;
-
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- typedDst.key[i1__] = src.readByte();
- }
-
- src.skipInt();
-
- src.skipInt();
-
- src.skipInt();
-
- src.skipInt();
-
- src.skipInt();
-
- src.skipByteSequence();
-
- }
-
- if (deserialize_encapsulation) {
- src.restoreAlignment(position);
- }
-
- return sample;
- }
-
- /* Fill in the key fields of the given instance sample based on the key.
- */
- public void key_to_instance(Object endpoint_data,
- Object instance,
- Object key) {
- TestDataKeyed_t typedDst
- = (TestDataKeyed_t) instance;
- TestDataKeyed_t typedSrc
- = (TestDataKeyed_t) key;
- System.arraycopy(typedSrc.key,0,
- typedDst.key,0,
- typedSrc.key.length);
-
- }
-
- /* Fill in the given key based on the key fields of the given instance
- * sample.
- */
- public void instance_to_key(Object endpoint_data,
- Object key,
- Object instance) {
- TestDataKeyed_t typedDst
- = (TestDataKeyed_t)key;
- TestDataKeyed_t typedSrc
- = (TestDataKeyed_t) instance;
- System.arraycopy(typedSrc.key,0,
- typedDst.key,0,
- typedSrc.key.length);
-
- }
-
- /* Fill in the fields of the given KeyHash based on the key field(s)
- * of the given instance sample.
- * Important: The fields of the instance ID cannot all be set to zero!
- */
- public void instance_to_keyhash(Object endpoint_data,
- KeyHash_t keyhash,
- Object instance) {
- DefaultEndpointData endpointData = (DefaultEndpointData) endpoint_data;
- CdrOutputStream md5Stream = endpointData.get_stream();
- CdrBuffer buffer = null;
-
- if (md5Stream == null) {
- throw new RETCODE_ERROR("Missing MD5 stream");
- }
-
- buffer = md5Stream.getBuffer();
- buffer.resetBufferToZero();
-
- md5Stream.resetAndSetDirtyBit(true);
-
- serialize_key(endpoint_data,instance,md5Stream,false,CdrEncapsulation.CDR_ENCAPSULATION_ID_CDR_BE,true,null);
-
- if (endpointData.get_serialized_key_max_size() > KeyHash_t.KEY_HASH_MAX_LENGTH) {
- md5Stream.computeMD5(keyhash.value);
- } else {
- System.arraycopy(buffer.getBuffer(), 0,
- keyhash.value, 0,
- buffer.currentPosition());
- System.arraycopy(KeyHash_t.ZERO_KEYHASH.value,buffer.currentPosition(),
- keyhash.value,buffer.currentPosition(),
- KeyHash_t.KEY_HASH_MAX_LENGTH - buffer.currentPosition());
- }
-
- keyhash.length = KeyHash_t.KEY_HASH_MAX_LENGTH;
- }
-
- public void serialized_sample_to_keyhash(
- Object endpoint_data,
- CdrInputStream src,
- KeyHash_t keyhash,
- boolean include_encapsulation,
- Object endpoint_plugin_qos)
- {
- int position = 0;
-
- DefaultEndpointData endpointData = (DefaultEndpointData) endpoint_data;
- Object sample = null;
-
- sample = endpointData.get_sample();
-
- if (sample == null) {
- throw new RETCODE_ERROR("Missing intermediate sample");
- }
-
- TestDataKeyed_t typedDst = (TestDataKeyed_t) sample;
-
- if (include_encapsulation) {
- src.deserializeAndSetCdrEncapsulation();
-
- position = src.resetAlignment();
- }
-
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- typedDst.key[i1__] = src.readByte();
- }
-
- if (include_encapsulation) {
- src.restoreAlignment(position);
- }
-
- instance_to_keyhash(endpoint_data, keyhash, sample);
- }
-
- // -----------------------------------------------------------------------
- // Callbacks
- // -----------------------------------------------------------------------
- public Object on_participant_attached(Object registration_data,
- TypeSupportParticipantInfo participant_info,
- boolean top_level_registration,
- Object container_plugin_context,
- TypeCode type_code) {
- return super.on_participant_attached(
- registration_data, participant_info, top_level_registration,
- container_plugin_context, type_code);
- }
-
- public void on_participant_detached(Object participant_data) {
- super.on_participant_detached(participant_data);
- }
-
- public Object on_endpoint_attached(Object participantData,
- TypeSupportEndpointInfo endpoint_info,
- boolean top_level_registration,
- Object container_plugin_context) {
- return super.on_endpoint_attached(
- participantData, endpoint_info,
- top_level_registration, container_plugin_context);
- }
-
- public void on_endpoint_detached(Object endpoint_data) {
- super.on_endpoint_detached(endpoint_data);
- }
- // -----------------------------------------------------------------------
- // Protected Methods
- // -----------------------------------------------------------------------
-
- protected DataWriter create_datawriter(long native_writer,
- DataWriterListener listener,
- int mask) {
- return new TestDataKeyed_tDataWriter (native_writer, listener, mask, this);
- }
-
- protected DataReader create_datareader(long native_reader,
- DataReaderListener listener,
- int mask) {
-
- return new TestDataKeyed_tDataReader(native_reader, listener, mask, this);
-
- }
-
- // -----------------------------------------------------------------------
- // Constructor
- // -----------------------------------------------------------------------
-
- protected TestDataKeyed_tTypeSupport() {
-
- /* If the user data type supports keys, then the second argument
- to the constructor below should be true. Otherwise it should
- be false. */
-
- super(TYPE_NAME,true,TestDataKeyed_tTypeCode.VALUE,TestDataKeyed_t.class,TypeSupportType.TST_STRUCT, PLUGIN_VERSION);
-
- }
-
- protected TestDataKeyed_tTypeSupport (boolean enableKeySupport) {
-
- super(TYPE_NAME, enableKeySupport,TestDataKeyed_tTypeCode.VALUE,TestDataKeyed_t.class,TypeSupportType.TST_STRUCT, PLUGIN_VERSION);
- }
-}
-
diff --git a/perftest_java/com/rti/perftest/gen/TestData_t.java b/perftest_java/com/rti/perftest/gen/TestData_t.java
deleted file mode 100644
index e2fd2c86..00000000
--- a/perftest_java/com/rti/perftest/gen/TestData_t.java
+++ /dev/null
@@ -1,195 +0,0 @@
-
-
-/*
-WARNING: THIS FILE IS AUTO-GENERATED. DO NOT MODIFY.
-
-This file was generated from .idl using "rtiddsgen".
-The rtiddsgen tool is part of the RTI Connext distribution.
-For more information, type 'rtiddsgen -help' at a command shell
-or consult the RTI Connext manual.
-*/
-
-package com.rti.perftest.gen;
-
-import com.rti.dds.infrastructure.*;
-import com.rti.dds.infrastructure.Copyable;
-import java.io.Serializable;
-import com.rti.dds.cdr.CdrHelper;
-
-public class TestData_t implements Copyable, Serializable{
-
- public byte [] key= new byte [(com.rti.perftest.gen.KEY_SIZE.VALUE)];
- public int entity_id= 0;
- public int seq_num= 0;
- public int timestamp_sec= 0;
- public int timestamp_usec= 0;
- public int latency_ping= 0;
- public ByteSeq bin_data = new ByteSeq(((com.rti.perftest.gen.MAX_BINDATA_SIZE.VALUE)));
-
- public TestData_t() {
-
- }
- public TestData_t (TestData_t other) {
-
- this();
- copy_from(other);
- }
-
- public static Object create() {
-
- TestData_t self;
- self = new TestData_t();
- self.clear();
- return self;
-
- }
-
- public void clear() {
-
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- key[i1__] = 0;
- }
-
- entity_id= 0;
- seq_num= 0;
- timestamp_sec= 0;
- timestamp_usec= 0;
- latency_ping= 0;
- if (bin_data != null) {
- bin_data.clear();
- }
- }
-
- public boolean equals(Object o) {
-
- if (o == null) {
- return false;
- }
-
- if(getClass() != o.getClass()) {
- return false;
- }
-
- TestData_t otherObj = (TestData_t)o;
-
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- if(key[i1__] != otherObj.key[i1__]) {
- return false;
- }
- }
-
- if(entity_id != otherObj.entity_id) {
- return false;
- }
- if(seq_num != otherObj.seq_num) {
- return false;
- }
- if(timestamp_sec != otherObj.timestamp_sec) {
- return false;
- }
- if(timestamp_usec != otherObj.timestamp_usec) {
- return false;
- }
- if(latency_ping != otherObj.latency_ping) {
- return false;
- }
- if(!bin_data.equals(otherObj.bin_data)) {
- return false;
- }
-
- return true;
- }
-
- public int hashCode() {
- int __result = 0;
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- __result += (int)key[i1__];
- }
-
- __result += (int)entity_id;
- __result += (int)seq_num;
- __result += (int)timestamp_sec;
- __result += (int)timestamp_usec;
- __result += (int)latency_ping;
- __result += bin_data.hashCode();
- return __result;
- }
-
- /**
- * This is the implementation of the Copyable
interface.
- * This method will perform a deep copy of src
- * This method could be placed into TestData_tTypeSupport
- * rather than here by using the -noCopyable
option
- * to rtiddsgen.
- *
- * @param src The Object which contains the data to be copied.
- * @return Returns this
.
- * @exception NullPointerException If src
is null.
- * @exception ClassCastException If src
is not the
- * same type as this
.
- * @see com.rti.dds.infrastructure.Copyable#copy_from(java.lang.Object)
- */
- public Object copy_from(Object src) {
-
- TestData_t typedSrc = (TestData_t) src;
- TestData_t typedDst = this;
-
- System.arraycopy(typedSrc.key,0,
- typedDst.key,0,
- typedSrc.key.length);
-
- typedDst.entity_id = typedSrc.entity_id;
- typedDst.seq_num = typedSrc.seq_num;
- typedDst.timestamp_sec = typedSrc.timestamp_sec;
- typedDst.timestamp_usec = typedSrc.timestamp_usec;
- typedDst.latency_ping = typedSrc.latency_ping;
- typedDst.bin_data.copy_from(typedSrc.bin_data);
-
- return this;
- }
-
- public String toString(){
- return toString("", 0);
- }
-
- public String toString(String desc, int indent) {
- StringBuffer strBuffer = new StringBuffer();
-
- if (desc != null) {
- CdrHelper.printIndent(strBuffer, indent);
- strBuffer.append(desc).append(":\n");
- }
-
- CdrHelper.printIndent(strBuffer, indent+1);
- strBuffer.append("key: ");
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- strBuffer.append(key[i1__]).append(", ");
- }
-
- strBuffer.append("\n");
- CdrHelper.printIndent(strBuffer, indent+1);
- strBuffer.append("entity_id: ").append(entity_id).append("\n");
- CdrHelper.printIndent(strBuffer, indent+1);
- strBuffer.append("seq_num: ").append(seq_num).append("\n");
- CdrHelper.printIndent(strBuffer, indent+1);
- strBuffer.append("timestamp_sec: ").append(timestamp_sec).append("\n");
- CdrHelper.printIndent(strBuffer, indent+1);
- strBuffer.append("timestamp_usec: ").append(timestamp_usec).append("\n");
- CdrHelper.printIndent(strBuffer, indent+1);
- strBuffer.append("latency_ping: ").append(latency_ping).append("\n");
- CdrHelper.printIndent(strBuffer, indent+1);
- strBuffer.append("bin_data: ");
- for(int i__ = 0; i__ < bin_data.size(); ++i__) {
- if (i__!=0) strBuffer.append(", ");
- strBuffer.append(bin_data.get(i__));
- }
- strBuffer.append("\n");
-
- return strBuffer.toString();
- }
-
-}
diff --git a/perftest_java/com/rti/perftest/gen/TestData_tDataReader.java b/perftest_java/com/rti/perftest/gen/TestData_tDataReader.java
deleted file mode 100644
index c3db69fb..00000000
--- a/perftest_java/com/rti/perftest/gen/TestData_tDataReader.java
+++ /dev/null
@@ -1,160 +0,0 @@
-
-
-/*
-WARNING: THIS FILE IS AUTO-GENERATED. DO NOT MODIFY.
-
-This file was generated from .idl using "rtiddsgen".
-The rtiddsgen tool is part of the RTI Connext distribution.
-For more information, type 'rtiddsgen -help' at a command shell
-or consult the RTI Connext manual.
-*/
-
-package com.rti.perftest.gen;
-
-import com.rti.dds.infrastructure.InstanceHandle_t;
-import com.rti.dds.subscription.DataReaderImpl;
-import com.rti.dds.subscription.DataReaderListener;
-import com.rti.dds.subscription.ReadCondition;
-import com.rti.dds.subscription.SampleInfo;
-import com.rti.dds.subscription.SampleInfoSeq;
-import com.rti.dds.topic.TypeSupportImpl;
-
-// ===========================================================================
-
-/**
-* A reader for the TestData_t user type.
-*/
-public class TestData_tDataReader extends DataReaderImpl {
- // -----------------------------------------------------------------------
- // Public Methods
- // -----------------------------------------------------------------------
-
- public void read(TestData_tSeq received_data, SampleInfoSeq info_seq,
- int max_samples,
- int sample_states, int view_states, int instance_states) {
- read_untyped(received_data, info_seq, max_samples, sample_states,
- view_states, instance_states);
- }
-
- public void take(TestData_tSeq received_data, SampleInfoSeq info_seq,
- int max_samples,
- int sample_states, int view_states, int instance_states) {
- take_untyped(received_data, info_seq, max_samples, sample_states,
- view_states, instance_states);
- }
-
- public void read_w_condition(TestData_tSeq received_data,
- SampleInfoSeq info_seq,
- int max_samples,
- ReadCondition condition) {
- read_w_condition_untyped(received_data, info_seq, max_samples,
- condition);
- }
-
- public void take_w_condition(TestData_tSeq received_data,
- SampleInfoSeq info_seq,
- int max_samples,
- ReadCondition condition) {
- take_w_condition_untyped(received_data, info_seq, max_samples,
- condition);
- }
-
- public void read_next_sample(TestData_t received_data, SampleInfo sample_info) {
- read_next_sample_untyped(received_data, sample_info);
- }
-
- public void take_next_sample(TestData_t received_data, SampleInfo sample_info) {
- take_next_sample_untyped(received_data, sample_info);
- }
-
- public void read_instance(TestData_tSeq received_data, SampleInfoSeq info_seq,
- int max_samples, InstanceHandle_t a_handle, int sample_states,
- int view_states, int instance_states) {
-
- read_instance_untyped(received_data, info_seq, max_samples, a_handle,
- sample_states, view_states, instance_states);
- }
-
- public void take_instance(TestData_tSeq received_data, SampleInfoSeq info_seq,
- int max_samples, InstanceHandle_t a_handle, int sample_states,
- int view_states, int instance_states) {
-
- take_instance_untyped(received_data, info_seq, max_samples, a_handle,
- sample_states, view_states, instance_states);
- }
-
- public void read_instance_w_condition(TestData_tSeq received_data,
- SampleInfoSeq info_seq, int max_samples,
- InstanceHandle_t a_handle, ReadCondition condition) {
-
- read_instance_w_condition_untyped(received_data, info_seq,
- max_samples, a_handle, condition);
- }
-
- public void take_instance_w_condition(TestData_tSeq received_data,
- SampleInfoSeq info_seq, int max_samples,
- InstanceHandle_t a_handle, ReadCondition condition) {
-
- take_instance_w_condition_untyped(received_data, info_seq,
- max_samples, a_handle, condition);
- }
-
- public void read_next_instance(TestData_tSeq received_data,
- SampleInfoSeq info_seq, int max_samples,
- InstanceHandle_t a_handle, int sample_states, int view_states,
- int instance_states) {
-
- read_next_instance_untyped(received_data, info_seq, max_samples,
- a_handle, sample_states, view_states, instance_states);
- }
-
- public void take_next_instance(TestData_tSeq received_data,
- SampleInfoSeq info_seq, int max_samples,
- InstanceHandle_t a_handle, int sample_states, int view_states,
- int instance_states) {
-
- take_next_instance_untyped(received_data, info_seq, max_samples,
- a_handle, sample_states, view_states, instance_states);
- }
-
- public void read_next_instance_w_condition(TestData_tSeq received_data,
- SampleInfoSeq info_seq, int max_samples,
- InstanceHandle_t a_handle, ReadCondition condition) {
-
- read_next_instance_w_condition_untyped(received_data, info_seq,
- max_samples, a_handle, condition);
- }
-
- public void take_next_instance_w_condition(TestData_tSeq received_data,
- SampleInfoSeq info_seq, int max_samples,
- InstanceHandle_t a_handle, ReadCondition condition) {
-
- take_next_instance_w_condition_untyped(received_data, info_seq,
- max_samples, a_handle, condition);
- }
-
- public void return_loan(TestData_tSeq received_data, SampleInfoSeq info_seq) {
- return_loan_untyped(received_data, info_seq);
- }
-
- public void get_key_value(TestData_t key_holder, InstanceHandle_t handle){
- get_key_value_untyped(key_holder, handle);
- }
-
- public InstanceHandle_t lookup_instance(TestData_t key_holder) {
- return lookup_instance_untyped(key_holder);
- }
-
- // -----------------------------------------------------------------------
- // Package Methods
- // -----------------------------------------------------------------------
-
- // --- Constructors: -----------------------------------------------------
-
- /*package*/ TestData_tDataReader (long native_reader, DataReaderListener listener,
- int mask, TypeSupportImpl data_type) {
- super(native_reader, listener, mask, data_type);
- }
-
-}
-
diff --git a/perftest_java/com/rti/perftest/gen/TestData_tDataWriter.java b/perftest_java/com/rti/perftest/gen/TestData_tDataWriter.java
deleted file mode 100644
index 0b88508b..00000000
--- a/perftest_java/com/rti/perftest/gen/TestData_tDataWriter.java
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-/*
-WARNING: THIS FILE IS AUTO-GENERATED. DO NOT MODIFY.
-
-This file was generated from .idl using "rtiddsgen".
-The rtiddsgen tool is part of the RTI Connext distribution.
-For more information, type 'rtiddsgen -help' at a command shell
-or consult the RTI Connext manual.
-*/
-
-package com.rti.perftest.gen;
-
-import com.rti.dds.infrastructure.Time_t;
-import com.rti.dds.infrastructure.WriteParams_t;
-import com.rti.dds.infrastructure.InstanceHandle_t;
-import com.rti.dds.publication.DataWriterImpl;
-import com.rti.dds.publication.DataWriterListener;
-import com.rti.dds.topic.TypeSupportImpl;
-
-// ===========================================================================
-/**
-* A writer for the TestData_t user type.
-*/
-public class TestData_tDataWriter extends DataWriterImpl {
- // -----------------------------------------------------------------------
- // Public Methods
- // -----------------------------------------------------------------------
-
- public InstanceHandle_t register_instance(TestData_t instance_data) {
- return register_instance_untyped(instance_data);
- }
-
- public InstanceHandle_t register_instance_w_timestamp(TestData_t instance_data,
- Time_t source_timestamp) {
- return register_instance_w_timestamp_untyped(
- instance_data, source_timestamp);
- }
-
- public InstanceHandle_t register_instance_w_params(TestData_t instance_data,
- WriteParams_t params) {
- return register_instance_w_params_untyped(
- instance_data, params);
- }
-
- public void unregister_instance(TestData_t instance_data,
- InstanceHandle_t handle) {
- unregister_instance_untyped(instance_data, handle);
- }
-
- public void unregister_instance_w_timestamp(TestData_t instance_data,
- InstanceHandle_t handle, Time_t source_timestamp) {
-
- unregister_instance_w_timestamp_untyped(
- instance_data, handle, source_timestamp);
- }
-
- public void unregister_instance_w_params(TestData_t instance_data,
- WriteParams_t params) {
-
- unregister_instance_w_params_untyped(
- instance_data, params);
- }
-
- public void write(TestData_t instance_data, InstanceHandle_t handle) {
- write_untyped(instance_data, handle);
- }
-
- public void write_w_timestamp(TestData_t instance_data,
- InstanceHandle_t handle, Time_t source_timestamp) {
-
- write_w_timestamp_untyped(instance_data, handle, source_timestamp);
- }
-
- public void write_w_params(TestData_t instance_data,
- WriteParams_t params) {
-
- write_w_params_untyped(instance_data, params);
- }
-
- public void dispose(TestData_t instance_data, InstanceHandle_t instance_handle){
- dispose_untyped(instance_data, instance_handle);
- }
-
- public void dispose_w_timestamp(TestData_t instance_data,
- InstanceHandle_t instance_handle, Time_t source_timestamp) {
-
- dispose_w_timestamp_untyped(
- instance_data, instance_handle, source_timestamp);
- }
-
- public void dispose_w_params(TestData_t instance_data,
- WriteParams_t params) {
-
- dispose_w_params_untyped(instance_data, params);
- }
-
- public void get_key_value(TestData_t key_holder, InstanceHandle_t handle) {
- get_key_value_untyped(key_holder, handle);
- }
-
- public InstanceHandle_t lookup_instance(TestData_t key_holder) {
- return lookup_instance_untyped(key_holder);
- }
-
- // -----------------------------------------------------------------------
- // Package Methods
- // -----------------------------------------------------------------------
-
- // --- Constructors: -----------------------------------------------------
-
- /*package*/ TestData_tDataWriter(long native_writer, DataWriterListener listener,
- int mask, TypeSupportImpl type) {
- super(native_writer, listener, mask, type);
- }
-}
-
diff --git a/perftest_java/com/rti/perftest/gen/TestData_tSeq.java b/perftest_java/com/rti/perftest/gen/TestData_tSeq.java
deleted file mode 100644
index 0951ae34..00000000
--- a/perftest_java/com/rti/perftest/gen/TestData_tSeq.java
+++ /dev/null
@@ -1,119 +0,0 @@
-
-/*
-WARNING: THIS FILE IS AUTO-GENERATED. DO NOT MODIFY.
-
-This file was generated from .idl using "rtiddsgen".
-The rtiddsgen tool is part of the RTI Connext distribution.
-For more information, type 'rtiddsgen -help' at a command shell
-or consult the RTI Connext manual.
-*/
-
-package com.rti.perftest.gen;
-
-import java.util.Collection;
-
-import com.rti.dds.infrastructure.Copyable;
-import com.rti.dds.util.Enum;
-import com.rti.dds.util.Sequence;
-import com.rti.dds.util.LoanableSequence;
-
-/**
-* A sequence of TestData_t instances.
-*/
-public final class TestData_tSeq extends LoanableSequence implements Copyable {
- // -----------------------------------------------------------------------
- // Package Fields
- // -----------------------------------------------------------------------
-
- /**
- * When a memory loan has been taken out in the lower layers of
- * RTI Data Distribution Service, store a pointer to the native sequence here.
- * That way, when we call finish(), we can give the memory back.
- */
- /*package*/ transient Sequence _loanedInfoSequence = null;
-
- // -----------------------------------------------------------------------
- // Public Fields
- // -----------------------------------------------------------------------
-
- // --- Constructors: -----------------------------------------------------
-
- public TestData_tSeq() {
- super(TestData_t.class);
- }
-
- public TestData_tSeq (int initialMaximum) {
- super(TestData_t.class, initialMaximum);
- }
-
- public TestData_tSeq (Collection elements) {
- super(TestData_t.class, elements);
- }
-
- // --- From Copyable: ----------------------------------------------------
-
- /**
- * Copy data into this
object from another.
- * The result of this method is that both this
- * and src
will be the same size and contain the
- * same data.
- *
- * @param src The Object which contains the data to be copied
- * @return this
- * @exception NullPointerException If src
is null.
- * @exception ClassCastException If src
is not a
- * Sequence
OR if one of the objects contained in
- * the Sequence
is not of the expected type.
- * @see com.rti.dds.infrastructure.Copyable#copy_from(java.lang.Object)
- */
- public Object copy_from(Object src) {
- Sequence typedSrc = (Sequence) src;
- final int srcSize = typedSrc.size();
- final int origSize = size();
-
- // if this object's size is less than the source, ensure we have
- // enough room to store all of the objects
- if (getMaximum() < srcSize) {
- setMaximum(srcSize);
- }
-
- // trying to avoid clear() method here since it allocates memory
- // (an Iterator)
- // if the source object has fewer items than the current object,
- // remove from the end until the sizes are equal
- if (srcSize < origSize){
- removeRange(srcSize, origSize);
- }
-
- // copy the data from source into this (into positions that already
- // existed)
- for(int i = 0; (i < origSize) && (i < srcSize); i++){
- if (typedSrc.get(i) == null){
- set(i, null);
- } else {
- // check to see if our entry is null, if it is, a new instance has to be allocated
- if (get(i) == null){
-
- set(i, TestData_t.create());
- }
- set(i, ((Copyable) get(i)).copy_from(typedSrc.get(i)));
- }
- }
-
- // copy 'new' TestData_t objects (beyond the original size of this object)
- for(int i = origSize; i < srcSize; i++){
- if (typedSrc.get(i) == null) {
- add(null);
- } else {
- // NOTE: we need to create a new object here to hold the copy
- add(TestData_t.create());
- // we need to do a set here since enums aren't truely Copyable
- set(i, ((Copyable) get(i)).copy_from(typedSrc.get(i)));
- }
- }
-
- return this;
- }
-
-}
-
diff --git a/perftest_java/com/rti/perftest/gen/TestData_tTypeCode.java b/perftest_java/com/rti/perftest/gen/TestData_tTypeCode.java
deleted file mode 100644
index e13bc97f..00000000
--- a/perftest_java/com/rti/perftest/gen/TestData_tTypeCode.java
+++ /dev/null
@@ -1,35 +0,0 @@
-
-/*
-WARNING: THIS FILE IS AUTO-GENERATED. DO NOT MODIFY.
-
-This file was generated from .idl using "rtiddsgen".
-The rtiddsgen tool is part of the RTI Connext distribution.
-For more information, type 'rtiddsgen -help' at a command shell
-or consult the RTI Connext manual.
-*/
-
-package com.rti.perftest.gen;
-
-import com.rti.dds.typecode.*;
-
-public class TestData_tTypeCode {
- public static final TypeCode VALUE = getTypeCode();
-
- private static TypeCode getTypeCode() {
- TypeCode tc = null;
- int __i=0;
- StructMember sm[]=new StructMember[7];
-
- sm[__i]=new StructMember("key", false, (short)-1, false,(TypeCode) new TypeCode(new int[] {(com.rti.perftest.gen.KEY_SIZE.VALUE)}, TypeCode.TC_OCTET),0 , false);__i++;
- sm[__i]=new StructMember("entity_id", false, (short)-1, false,(TypeCode) TypeCode.TC_LONG,1 , false);__i++;
- sm[__i]=new StructMember("seq_num", false, (short)-1, false,(TypeCode) TypeCode.TC_ULONG,2 , false);__i++;
- sm[__i]=new StructMember("timestamp_sec", false, (short)-1, false,(TypeCode) TypeCode.TC_LONG,3 , false);__i++;
- sm[__i]=new StructMember("timestamp_usec", false, (short)-1, false,(TypeCode) TypeCode.TC_ULONG,4 , false);__i++;
- sm[__i]=new StructMember("latency_ping", false, (short)-1, false,(TypeCode) TypeCode.TC_LONG,5 , false);__i++;
- sm[__i]=new StructMember("bin_data", false, (short)-1, false,(TypeCode) new TypeCode((com.rti.perftest.gen.MAX_BINDATA_SIZE.VALUE), TypeCode.TC_OCTET),6 , false);__i++;
-
- tc = TypeCodeFactory.TheTypeCodeFactory.create_struct_tc("TestData_t",ExtensibilityKind.EXTENSIBLE_EXTENSIBILITY, sm);
- return tc;
- }
-}
-
diff --git a/perftest_java/com/rti/perftest/gen/TestData_tTypeSupport.java b/perftest_java/com/rti/perftest/gen/TestData_tTypeSupport.java
deleted file mode 100644
index b14365fe..00000000
--- a/perftest_java/com/rti/perftest/gen/TestData_tTypeSupport.java
+++ /dev/null
@@ -1,570 +0,0 @@
-
-/*
-WARNING: THIS FILE IS AUTO-GENERATED. DO NOT MODIFY.
-
-This file was generated from .idl using "rtiddsgen".
-The rtiddsgen tool is part of the RTI Connext distribution.
-For more information, type 'rtiddsgen -help' at a command shell
-or consult the RTI Connext manual.
-*/
-
-package com.rti.perftest.gen;
-
-import com.rti.dds.cdr.CdrEncapsulation;
-import com.rti.dds.cdr.CdrInputStream;
-import com.rti.dds.cdr.CdrOutputStream;
-import com.rti.dds.cdr.CdrPrimitiveType;
-import com.rti.dds.cdr.CdrBuffer;
-import com.rti.dds.cdr.CdrHelper;
-import com.rti.dds.cdr.CdrMemberInfo;
-import com.rti.dds.domain.DomainParticipant;
-import com.rti.dds.publication.DataWriter;
-import com.rti.dds.publication.DataWriterListener;
-import com.rti.dds.subscription.DataReader;
-import com.rti.dds.subscription.DataReaderListener;
-import com.rti.dds.topic.KeyHash_t;
-import com.rti.dds.topic.TypeSupportImpl;
-import com.rti.dds.topic.TypeSupportType;
-import com.rti.dds.util.Sequence;
-import com.rti.dds.topic.DefaultEndpointData;
-import com.rti.dds.infrastructure.RETCODE_ERROR;
-
-import com.rti.dds.infrastructure.*;
-import com.rti.dds.topic.TypeSupportParticipantInfo;
-import com.rti.dds.topic.TypeSupportEndpointInfo;
-import com.rti.dds.typecode.TypeCode;
-import com.rti.dds.cdr.IllegalCdrStateException;
-
-import com.rti.dds.infrastructure.Copyable;
-
-/**
-* A collection of useful methods for dealing with objects of type
-* TestData_t
-*/
-
-public class TestData_tTypeSupport extends TypeSupportImpl {
- // -----------------------------------------------------------------------
- // Private Fields
- // -----------------------------------------------------------------------
-
- private static final String TYPE_NAME = "TestData_t";
-
- private static final char[] PLUGIN_VERSION = {2, 0, 0, 0};
- private static final TestData_tTypeSupport _singleton
- = new TestData_tTypeSupport();
-
- // -----------------------------------------------------------------------
- // Public Methods
- // -----------------------------------------------------------------------
-
- // --- External methods: -------------------------------------------------
- /* The methods in this section are for use by users of RTI Connext
- */
-
- public static String get_type_name() {
- return _singleton.get_type_nameI();
- }
-
- public static void register_type(DomainParticipant participant,
- String type_name) {
- _singleton.register_typeI(participant, type_name);
- }
-
- public static void unregister_type(DomainParticipant participant,
- String type_name) {
- _singleton.unregister_typeI(participant, type_name);
- }
-
- /* The methods in this section are for use by RTI Connext
- * itself and by the code generated by rtiddsgen for other types.
- * They should be used directly or modified only by advanced users and are
- * subject to change in future versions of RTI Connext.
- */
- public static TestData_tTypeSupport get_instance() {
- return _singleton;
- }
-
- public static TestData_tTypeSupport getInstance() {
- return get_instance();
- }
-
- public static TypeCode getTypeCode(){
- return TestData_tTypeCode.VALUE;
- }
-
- public Object create_data() {
- return TestData_t.create();
- }
-
- public void destroy_data(Object data) {
- return;
- }
- public Object create_key() {
- return new TestData_t();
- }
-
- public void destroy_key(Object key) {
- return;
- }
- public Class get_type() {
- return TestData_t.class;
- }
-
- /**
- * This is a concrete implementation of this method inherited from the base class.
- * This method will perform a deep copy of source
into
- * destination
.
- *
- * @param src The Object which contains the data to be copied.
- * @return Returns destination
.
- * @exception NullPointerException If destination
or
- * source
is null.
- * @exception ClassCastException If either destination
or
- * this
is not a TestData_t
- * type.
- */
- public Object copy_data(Object destination, Object source) {
-
- TestData_t typedDst = (TestData_t) destination;
- TestData_t typedSrc = (TestData_t) source;
-
- return typedDst.copy_from(typedSrc);
-
- }
-
- public long get_serialized_sample_max_size(Object endpoint_data,boolean include_encapsulation,short encapsulation_id,long currentAlignment) {
-
- long origAlignment = currentAlignment;
- long encapsulation_size = currentAlignment;
-
- if(include_encapsulation) {
- if (!CdrEncapsulation.isValidEncapsulationKind(encapsulation_id)) {
- throw new RETCODE_ERROR("Unsupported encapsulation");
- }
-
- encapsulation_size += CdrPrimitiveType.SHORT.getMaxSizeSerialized(encapsulation_size);
- encapsulation_size += CdrPrimitiveType.SHORT.getMaxSizeSerialized(encapsulation_size);
- encapsulation_size -= currentAlignment;
- currentAlignment = 0;
- origAlignment = 0;
-
- }
-
- currentAlignment += CdrPrimitiveType.BYTE.getArrayMaxSizeSerialized(currentAlignment, ((com.rti.perftest.gen.KEY_SIZE.VALUE)));
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.BYTE.getSequenceMaxSizeSerialized(currentAlignment, ((com.rti.perftest.gen.MAX_BINDATA_SIZE.VALUE)));
- if (include_encapsulation) {
- currentAlignment += encapsulation_size;
- }
- return currentAlignment - origAlignment;
- }
-
- public long get_serialized_sample_min_size(Object endpoint_data,boolean include_encapsulation,short encapsulation_id,long currentAlignment) {
-
- long origAlignment = currentAlignment;
- long encapsulation_size = currentAlignment;
-
- if(include_encapsulation) {
- if (!CdrEncapsulation.isValidEncapsulationKind(encapsulation_id)) {
- throw new RETCODE_ERROR("Unsupported encapsulation");
- }
-
- encapsulation_size += CdrPrimitiveType.SHORT.getMaxSizeSerialized(encapsulation_size);
- encapsulation_size += CdrPrimitiveType.SHORT.getMaxSizeSerialized(encapsulation_size);
- encapsulation_size -= currentAlignment;
- currentAlignment = 0;
- origAlignment = 0;
-
- }
-
- currentAlignment += CdrPrimitiveType.BYTE.getArrayMaxSizeSerialized(currentAlignment, ((com.rti.perftest.gen.KEY_SIZE.VALUE)));
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment );
- currentAlignment += CdrPrimitiveType.BYTE.getSequenceMaxSizeSerialized(currentAlignment, 0);
-
- if (include_encapsulation) {
- currentAlignment += encapsulation_size;
- }
- return currentAlignment - origAlignment;
-
- }
-
- public long get_serialized_sample_size(
- Object endpoint_data, boolean include_encapsulation,
- short encapsulation_id, long currentAlignment,
- Object sample)
- {
- TestData_t typedSrc = (TestData_t) sample;
- long origAlignment = currentAlignment;
- long encapsulation_size = currentAlignment;
-
- if(include_encapsulation) {
- if (!CdrEncapsulation.isValidEncapsulationKind(encapsulation_id)) {
- throw new RETCODE_ERROR("Unsupported encapsulation");
- }
-
- encapsulation_size += CdrPrimitiveType.SHORT.getMaxSizeSerialized(encapsulation_size);
- encapsulation_size += CdrPrimitiveType.SHORT.getMaxSizeSerialized(encapsulation_size);
- encapsulation_size -= currentAlignment;
- currentAlignment = 0;
- origAlignment = 0;
-
- }
-
- currentAlignment += CdrPrimitiveType.BYTE.getArrayMaxSizeSerialized(currentAlignment, ((com.rti.perftest.gen.KEY_SIZE.VALUE)));
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment);
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment);
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment);
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment);
- currentAlignment += CdrPrimitiveType.INT.getMaxSizeSerialized(currentAlignment);
- currentAlignment += CdrPrimitiveType.BYTE.getSequenceSerializedSize(
- currentAlignment , typedSrc.bin_data );
-
- if (include_encapsulation) {
- currentAlignment += encapsulation_size;
- }
- return currentAlignment - origAlignment;
- }
-
- public long get_serialized_key_max_size(
- Object endpoint_data,
- boolean include_encapsulation,
- short encapsulation_id,
- long currentAlignment)
- {
-
- long origAlignment = currentAlignment;
- long encapsulation_size = currentAlignment;
-
- if(include_encapsulation) {
- if (!CdrEncapsulation.isValidEncapsulationKind(encapsulation_id)) {
- throw new RETCODE_ERROR("Unsupported encapsulation");
- }
-
- encapsulation_size += CdrPrimitiveType.SHORT.getMaxSizeSerialized(encapsulation_size);
- encapsulation_size += CdrPrimitiveType.SHORT.getMaxSizeSerialized(encapsulation_size);
- encapsulation_size -= currentAlignment;
- currentAlignment = 0;
- origAlignment = 0;
-
- }
-
- currentAlignment += get_serialized_sample_max_size(
- endpoint_data,false,encapsulation_id,currentAlignment);
-
- if (include_encapsulation) {
- currentAlignment += encapsulation_size;
- }
-
- return currentAlignment - origAlignment;
- }
-
- public void serialize(Object endpoint_data,Object src, CdrOutputStream dst,boolean serialize_encapsulation,
- short encapsulation_id, boolean serialize_sample, Object endpoint_plugin_qos) {
- int position = 0;
-
- if(serialize_encapsulation) {
- dst.serializeAndSetCdrEncapsulation(encapsulation_id);
-
- position = dst.resetAlignment();
-
- }
-
- if(serialize_sample) {
-
- TestData_t typedSrc = (TestData_t) src;
-
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- dst.writeByte(typedSrc.key[i1__]);
- }
-
- dst.writeInt(typedSrc.entity_id);
-
- dst.writeInt(typedSrc.seq_num);
-
- dst.writeInt(typedSrc.timestamp_sec);
-
- dst.writeInt(typedSrc.timestamp_usec);
-
- dst.writeInt(typedSrc.latency_ping);
-
- dst.writeByteSeq(typedSrc.bin_data,((com.rti.perftest.gen.MAX_BINDATA_SIZE.VALUE)));
- }
-
- if (serialize_encapsulation) {
- dst.restoreAlignment(position);
- }
-
- }
- public long serialize_to_cdr_buffer(
- byte[] buffer,
- long length,
- TestData_t src)
- {
- return super.serialize_to_cdr_buffer(buffer,length,src);
- }
-
- public void serialize_key(
- Object endpoint_data,
- Object src,
- CdrOutputStream dst,
- boolean serialize_encapsulation,
- short encapsulation_id,
- boolean serialize_key,
- Object endpoint_plugin_qos)
- {
- int position = 0;
-
- if (serialize_encapsulation) {
- dst.serializeAndSetCdrEncapsulation(encapsulation_id);
-
- position = dst.resetAlignment();
- }
-
- if (serialize_key) {
-
- TestData_t typedSrc = (TestData_t) src;
- serialize(endpoint_data, src, dst, false, CdrEncapsulation.CDR_ENCAPSULATION_ID_CDR_BE, true, endpoint_plugin_qos);
-
- }
-
- if (serialize_encapsulation) {
- dst.restoreAlignment(position);
- }
- }
-
- public Object deserialize_sample(
- Object endpoint_data,
- Object dst,
- CdrInputStream src, boolean deserialize_encapsulation,
- boolean deserialize_sample,
- Object endpoint_plugin_qos)
- {
- int position = 0;
-
- if(deserialize_encapsulation) {
- src.deserializeAndSetCdrEncapsulation();
-
- position = src.resetAlignment();
- }
-
- if(deserialize_sample) {
-
- TestData_t typedDst = (TestData_t) dst;
- typedDst.clear();
- try{
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- typedDst.key[i1__] = src.readByte();
- }
-
- typedDst.entity_id = src.readInt();
- typedDst.seq_num = src.readInt();
- typedDst.timestamp_sec = src.readInt();
- typedDst.timestamp_usec = src.readInt();
- typedDst.latency_ping = src.readInt();
- src.readByteSequence(typedDst.bin_data, ((com.rti.perftest.gen.MAX_BINDATA_SIZE.VALUE)));
- } catch (IllegalCdrStateException stateEx) {
- if (src.available() >= CdrEncapsulation.CDR_ENCAPSULATION_PARAMETER_ID_ALIGNMENT) {
- throw new RETCODE_ERROR("Error deserializing sample! Remainder: " + src.available() + "\n" +
- "Exception caused by: " + stateEx.getMessage());
- }
- } catch (Exception ex) {
- throw new RETCODE_ERROR(ex.getMessage());
- }
-
- }
- if (deserialize_encapsulation) {
- src.restoreAlignment(position);
- }
-
- return dst;
- }
-
- public void deserialize_from_cdr_buffer(
- TestData_t dst,
- byte[] buffer,
- long length)
- {
- super.deserialize_from_cdr_buffer(dst,buffer,length);
- }
-
- public Object deserialize_key_sample(
- Object endpoint_data,
- Object dst,
- CdrInputStream src,
- boolean deserialize_encapsulation,
- boolean deserialize_key,
- Object endpoint_plugin_qos)
- {
- int position = 0;
-
- if(deserialize_encapsulation) {
- src.deserializeAndSetCdrEncapsulation();
-
- position = src.resetAlignment();
- }
-
- if(deserialize_key) {
-
- TestData_t typedDst = (TestData_t) dst;
-
- deserialize_sample(endpoint_data, dst, src, false, true, endpoint_plugin_qos);
-
- }
- if (deserialize_encapsulation) {
- src.restoreAlignment(position);
- }
-
- return dst;
- }
-
- public void skip(Object endpoint_data,
- CdrInputStream src,
- boolean skip_encapsulation,
- boolean skip_sample,
- Object endpoint_plugin_qos)
- {
- int position = 0;
-
- if (skip_encapsulation) {
- src.skipEncapsulation();
-
- position = src.resetAlignment();
- }
-
- if (skip_sample) {
-
- for(int i1__ = 0; i1__< (com.rti.perftest.gen.KEY_SIZE.VALUE); ++i1__){
-
- src.skipByte();
- }
-
- src.skipInt();
-
- src.skipInt();
-
- src.skipInt();
-
- src.skipInt();
-
- src.skipInt();
-
- src.skipByteSequence();
-
- }
-
- if (skip_encapsulation) {
- src.restoreAlignment(position);
- }
- }
-
- public Object serialized_sample_to_key(
- Object endpoint_data,
- Object sample,
- CdrInputStream src,
- boolean deserialize_encapsulation,
- boolean deserialize_key,
- Object endpoint_plugin_qos)
- {
-
- int position = 0;
-
- if(deserialize_encapsulation) {
- src.deserializeAndSetCdrEncapsulation();
-
- position = src.resetAlignment();
- }
-
- if (deserialize_key) {
-
- TestData_t typedDst = (TestData_t) sample;
-
- deserialize_sample(
- endpoint_data, sample, src, false,
- true, endpoint_plugin_qos);
-
- }
-
- if (deserialize_encapsulation) {
- src.restoreAlignment(position);
- }
-
- return sample;
- }
-
- // -----------------------------------------------------------------------
- // Callbacks
- // -----------------------------------------------------------------------
- public Object on_participant_attached(Object registration_data,
- TypeSupportParticipantInfo participant_info,
- boolean top_level_registration,
- Object container_plugin_context,
- TypeCode type_code) {
- return super.on_participant_attached(
- registration_data, participant_info, top_level_registration,
- container_plugin_context, type_code);
- }
-
- public void on_participant_detached(Object participant_data) {
- super.on_participant_detached(participant_data);
- }
-
- public Object on_endpoint_attached(Object participantData,
- TypeSupportEndpointInfo endpoint_info,
- boolean top_level_registration,
- Object container_plugin_context) {
- return super.on_endpoint_attached(
- participantData, endpoint_info,
- top_level_registration, container_plugin_context);
- }
-
- public void on_endpoint_detached(Object endpoint_data) {
- super.on_endpoint_detached(endpoint_data);
- }
- // -----------------------------------------------------------------------
- // Protected Methods
- // -----------------------------------------------------------------------
-
- protected DataWriter create_datawriter(long native_writer,
- DataWriterListener listener,
- int mask) {
- return new TestData_tDataWriter (native_writer, listener, mask, this);
- }
-
- protected DataReader create_datareader(long native_reader,
- DataReaderListener listener,
- int mask) {
-
- return new TestData_tDataReader(native_reader, listener, mask, this);
-
- }
-
- // -----------------------------------------------------------------------
- // Constructor
- // -----------------------------------------------------------------------
-
- protected TestData_tTypeSupport() {
-
- /* If the user data type supports keys, then the second argument
- to the constructor below should be true. Otherwise it should
- be false. */
-
- super(TYPE_NAME, false,TestData_tTypeCode.VALUE,TestData_t.class,TypeSupportType.TST_STRUCT, PLUGIN_VERSION);
-
- }
-
- protected TestData_tTypeSupport (boolean enableKeySupport) {
-
- super(TYPE_NAME, enableKeySupport,TestData_tTypeCode.VALUE,TestData_t.class,TypeSupportType.TST_STRUCT, PLUGIN_VERSION);
- }
-}
-
diff --git a/perftest_java_util/com/rti/perftest/IMessaging.java b/perftest_java_util/com/rti/perftest/IMessaging.java
index beb542e8..4c36e842 100644
--- a/perftest_java_util/com/rti/perftest/IMessaging.java
+++ b/perftest_java_util/com/rti/perftest/IMessaging.java
@@ -1,16 +1,8 @@
-/* $Id: IMessaging.java,v 1.2 2014/01/10 11:19:08 juanjo Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history:
---------------------
-29may09,jsr Added detection of wrong command line parameter
-01apr08,rbw Follow Java naming conventions
-01apr08,rbw Created
-=========================================================================== */
-
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest;
@@ -54,4 +46,4 @@ public IMessagingReader createReader(
}
// ===========================================================================
-// End of $Id: IMessaging.java,v 1.2 2014/01/10 11:19:08 juanjo Exp $
+// End of $Id$
diff --git a/perftest_java_util/com/rti/perftest/IMessagingCB.java b/perftest_java_util/com/rti/perftest/IMessagingCB.java
index 7808285b..78f1cda5 100644
--- a/perftest_java_util/com/rti/perftest/IMessagingCB.java
+++ b/perftest_java_util/com/rti/perftest/IMessagingCB.java
@@ -1,15 +1,8 @@
-/* $Id: IMessagingCB.java,v 1.2 2014/01/10 11:19:08 juanjo Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history:
---------------------
-01apr08,rbw Follow Java naming conventions
-01apr08,rbw Created
-=========================================================================== */
-
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest;
@@ -24,4 +17,4 @@ public interface IMessagingCB {
}
// ===========================================================================
-// End of $Id: IMessagingCB.java,v 1.2 2014/01/10 11:19:08 juanjo Exp $
+// End of $Id$
diff --git a/perftest_java_util/com/rti/perftest/IMessagingReader.java b/perftest_java_util/com/rti/perftest/IMessagingReader.java
index c1f1eb19..af4f6665 100644
--- a/perftest_java_util/com/rti/perftest/IMessagingReader.java
+++ b/perftest_java_util/com/rti/perftest/IMessagingReader.java
@@ -1,16 +1,8 @@
-/* $Id: IMessagingReader.java,v 1.2 2014/01/10 11:19:08 juanjo Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history:
---------------------
-04may08,hhw Added waitForWriters();
-01apr08,rbw Follow Java naming conventions
-01apr08,rbw Created
-=========================================================================== */
-
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest;
@@ -36,4 +28,4 @@ public interface IMessagingReader {
}
// ===========================================================================
-// End of $Id: IMessagingReader.java,v 1.2 2014/01/10 11:19:08 juanjo Exp $
+// End of $Id$
diff --git a/perftest_java_util/com/rti/perftest/IMessagingWriter.java b/perftest_java_util/com/rti/perftest/IMessagingWriter.java
index 0bee46f2..1ba9ba9e 100644
--- a/perftest_java_util/com/rti/perftest/IMessagingWriter.java
+++ b/perftest_java_util/com/rti/perftest/IMessagingWriter.java
@@ -1,17 +1,8 @@
-/* $Id: IMessagingWriter.java,v 1.2 2014/01/10 11:19:08 juanjo Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history:
---------------------
-09jul10,jsr Added new waitForPingResponse method
-03may10,jsr Added waitForPingResponse and notifyPingResponse
-01apr08,rbw Follow Java naming conventions
-01apr08,rbw Created
-=========================================================================== */
-
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest;
@@ -36,4 +27,4 @@ public interface IMessagingWriter {
}
// ===========================================================================
-// End of $Id: IMessagingWriter.java,v 1.2 2014/01/10 11:19:08 juanjo Exp $
+// End of $Id$
diff --git a/perftest_java_util/com/rti/perftest/TestMessage.java b/perftest_java_util/com/rti/perftest/TestMessage.java
index f1c7c18a..2d920aba 100644
--- a/perftest_java_util/com/rti/perftest/TestMessage.java
+++ b/perftest_java_util/com/rti/perftest/TestMessage.java
@@ -1,19 +1,8 @@
-/* $Id: TestMessage.java,v 1.4 2014/09/22 16:28:50 jmorales Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history:
---------------------
-5.1.0,22sep14,jm PERFTEST-75 Fixed LargeData + Turbo-Mode. Changing max size to
- 131072.
-5.1.0,16sep14,jm PERFTEST-60 PERFTEST-66 Large data support
- added for perftest.
-04may08,hhw Added entity_id.
-01apr08,rbw Created
-=========================================================================== */
-
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest;
@@ -38,4 +27,4 @@ public class TestMessage {
}
// ===========================================================================
-// End of $Id: TestMessage.java,v 1.4 2014/09/22 16:28:50 jmorales Exp $
+// End of $Id$
diff --git a/perftest_java_util/com/rti/perftest/harness/AnnouncementListener.java b/perftest_java_util/com/rti/perftest/harness/AnnouncementListener.java
index 4d1b6146..bf18906a 100644
--- a/perftest_java_util/com/rti/perftest/harness/AnnouncementListener.java
+++ b/perftest_java_util/com/rti/perftest/harness/AnnouncementListener.java
@@ -1,13 +1,8 @@
-/* $Id: AnnouncementListener.java,v 1.2 2014/01/10 11:19:08 juanjo Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
- modification history:
- --------------------
- 04may08,hhw Created.
-=========================================================================== */
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest.harness;
@@ -49,4 +44,4 @@ public void processMessage(TestMessage message) {
}
// ===========================================================================
-// End of $Id: AnnouncementListener.java,v 1.2 2014/01/10 11:19:08 juanjo Exp $
+// End of $Id$
diff --git a/perftest_java_util/com/rti/perftest/harness/LatencyListener.java b/perftest_java_util/com/rti/perftest/harness/LatencyListener.java
index 79f1ec06..93664d2a 100644
--- a/perftest_java_util/com/rti/perftest/harness/LatencyListener.java
+++ b/perftest_java_util/com/rti/perftest/harness/LatencyListener.java
@@ -1,26 +1,8 @@
-/* $Id: LatencyListener.java,v 1.4 2014/06/27 15:23:02 juanjo Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history:
---------------------
-5.1.0,19may2014,jmc PERFTEST-49 Added 99.9999% latency
-09jul10,jsr Fixing LatencyListener constructor
-03may10,jsr Adapted for new Latencytest option
-02oct08,eys Added 99.99% latency
-04may08,hhw Minor mods.
-21apr08,ch Output modifications for automation
-03apr08,rbw More improvements to time calculations; more readable summaries
-03apr08,rbw Improvements to time calculations
-03apr08,rbw More printf() fixes
-02apr08,rbw Fixed syntax error in printf() call
-02apr08,rbw Moved to package com.rti.perftest.harness to distinguish between
- (1) RTI-specific test implementation and (2) generic test harness
-01apr08,rbw Follow Java naming conventions
-01apr08,rbw Created
-=========================================================================== */
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest.harness;
@@ -251,4 +233,4 @@ public void processMessage(TestMessage message) {
}
// ===========================================================================
-// End of $Id: LatencyListener.java,v 1.4 2014/06/27 15:23:02 juanjo Exp $
+// End of $Id$
diff --git a/perftest_java_util/com/rti/perftest/harness/PerfTest.java b/perftest_java_util/com/rti/perftest/harness/PerfTest.java
index f91b2d50..9f1eb457 100644
--- a/perftest_java_util/com/rti/perftest/harness/PerfTest.java
+++ b/perftest_java_util/com/rti/perftest/harness/PerfTest.java
@@ -1,68 +1,8 @@
-/* $Id: PerfTest.java,v 1.13 2015/04/27 20:43:56 jmorales Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history:
---------------------
-5.2.0,27apr14,jm PERFTEST-86 Removing .ini support. Fixing warnings.
-5.1.0,23sep14,jmc get_spin_per_microsecond was commented out. Fixed
-5.1.0,16sep14,jm PERFTEST-60 PERFTEST-66 Large data support
- added for perftest.
-5.1.0,27aug14,jmc PERFTEST-63 Added -executionTime command line option
- Also modified _numIter to long
-5.1.0,26aug14,jm Added support for -pubRate in perftest.ini and
- implemented checks for pubRate bounds.
-5.1.0,11aug14,jm PERFTEST-69 Fixed issue that was making jms to fail.
-5.1.0,11aug14,jm PERFTEST-69 Added -keyed command line option.
-5.1.0,16jul14,jm PERFTEST-53 Added -pubRate command-line option.
- _spinLoopCount modified to be a long. Deprecating -spin.
-09jul10,jsr Added new waitForPingResponse for best effort mode
-08jul10,jsr Fixing LatencyListener constructor calls
-07jul10,eys Cleanup perftest parameters
-03may10,jsr Adapted for the new Latencytest option
-21may09,fcs Fixed channel initialization
-14may09,fcs Fixed scan output
-14may09,fcs Added instances to INI
-14may09,fcs Fixed command-line arguments processing
-29may09,jsr Added detection of wrong command line parameter
-23apr09,jsr Changed to stderr the error and status messages
-21apr09,jsr Reformat the help menu
-24oct08,rbw If next size in scan is too big, do the best we can
-23oct08,rbw Fail test if send() fails
-08oct08,rbw Refactored DDS dependencies to
- com.rti.perftest.impl.PerfTestLauncher
-22aug08,eys Flush after every send when initializing the channel
-22aug08,eys decrease checking interval on subscriber to gather latency
- numbers
-20aug08,eys initialize channel by writing InstanceCount initially
-14aug08,ch changed key to be 4 bytes long -> overhead change
-13aug08,ch added check to not exceed MAX_BINDATA_SIZE
-09aug08,ch increased sleep after FINISHED_MESSAGE send to make sure
- it gets through in the multi-instance case
-11jun08,rbw Enable reflective test implementation loading
-12may08,hhw Fixed some length checks to accommodate 32 byte overhead.
-09may08,ch Changed OVERHEAD
-04may08,hhw Modified batch processing.
- Synchronized to perftest.cxx changes.
-22apr08,fcs Removed yield from spinning
-21apr08,ch Output modifications for automation
-21apr08,fcs Changed OVERHEAD
-08apr08,rbw Fixed compile errors
-07apr08,hhw Now printing end of test in listener to avoid race condition.
-04apr08,rbw Reverted some of yesterday's summary calculation changes
-03apr08,rbw Improved summary output
-03apr08,rbw Improvements to time calculations
-03apr08,rbw More printf() fixes
-02apr08,rbw Improved config file checking; fixed syntax error in printf()
- calls; minor stylistic improvements
-02apr08,rbw Moved to package com.rti.perftest.harness to distinguish between
- (1) RTI-specific test implementation and (2) generic test harness
-02apr08,rbw Implemented *.ini file parsing
-01apr08,rbw Follow Java naming conventions
-01apr08,rbw Created
-=========================================================================== */
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest.harness;
@@ -195,8 +135,7 @@ public void finishTest() {
// Private Methods
// -----------------------------------------------------------------------
- private void run(IMessaging messagingImpl,
- String[] argv) {
+ private void run(IMessaging messagingImpl, String[] argv) {
_messagingImpl = messagingImpl;
@@ -204,7 +143,7 @@ private void run(IMessaging messagingImpl,
return;
}
- if ( !_messagingImpl.initialize(_messagingArgc, _messagingArgv) ) {
+ if (!_messagingImpl.initialize(_messagingArgc, _messagingArgv)) {
return;
}
_batchSize = _messagingImpl.getBatchSize();
@@ -292,6 +231,7 @@ private boolean parseConfig(String[] argv) {
{
if ("-pub".toLowerCase().startsWith(argv[i].toLowerCase())) {
_isPub = true;
+ _messagingArgv[_messagingArgc++] = argv[i];
}
else if ("-sub".toLowerCase().startsWith(argv[i].toLowerCase()))
{
@@ -1108,4 +1048,4 @@ private static void sleep(int millis) {
}
// ===========================================================================
-// End of $Id: PerfTest.java,v 1.13 2015/04/27 20:43:56 jmorales Exp $
+// End of $Id$
diff --git a/perftest_java_util/com/rti/perftest/harness/PerftestTimerTask.java b/perftest_java_util/com/rti/perftest/harness/PerftestTimerTask.java
index 834dfd16..d1483733 100644
--- a/perftest_java_util/com/rti/perftest/harness/PerftestTimerTask.java
+++ b/perftest_java_util/com/rti/perftest/harness/PerftestTimerTask.java
@@ -1,13 +1,8 @@
-/* $Id: PerftestTimerTask.java,v 1.1 2014/08/27 11:35:57 juanjo Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history:
---------------------
-5.1.0,27aug14,jmc PERFTEST-63 Created.
-=========================================================================== */
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest.harness;
@@ -44,4 +39,4 @@ public void cancelTimer() {
}
// ===========================================================================
-// End of $Id: PerftestTimerTask.java,v 1.1 2014/08/27 11:35:57 juanjo Exp $
\ No newline at end of file
+// End of $Id$
\ No newline at end of file
diff --git a/perftest_java_util/com/rti/perftest/harness/ThroughputListener.java b/perftest_java_util/com/rti/perftest/harness/ThroughputListener.java
index f5fe7e11..ef6c831e 100644
--- a/perftest_java_util/com/rti/perftest/harness/ThroughputListener.java
+++ b/perftest_java_util/com/rti/perftest/harness/ThroughputListener.java
@@ -1,26 +1,8 @@
-/* $Id: ThroughputListener.java,v 1.3 2014/10/31 12:04:31 juanjo Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history:
---------------------
-5.2.0,31oct14 jmc PERFTEST-76 Fixed segfault in processMessage
-14may09,fcs Fixed scan output
-23oct08,rbw Fail test if send() fails
-12may08,hhw Fixed some length checks to accommodate 32 byte overhead.
-02may08,hhw Augmented for N to 1 tests.
-22apr08,fcs Fixed missing packets count
-21apr08,ch Output modifications for automation
-08apr08,rbw Fixed compile errors; eliminated duplicate _beginTime init
-07apr08,hhw Now printing end of test in listener to avoid race condition.
-03apr08,rbw Fixed initialization of test's beginning time
-02apr08,rbw Moved to package com.rti.perftest.harness to distinguish between
- (1) RTI-specific test implementation and (2) generic test harness
-01apr08,rbw Follow Java naming conventions
-01apr08,rbw Created
-=========================================================================== */
+/*
+ * (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+ * Permission to modify and use for internal purposes granted.
+ * This software is provided "as is", without warranty, express or implied.
+ */
package com.rti.perftest.harness;
@@ -282,4 +264,4 @@ public void processMessage(TestMessage message) {
}
// ===========================================================================
-// End of $Id: ThroughputListener.java,v 1.3 2014/10/31 12:04:31 juanjo Exp $
+// End of $Id$
diff --git a/perftest_java_util/com/rti/perftest/ini/Ini.java b/perftest_java_util/com/rti/perftest/ini/Ini.java
deleted file mode 100644
index 7be02099..00000000
--- a/perftest_java_util/com/rti/perftest/ini/Ini.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/* $Id: Ini.java,v 1.2 2014/01/10 11:19:08 juanjo Exp $
-
-(c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-Permission to modify and use for internal purposes granted.
-This software is provided "as is", without warranty, express or implied.
-
-modification history:
---------------------
-03apr08,rbw Refactored for better error reporting
-02apr08,rbw Fixed parsing bugs
-02apr08,rbw Created
-=========================================================================== */
-
-package com.rti.perftest.ini;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-
-// ===========================================================================
-
-/**
- * Represents the configuration in a *.ini file. A file is divided into
- * sections, each one which contains some number of name/value pairs.
- */
-public final class Ini {
- // -----------------------------------------------------------------------
- // Private Fields
- // -----------------------------------------------------------------------
-
- private static final Pattern COMMENT_DELIMITER =
- Pattern.compile(";");
- private static final Pattern SECTION_HEADER =
- Pattern.compile("\\[(.+)\\]");
- private static final Pattern KEY_VALUE_DELIMITER =
- Pattern.compile("=");
-
-
- private final Map _namedSections =
- new HashMap();
-
- private final boolean _caseSensitive;
-
-
-
- // -----------------------------------------------------------------------
- // Public Methods
- // -----------------------------------------------------------------------
-
- public static Ini load(File file, boolean caseSensitive)
- throws IOException {
- return new Ini(file, caseSensitive);
- }
-
-
- // -----------------------------------------------------------------------
-
- public Section section(String name) {
- if (!_caseSensitive) {
- name = name.toLowerCase();
- }
- return _namedSections.get(name);
- }
-
-
-
- // -----------------------------------------------------------------------
- // Private Methods
- // -----------------------------------------------------------------------
-
- // --- Constructors: -----------------------------------------------------
-
- private Ini(File file, boolean caseSensitive)
- throws IOException {
- assert file != null;
- _caseSensitive = caseSensitive;
-
- BufferedReader reader = new BufferedReader(new FileReader(file));
- try {
- Map currentSection = null;
- String line;
- while ((line = reader.readLine()) != null) {
- String[] lineSplitByComments = COMMENT_DELIMITER.split(
- line, 2);
- assert lineSplitByComments.length == 1 || // no comment
- lineSplitByComments.length == 2; // comment
- String lineBeforeComment = lineSplitByComments[0].trim();
- if (lineBeforeComment.length() == 0) {
- continue;
- }
-
- // --- Parse sections --- //
- Matcher matcher = SECTION_HEADER.matcher(lineBeforeComment);
- if (matcher.matches()) {
- // starting new section:
- currentSection = new HashMap();
- String sectionName = matcher.group(1);
- assert sectionName.length() > 0;
- if (!caseSensitive) {
- sectionName = sectionName.toLowerCase();
- }
- _namedSections.put(
- sectionName, new Section(currentSection));
- } else {
- // continuing existing section:
- assert currentSection != null :
- "No section declaration in " + file;
- String[] keyAndValue = KEY_VALUE_DELIMITER.split(
- lineBeforeComment, 2);
- assert keyAndValue.length == 2;
- String key = keyAndValue[0].trim();
- assert key.length() > 0;
- String value = keyAndValue[1].trim();
- assert value.length() > 0;
- if (!caseSensitive) {
- key = key.toLowerCase();
- value = value.toLowerCase();
- }
- currentSection.put(key, value);
- }
- }
- } finally {
- reader.close();
- }
- }
-
-
-
- // -----------------------------------------------------------------------
- // Public Classes
- // -----------------------------------------------------------------------
-
- // =======================================================================
-
- /**
- * Represents one named section of a *.ini file, delimited by a header
- * line like this:
- *
- * [name]
- */
- public final class Section {
- // --- Private Fields: -----------------------------------------------
- private final Map _entries;
-
- // --- Constructors: -------------------------------------------------
- private Section (Map entries) {
- _entries = Collections.unmodifiableMap(entries);
- }
-
- // --- Public Methods: -----------------------------------------------
- /**
- * Get the value associated with the given name, or the default if
- * the value doesn't exist.
- */
- public String get(String name, String defaultValue) {
- if (!_caseSensitive) {
- name = name.toLowerCase();
- }
- String value = _entries.get(name);
- if (value == null) {
- value = defaultValue;
- }
- return value;
- }
-
- /**
- * Get the value associated with the given name as an integer. If
- * the name doesn't exist in this section, or the associated value is
- * not an integer, this method will return the given default value.
- */
- public int getInt(String name, int defaultValue) {
- String strValue = get(name, String.valueOf(defaultValue));
- try {
- return Integer.parseInt(strValue);
- } catch (NumberFormatException nfx) {
- return defaultValue;
- }
- }
-
- /**
- * Get the value associated with the given name as a boolean. If
- * the name doesn't exist in this section, or the associated value is
- * not a boolean, this method will return the given default value.
- */
- public boolean getBoolean(String name, boolean defaultValue) {
- String strValue = get(name, String.valueOf(defaultValue));
- return Boolean.parseBoolean(strValue);
- }
- }
-
-}
-
-// ===========================================================================
-// End of $Id: Ini.java,v 1.2 2014/01/10 11:19:08 juanjo Exp $
diff --git a/resource/properties/dds_debug.properties b/resource/properties/dds_debug.properties
index 0271c424..95a814ae 100644
--- a/resource/properties/dds_debug.properties
+++ b/resource/properties/dds_debug.properties
@@ -1,15 +1,6 @@
-# $Id: dds_debug.properties,v 1.2 2014/01/10 11:19:09 juanjo Exp $
-#
-# (c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-# Permission to modify and use for internal purposes granted.
+# (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+# Permission to modify and use for internal purposes granted.
# This software is provided "as is", without warranty, express or implied.
-#
-# modification history:
-# ---------------------
-# 10oct08,rbw Renamed this file and the output JAR file
-# 04apr08,rbw Harmonized output paths with other architectures
-# 02apr08,rbw Created
-# ============================================================================
# A Java properties file containing the configuration for the debug build.
@@ -25,4 +16,4 @@ lib.suffix = d
# ============================================================================
-# End of $Id: dds_debug.properties,v 1.2 2014/01/10 11:19:09 juanjo Exp $
+# End of $Id$
diff --git a/resource/properties/dds_release.properties b/resource/properties/dds_release.properties
index a1400d9d..b791321d 100644
--- a/resource/properties/dds_release.properties
+++ b/resource/properties/dds_release.properties
@@ -1,15 +1,6 @@
-# $Id: dds_release.properties,v 1.2 2014/01/10 11:19:09 juanjo Exp $
-#
-# (c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-# Permission to modify and use for internal purposes granted.
+# (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+# Permission to modify and use for internal purposes granted.
# This software is provided "as is", without warranty, express or implied.
-#
-# modification history:
-# ---------------------
-# 10oct08,rbw Renamed this file and the output JAR file
-# 04apr08,rbw Harmonized output paths with other architectures
-# 02apr08,rbw Created
-# ============================================================================
# A Java properties file containing the configuration for the release build.
@@ -25,4 +16,4 @@ lib.suffix =
# ============================================================================
-# End of $Id: dds_release.properties,v 1.2 2014/01/10 11:19:09 juanjo Exp $
+# End of $Id$
diff --git a/resource/secure/cacert.pem b/resource/secure/cacert.pem
new file mode 100644
index 00000000..1ba1d20e
--- /dev/null
+++ b/resource/secure/cacert.pem
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDeDCCAmACCQDDJ6weFoOySTANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJV
+UzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCVN1bm55dmFsZTEeMBwGA1UECgwVUmVh
+bCBUaW1lIElubm92YXRpb25zMQ8wDQYDVQQDDAZSVEkgQ0ExHTAbBgkqhkiG9w0B
+CQEWDnNlY3VyZUBydGkuY29tMB4XDTE2MDcxNzE0MzA0MVoXDTI2MDcxNTE0MzA0
+MVowfjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYDVQQHDAlTdW5ueXZh
+bGUxHjAcBgNVBAoMFVJlYWwgVGltZSBJbm5vdmF0aW9uczEPMA0GA1UEAwwGUlRJ
+IENBMR0wGwYJKoZIhvcNAQkBFg5zZWN1cmVAcnRpLmNvbTCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBAN1Z1CYXRWmx4EywOk20l228jmPzQD8DfbINZP4x
+lh/pGmzGtuuvkwkqQMSC+yBNp9rKHVRO2FqiDfPp7dnOsPEtAxwaVYyhZW1z+5Qw
+gsVa7Y6yPXENGijUsR+MjiF5rNJSTh0zRu4Mc7VOYNE3Yq6fTCeC3M9GUzxuN6vV
+cz/RJE0RNXuun2PGrB/M0ke1tiO+gzAX5WTlRGq0Meam3cTPosFZmYG0NPr39OUu
+G7aEYm/+aSce/MN44cokVCo+JU2mw6lFljYnXROQYUX1MRSQmui2JerRKxhpPqBX
+vwC53ci17p2mKaTWQNPwOUuDtvePbFdmj1xUKO2lbje8M28CAwEAATANBgkqhkiG
+9w0BAQsFAAOCAQEACVXHxpRwBwIwyltfZ+7fD5Adjh0mU2DvCyh9gSnCJy0C1+hW
++8+bccXp/kImlFobLZCwCa24W1arJKlU3yjBi61kmv1LiVNvgQtL65lDdtoaiJAk
+HvCXlytu6XrKhhC8+siJFbr7Xig2N3t6JGxacwwl/QJFQnBT6xNn62bcn8IM/M4I
+ZZsPSx7ZJX0wlqq5oJSPCZf47GV2wwgjDBkZR1tpMI79NHJDOIzb+8a+OWpRIR2a
+jOJ8ZDwKap2eRFMmzAbRqt5NtQurvBlvdt+ayrog0KahnaGpTA9wfOBMkRFVrP7L
+xnq1+WO65ozXx8cnAt2u+Jy1OLF4GlvSIYyD3Q==
+-----END CERTIFICATE-----
diff --git a/resource/secure/input/PerftestPermissionsPub.xml b/resource/secure/input/PerftestPermissionsPub.xml
new file mode 100644
index 00000000..94ea69a3
--- /dev/null
+++ b/resource/secure/input/PerftestPermissionsPub.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+ /C=US/ST=CA/O=Real Time Innovations/CN=perftest/emailAddress=pub@rti.com
+
+
+ 2013060113
+ 2023060113
+
+
+ 1
+
+ Throughput
+
+
+ Announcement
+
+
+ Latency
+
+
+ Announcement
+
+
+ DENY
+
+
\ No newline at end of file
diff --git a/resource/secure/input/PerftestPermissionsSub.xml b/resource/secure/input/PerftestPermissionsSub.xml
new file mode 100644
index 00000000..feb7a4bc
--- /dev/null
+++ b/resource/secure/input/PerftestPermissionsSub.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+ /C=US/ST=CA/O=Real Time Innovations/CN=perftest/emailAddress=sub@rti.com
+
+
+ 2013060113
+ 2023060113
+
+
+ 1
+
+ Latency
+
+
+ Announcement
+
+
+ Throughput
+
+
+ Announcement
+
+
+ DENY
+
+
\ No newline at end of file
diff --git a/resource/secure/input/governances/PerftestGovernance_.xml b/resource/secure/input/governances/PerftestGovernance_.xml
new file mode 100755
index 00000000..7373b3f9
--- /dev/null
+++ b/resource/secure/input/governances/PerftestGovernance_.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+ *
+ TRUE
+ FALSE
+ NONE
+ NONE
+ NONE
+
+
+ *
+ FALSE
+ FALSE
+ FALSE
+ NONE
+ NONE
+
+
+
+
+
diff --git a/resource/secure/input/governances/PerftestGovernance_Discovery.xml b/resource/secure/input/governances/PerftestGovernance_Discovery.xml
new file mode 100755
index 00000000..ef327065
--- /dev/null
+++ b/resource/secure/input/governances/PerftestGovernance_Discovery.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+ *
+ FALSE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+ NONE
+
+
+ *
+ TRUE
+ TRUE
+ TRUE
+ NONE
+ NONE
+
+
+
+
+
diff --git a/resource/secure/input/governances/PerftestGovernance_DiscoveryEncryptBoth.xml b/resource/secure/input/governances/PerftestGovernance_DiscoveryEncryptBoth.xml
new file mode 100755
index 00000000..8cf01824
--- /dev/null
+++ b/resource/secure/input/governances/PerftestGovernance_DiscoveryEncryptBoth.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+ *
+ FALSE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+ NONE
+
+
+ *
+ TRUE
+ TRUE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+
+
+
+
+
diff --git a/resource/secure/input/governances/PerftestGovernance_DiscoveryEncryptData.xml b/resource/secure/input/governances/PerftestGovernance_DiscoveryEncryptData.xml
new file mode 100755
index 00000000..abf3e241
--- /dev/null
+++ b/resource/secure/input/governances/PerftestGovernance_DiscoveryEncryptData.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+ *
+ FALSE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+ NONE
+
+
+ *
+ TRUE
+ TRUE
+ TRUE
+ NONE
+ ENCRYPT
+
+
+
+
+
diff --git a/resource/secure/input/governances/PerftestGovernance_DiscoveryEncryptSubmessage.xml b/resource/secure/input/governances/PerftestGovernance_DiscoveryEncryptSubmessage.xml
new file mode 100755
index 00000000..7cfae350
--- /dev/null
+++ b/resource/secure/input/governances/PerftestGovernance_DiscoveryEncryptSubmessage.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+ *
+ FALSE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+ NONE
+
+
+ *
+ TRUE
+ TRUE
+ TRUE
+ ENCRYPT
+ NONE
+
+
+
+
+
diff --git a/resource/secure/input/governances/PerftestGovernance_DiscoverySign.xml b/resource/secure/input/governances/PerftestGovernance_DiscoverySign.xml
new file mode 100755
index 00000000..14d28673
--- /dev/null
+++ b/resource/secure/input/governances/PerftestGovernance_DiscoverySign.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+ *
+ FALSE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+ SIGN
+
+
+ *
+ TRUE
+ TRUE
+ TRUE
+ NONE
+ NONE
+
+
+
+
+
diff --git a/resource/secure/input/governances/PerftestGovernance_DiscoverySignEncryptBoth.xml b/resource/secure/input/governances/PerftestGovernance_DiscoverySignEncryptBoth.xml
new file mode 100755
index 00000000..a827b36e
--- /dev/null
+++ b/resource/secure/input/governances/PerftestGovernance_DiscoverySignEncryptBoth.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+ *
+ FALSE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+ SIGN
+
+
+ *
+ TRUE
+ TRUE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+
+
+
+
+
diff --git a/resource/secure/input/governances/PerftestGovernance_DiscoverySignEncryptData.xml b/resource/secure/input/governances/PerftestGovernance_DiscoverySignEncryptData.xml
new file mode 100755
index 00000000..04fc3eca
--- /dev/null
+++ b/resource/secure/input/governances/PerftestGovernance_DiscoverySignEncryptData.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+ *
+ FALSE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+ SIGN
+
+
+ *
+ TRUE
+ TRUE
+ TRUE
+ NONE
+ ENCRYPT
+
+
+
+
+
diff --git a/resource/secure/input/governances/PerftestGovernance_DiscoverySignEncryptSubmessage.xml b/resource/secure/input/governances/PerftestGovernance_DiscoverySignEncryptSubmessage.xml
new file mode 100755
index 00000000..cf9d759a
--- /dev/null
+++ b/resource/secure/input/governances/PerftestGovernance_DiscoverySignEncryptSubmessage.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+ *
+ FALSE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+ SIGN
+
+
+ *
+ TRUE
+ TRUE
+ TRUE
+ ENCRYPT
+ NONE
+
+
+
+
+
diff --git a/resource/secure/input/governances/PerftestGovernance_EncryptBoth.xml b/resource/secure/input/governances/PerftestGovernance_EncryptBoth.xml
new file mode 100755
index 00000000..94133ea2
--- /dev/null
+++ b/resource/secure/input/governances/PerftestGovernance_EncryptBoth.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+ *
+ TRUE
+ FALSE
+ NONE
+ NONE
+ NONE
+
+
+ *
+ FALSE
+ FALSE
+ FALSE
+ ENCRYPT
+ ENCRYPT
+
+
+
+
+
diff --git a/resource/secure/input/governances/PerftestGovernance_EncryptData.xml b/resource/secure/input/governances/PerftestGovernance_EncryptData.xml
new file mode 100755
index 00000000..1a320ad7
--- /dev/null
+++ b/resource/secure/input/governances/PerftestGovernance_EncryptData.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+ *
+ TRUE
+ FALSE
+ NONE
+ NONE
+ NONE
+
+
+ *
+ FALSE
+ FALSE
+ FALSE
+ NONE
+ ENCRYPT
+
+
+
+
+
diff --git a/resource/secure/input/governances/PerftestGovernance_EncryptSubmessage.xml b/resource/secure/input/governances/PerftestGovernance_EncryptSubmessage.xml
new file mode 100755
index 00000000..fadc0af2
--- /dev/null
+++ b/resource/secure/input/governances/PerftestGovernance_EncryptSubmessage.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+ *
+ TRUE
+ FALSE
+ NONE
+ NONE
+ NONE
+
+
+ *
+ FALSE
+ FALSE
+ FALSE
+ ENCRYPT
+ NONE
+
+
+
+
+
diff --git a/resource/secure/input/governances/PerftestGovernance_Sign.xml b/resource/secure/input/governances/PerftestGovernance_Sign.xml
new file mode 100755
index 00000000..21c22ac8
--- /dev/null
+++ b/resource/secure/input/governances/PerftestGovernance_Sign.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+ *
+ TRUE
+ FALSE
+ NONE
+ NONE
+ SIGN
+
+
+ *
+ FALSE
+ FALSE
+ FALSE
+ NONE
+ NONE
+
+
+
+
+
diff --git a/resource/secure/input/governances/PerftestGovernance_SignEncryptBoth.xml b/resource/secure/input/governances/PerftestGovernance_SignEncryptBoth.xml
new file mode 100755
index 00000000..fd4f293e
--- /dev/null
+++ b/resource/secure/input/governances/PerftestGovernance_SignEncryptBoth.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+ *
+ TRUE
+ FALSE
+ NONE
+ NONE
+ SIGN
+
+
+ *
+ FALSE
+ FALSE
+ FALSE
+ ENCRYPT
+ ENCRYPT
+
+
+
+
+
diff --git a/resource/secure/input/governances/PerftestGovernance_SignEncryptData.xml b/resource/secure/input/governances/PerftestGovernance_SignEncryptData.xml
new file mode 100755
index 00000000..f2f3882a
--- /dev/null
+++ b/resource/secure/input/governances/PerftestGovernance_SignEncryptData.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+ *
+ TRUE
+ FALSE
+ NONE
+ NONE
+ SIGN
+
+
+ *
+ FALSE
+ FALSE
+ FALSE
+ NONE
+ ENCRYPT
+
+
+
+
+
diff --git a/resource/secure/input/governances/PerftestGovernance_SignEncryptSubmessage.xml b/resource/secure/input/governances/PerftestGovernance_SignEncryptSubmessage.xml
new file mode 100755
index 00000000..e861c8d6
--- /dev/null
+++ b/resource/secure/input/governances/PerftestGovernance_SignEncryptSubmessage.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+ *
+ TRUE
+ FALSE
+ NONE
+ NONE
+ SIGN
+
+
+ *
+ FALSE
+ FALSE
+ FALSE
+ ENCRYPT
+ NONE
+
+
+
+
+
diff --git a/resource/secure/input/openssl.cnf b/resource/secure/input/openssl.cnf
new file mode 100755
index 00000000..3fc959c4
--- /dev/null
+++ b/resource/secure/input/openssl.cnf
@@ -0,0 +1,106 @@
+#
+# OpenSSL example Certificate Authority configuration file.
+
+####################################################################
+[ ca ]
+default_ca = CA_default # The default ca section
+
+####################################################################
+[ CA_default ]
+
+dir = ./ # Where everything is kept
+certs = $dir/certs # Where the issued certs are kept
+crl_dir = $dir/crl # Where the issued crl are kept
+database = $dir/index.txt # database index file.
+#unique_subject = no # Set to 'no' to allow creation of
+ # several ctificates with same subject.
+new_certs_dir = $dir
+
+certificate = $dir/cacert.pem # The CA certificate
+serial = $dir/serial # The current serial number
+crlnumber = $dir/crlnumber # the current crl number
+ # must be commented out to leave a V1 CRL
+crl = $dir/crl.pem # The current CRL
+private_key = $dir/cakey.pem # The private key
+RANDFILE = $dir/.rand # private random number file
+
+#x509_extensions = usr_cert # The extensions to add to the cert
+
+# Comment out the following two lines for the "traditional"
+# (and highly broken) format.
+name_opt = ca_default # Subject Name options
+cert_opt = ca_default # Certificate field options
+
+# Extension copying option: use with caution.
+# copy_extensions = copy
+
+# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
+# so this is commented out by default to leave a V1 CRL.
+# crlnumber must also be commented out to leave a V1 CRL.
+# crl_extensions = crl_ext
+
+default_days = 365 # how long to certify for
+default_crl_days = 30 # how long before next CRL
+default_md = sha1 # which md to use.
+preserve = no # keep passed DN ordering
+
+# A few difference way of specifying how similar the request should look
+# For type CA, the listed attributes must be the same, and the optional
+# and supplied fields are just that :-)
+policy = policy_match
+
+# For the CA policy
+[ policy_match ]
+countryName = match
+stateOrProvinceName = match
+organizationName = match
+organizationalUnitName = optional
+commonName = supplied
+emailAddress = optional
+
+# For the 'anything' policy
+# At this point in time, you must list all acceptable 'object'
+# types.
+[ policy_anything ]
+countryName = optional
+stateOrProvinceName = optional
+localityName = optional
+organizationName = optional
+organizationalUnitName = optional
+commonName = supplied
+emailAddress = optional
+
+[ req ]
+prompt = no
+#default_bits = 1024
+#default_keyfile = privkey.pem
+distinguished_name = req_distinguished_name
+#attributes = req_attributes
+#x509_extensions = v3_ca # The extentions to add to the self signed cert
+
+[ req_distinguished_name ]
+#countryName = Country Name (2 letter code)
+#countryName_default = US
+countryName = US
+#countryName_min = 2
+#countryName_max = 2
+
+#stateOrProvinceName = State or Province Name (full name)
+#stateOrProvinceName_default = CA
+stateOrProvinceName = CA
+
+localityName = Sunnyvale
+
+#0.organizationName = Organization Name (eg, company)
+0.organizationName = Real Time Innovations
+
+#commonName = Common Name (eg, YOUR name)
+#commonName_max = 64
+commonName = RTI CA
+
+#emailAddress = Email Address
+#emailAddress_max = 64
+emailAddress = secure@rti.com
+
+
+
diff --git a/resource/secure/input/pub.cnf b/resource/secure/input/pub.cnf
new file mode 100644
index 00000000..ce0197b9
--- /dev/null
+++ b/resource/secure/input/pub.cnf
@@ -0,0 +1,11 @@
+prompt=no
+distinguished_name = req_distinguished_name
+
+[ req_distinguished_name ]
+countryName=US
+stateOrProvinceName=CA
+localityName=Sunnyvale
+organizationName=Real Time Innovations
+emailAddress=pub@rti.com
+commonName=perftest
+
diff --git a/resource/secure/input/sub.cnf b/resource/secure/input/sub.cnf
new file mode 100644
index 00000000..2b9fbade
--- /dev/null
+++ b/resource/secure/input/sub.cnf
@@ -0,0 +1,11 @@
+prompt=no
+distinguished_name = req_distinguished_name
+
+[ req_distinguished_name ]
+countryName=US
+stateOrProvinceName=CA
+localityName=Sunnyvale
+organizationName=Real Time Innovations
+emailAddress=sub@rti.com
+commonName=perftest
+
diff --git a/resource/secure/make.sh b/resource/secure/make.sh
new file mode 100755
index 00000000..e9b6acc9
--- /dev/null
+++ b/resource/secure/make.sh
@@ -0,0 +1,33 @@
+export OPENSSL_EXE=openssl
+
+rm *.xml *.csr *.pem demoCA/* demoCA/private/*
+
+mkdir output
+mkdir -p 'demoCA/private'
+
+echo ">> Generating cakey and cacert, input is input/openssl.cnf:"
+$OPENSSL_EXE genrsa -out demoCA/private/cakey.pem 2048
+$OPENSSL_EXE req -new -key demoCA/private/cakey.pem -out ca.csr -config input/openssl.cnf
+$OPENSSL_EXE x509 -req -days 3650 -in ca.csr -signkey demoCA/private/cakey.pem -out demoCA/cacert.pem
+mkdir -p 'demoCA/newcerts'
+touch demoCA/index.txt
+echo 01 > demoCA/serial
+
+echo ">> Generating pubkey and signing PerftestPermissionsPub:"
+$OPENSSL_EXE genrsa -out pubkey.pem 2048
+$OPENSSL_EXE req -config input/pub.cnf -new -key pubkey.pem -out temp.csr
+$OPENSSL_EXE ca -days 365 -in temp.csr -out pub.pem
+$OPENSSL_EXE smime -sign -in input/PerftestPermissionsPub.xml -text -out signed_PerftestPermissionsPub.xml -signer demoCA/cacert.pem -inkey demoCA/private/cakey.pem
+
+echo ">> Generating subkey and signing PerftestPermissionsSub:"
+$OPENSSL_EXE genrsa -out subkey.pem 2048
+$OPENSSL_EXE req -config input/sub.cnf -new -key subkey.pem -out temp.csr
+$OPENSSL_EXE ca -days 365 -in temp.csr -out sub.pem
+$OPENSSL_EXE smime -sign -in input/PerftestPermissionsSub.xml -text -out signed_PerftestPermissionsSub.xml -signer demoCA/cacert.pem -inkey demoCA/private/cakey.pem
+
+for i in $( ls input/governances ); do
+ echo Signing: $i
+ $OPENSSL_EXE smime -sign -in input/governances/$i -text -out signed_$i -signer demoCA/cacert.pem -inkey demoCA/private/cakey.pem
+done
+
+cp demoCA/cacert.pem cacert.pem
\ No newline at end of file
diff --git a/resource/secure/pub.pem b/resource/secure/pub.pem
new file mode 100644
index 00000000..5859c78d
--- /dev/null
+++ b/resource/secure/pub.pem
@@ -0,0 +1,86 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 1 (0x1)
+ Signature Algorithm: sha256WithRSAEncryption
+ Issuer: C=US, ST=CA, L=Sunnyvale, O=Real Time Innovations, CN=RTI CA/emailAddress=secure@rti.com
+ Validity
+ Not Before: Jul 17 14:30:42 2016 GMT
+ Not After : Jul 17 14:30:42 2017 GMT
+ Subject: C=US, ST=CA, O=Real Time Innovations, CN=perftest/emailAddress=pub@rti.com
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ Public-Key: (2048 bit)
+ Modulus:
+ 00:cb:45:20:90:78:12:76:80:76:d2:dd:e5:9b:c2:
+ ff:c7:87:d9:18:4b:c3:d4:1f:25:ea:c7:78:40:f0:
+ 00:f0:e4:1e:e4:c6:ac:a7:b9:7b:b4:66:ae:3f:d0:
+ 20:bb:b6:f7:d8:89:3d:d2:ca:a7:b4:eb:fa:00:0b:
+ ae:8d:21:7c:87:1b:22:5e:ce:42:88:ce:f4:ad:ef:
+ 3a:55:07:b5:c0:28:6c:37:c1:31:0f:78:63:1c:35:
+ 98:7e:24:45:8d:10:6f:08:fc:8c:58:05:9f:5f:e1:
+ 4e:c0:82:21:b4:12:38:b1:e2:88:80:7f:fb:6a:c1:
+ 25:27:7e:e4:2a:9d:5f:08:cd:0d:95:dc:45:7d:9c:
+ 2e:c4:33:31:28:45:14:e2:a1:5b:de:f2:e1:5b:82:
+ a4:ba:ef:2a:27:a8:a2:bd:ed:74:0b:62:8c:ca:10:
+ 83:e8:7b:bd:33:9e:b6:bc:dd:ce:e0:4f:d4:f1:db:
+ 6c:b4:ca:18:f0:24:76:80:e5:e4:3a:86:74:9b:d0:
+ 29:90:1e:ff:0a:c4:95:1a:19:a2:1a:af:1b:9c:ee:
+ 06:86:9c:d5:7d:30:99:56:b8:f4:f5:80:c4:43:16:
+ 74:f4:01:ac:b3:41:95:85:2f:e0:1d:1a:06:ae:3f:
+ e8:61:22:1d:08:e2:83:d1:40:09:93:56:3b:fb:4c:
+ 56:53
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints:
+ CA:FALSE
+ Netscape Comment:
+ OpenSSL Generated Certificate
+ X509v3 Subject Key Identifier:
+ 48:16:20:6E:78:16:06:CE:4B:1B:CC:EE:AC:6D:49:CC:A6:8B:80:9D
+ X509v3 Authority Key Identifier:
+ DirName:/C=US/ST=CA/L=Sunnyvale/O=Real Time Innovations/CN=RTI CA/emailAddress=secure@rti.com
+ serial:C3:27:AC:1E:16:83:B2:49
+
+ Signature Algorithm: sha256WithRSAEncryption
+ a7:93:b1:cf:f3:76:d9:15:d1:ff:d1:a3:09:e3:2e:2b:9e:24:
+ 88:7e:49:4b:ec:93:95:43:7e:47:b6:9e:f8:e0:d6:73:29:f1:
+ 86:e9:3e:13:dd:0b:02:d6:47:85:d0:f7:f7:88:14:88:9c:62:
+ 92:da:3f:83:3e:4e:f3:11:33:b6:c8:fe:d7:a3:e3:83:bc:dd:
+ b4:25:70:60:dd:fe:ec:79:9c:9e:47:9d:a6:ae:eb:c6:5c:bf:
+ 48:7a:83:14:a6:f0:46:0b:7d:98:94:31:80:4d:95:78:96:82:
+ 80:72:c7:b7:d0:88:4d:60:cc:8b:2e:dc:ea:44:36:5b:5a:1b:
+ 0e:53:26:39:c7:3b:13:47:16:d2:52:c6:db:37:77:d3:06:e8:
+ 03:07:c6:6c:b1:25:07:eb:2d:5d:34:50:6b:a0:76:a3:39:b8:
+ c3:b8:7d:55:95:6e:a6:14:13:38:94:63:1d:f8:7a:54:45:6b:
+ 7a:06:c0:38:66:de:a9:75:c3:86:36:b1:3b:e4:fb:66:ea:79:
+ c7:bc:e5:f3:c2:13:7e:ed:b2:40:74:18:d8:f7:b6:f5:94:4a:
+ 7f:89:de:96:c9:4e:20:8e:15:f9:e4:28:c5:d9:cf:f3:40:6f:
+ ca:4e:07:4d:19:57:84:78:82:a7:23:09:15:2c:bc:37:71:88:
+ d1:13:0e:24
+-----BEGIN CERTIFICATE-----
+MIIEXTCCA0WgAwIBAgIBATANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJVUzEL
+MAkGA1UECAwCQ0ExEjAQBgNVBAcMCVN1bm55dmFsZTEeMBwGA1UECgwVUmVhbCBU
+aW1lIElubm92YXRpb25zMQ8wDQYDVQQDDAZSVEkgQ0ExHTAbBgkqhkiG9w0BCQEW
+DnNlY3VyZUBydGkuY29tMB4XDTE2MDcxNzE0MzA0MloXDTE3MDcxNzE0MzA0Mlow
+aTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMR4wHAYDVQQKDBVSZWFsIFRpbWUg
+SW5ub3ZhdGlvbnMxETAPBgNVBAMMCHBlcmZ0ZXN0MRowGAYJKoZIhvcNAQkBFgtw
+dWJAcnRpLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMtFIJB4
+EnaAdtLd5ZvC/8eH2RhLw9QfJerHeEDwAPDkHuTGrKe5e7Rmrj/QILu299iJPdLK
+p7Tr+gALro0hfIcbIl7OQojO9K3vOlUHtcAobDfBMQ94Yxw1mH4kRY0Qbwj8jFgF
+n1/hTsCCIbQSOLHiiIB/+2rBJSd+5CqdXwjNDZXcRX2cLsQzMShFFOKhW97y4VuC
+pLrvKieoor3tdAtijMoQg+h7vTOetrzdzuBP1PHbbLTKGPAkdoDl5DqGdJvQKZAe
+/wrElRoZohqvG5zuBoac1X0wmVa49PWAxEMWdPQBrLNBlYUv4B0aBq4/6GEiHQji
+g9FACZNWO/tMVlMCAwEAAaOB+jCB9zAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQf
+Fh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUSBYgbngW
+Bs5LG8zurG1JzKaLgJ0wgZwGA1UdIwSBlDCBkaGBg6SBgDB+MQswCQYDVQQGEwJV
+UzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCVN1bm55dmFsZTEeMBwGA1UECgwVUmVh
+bCBUaW1lIElubm92YXRpb25zMQ8wDQYDVQQDDAZSVEkgQ0ExHTAbBgkqhkiG9w0B
+CQEWDnNlY3VyZUBydGkuY29tggkAwyesHhaDskkwDQYJKoZIhvcNAQELBQADggEB
+AKeTsc/zdtkV0f/RownjLiueJIh+SUvsk5VDfke2nvjg1nMp8YbpPhPdCwLWR4XQ
+9/eIFIicYpLaP4M+TvMRM7bI/tej44O83bQlcGDd/ux5nJ5Hnaau68Zcv0h6gxSm
+8EYLfZiUMYBNlXiWgoByx7fQiE1gzIsu3OpENltaGw5TJjnHOxNHFtJSxts3d9MG
+6AMHxmyxJQfrLV00UGugdqM5uMO4fVWVbqYUEziUYx34elRFa3oGwDhm3ql1w4Y2
+sTvk+2bqece85fPCE37tskB0GNj3tvWUSn+J3pbJTiCOFfnkKMXZz/NAb8pOB00Z
+V4R4gqcjCRUsvDdxiNETDiQ=
+-----END CERTIFICATE-----
diff --git a/resource/secure/pubkey.pem b/resource/secure/pubkey.pem
new file mode 100644
index 00000000..df741194
--- /dev/null
+++ b/resource/secure/pubkey.pem
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAy0UgkHgSdoB20t3lm8L/x4fZGEvD1B8l6sd4QPAA8OQe5Mas
+p7l7tGauP9Agu7b32Ik90sqntOv6AAuujSF8hxsiXs5CiM70re86VQe1wChsN8Ex
+D3hjHDWYfiRFjRBvCPyMWAWfX+FOwIIhtBI4seKIgH/7asElJ37kKp1fCM0NldxF
+fZwuxDMxKEUU4qFb3vLhW4Kkuu8qJ6iive10C2KMyhCD6Hu9M562vN3O4E/U8dts
+tMoY8CR2gOXkOoZ0m9ApkB7/CsSVGhmiGq8bnO4GhpzVfTCZVrj09YDEQxZ09AGs
+s0GVhS/gHRoGrj/oYSIdCOKD0UAJk1Y7+0xWUwIDAQABAoIBAGpyeOsu9fw4qgEj
+UuqO44OKEJY4lwSuixy3+LGI/fUogUUtBZ2P9Mg0PWwNghbLal9q/4Uzuz9zlCgR
+9gbSUnQuMYGUYiNivZ+Yd+Ovde57PLC16ws+8CgFqSXluMZ2pK8AEj7GMv/y7VrC
+ywORxz7gcrtYSkFNhDd6q+HlJ69jQ55ARrEcFhH8g/cK/0EHudorRbycVhxRbzbA
+f1hBwBxzna4iIGM+tcq2huJVZ2y64NHd2396dxTYrtTXFjl3PfzV0c451CMHCQ+l
+mewVC79jZiWJinuZHdmq3GZemyoiw6+SqkW4jqxgrou+TFETr8HiViF4zS4NwyIb
+xpsWWAECgYEA5GV3Pha2dCmOnmdLkQ4Z8mTUTGSanFAlD9VmzuE0V56aWaeB5c4S
+82Mzv3OEWZHWSFVpGHQ8Z6CyLNxHIk6wUzodci0barJ6knGlVywAn0y+t6Spqgv4
+JVuN8Vu45k0ni3zl2QegXgc67tl07R2ECSPAoWycfy/aNokwn4F7zMECgYEA49ZC
+JIMpdvLSPSe9jj439wJBq7N1rYd+8oSBJ9FB8KNLw6bLnXdjOx+xIVmbvhetXUEn
+4EQ1ci5FBxDS8vgHXYCUpqXhjECxwJvuyoCIHeBc24bFVxXGDD9epW0unRcCBhdY
+QzKXKKf4zKa6C3yu+e6Yj8BxlwS7gcPcBz2RJBMCgYEAl4x0KPCtNDr29UiZLbDr
+qpkY/W+r35iWXwE87H0mXBVTWbX6TWAF1xW2Go0t/rj0NJ7n02AdTK2mTHoFgVAx
+U6g2LbKchJnVFyLtkQATkaA81GIgakLy7ubnMoWoFLiRSs8fPHkBAiNOCXqlSUjS
+ebYNdY858HLyGknBx7UFToECgYBBrWXruJOfYmgQkQAnnO/tGI1tvZHSsBh8OI4y
+uDPV9nzErbRMdDn6tSwOfRJUPecP1tRz5bWycHwdiVAGElGtNn+jenYGRC/5Yfn4
+Dg0u75pU/gitDe3FYg8aiNrDFfrTXq9mz5KbebBS7kz7OroF+i2oYsVbz1VuFtO6
+kpjgWQKBgCdTB6Z76KXOENBq5/M7aq8E73hLWohJ3lwMWZ06ol0TyI8NGuN8uP/f
+WfJN1c/tK/6Rx9qGpH5xM+n1lYMhnpiLEjfBQmCEn27MvWZfnQIETLdhPP0TaugC
+GXygG0x66yMyz67ZNg/H31w6UPsxL7JjT1JkFnqn7G9DK2J5GkIs
+-----END RSA PRIVATE KEY-----
diff --git a/resource/secure/signed_PerftestGovernance_.xml b/resource/secure/signed_PerftestGovernance_.xml
new file mode 100644
index 00000000..b5b88a5e
--- /dev/null
+++ b/resource/secure/signed_PerftestGovernance_.xml
@@ -0,0 +1,95 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----6058CE3386C1676217923FB3DF3F2505"
+
+This is an S/MIME signed message
+
+------6058CE3386C1676217923FB3DF3F2505
+Content-Type: text/plain
+
+
+
+
+
+
+
+
+
+
+ *
+ TRUE
+ FALSE
+ NONE
+ NONE
+ NONE
+
+
+ *
+ FALSE
+ FALSE
+ FALSE
+ NONE
+ NONE
+
+
+
+
+
+
+------6058CE3386C1676217923FB3DF3F2505
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+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
+
+------6058CE3386C1676217923FB3DF3F2505--
+
diff --git a/resource/secure/signed_PerftestGovernance_Discovery.xml b/resource/secure/signed_PerftestGovernance_Discovery.xml
new file mode 100644
index 00000000..504c6f46
--- /dev/null
+++ b/resource/secure/signed_PerftestGovernance_Discovery.xml
@@ -0,0 +1,96 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----FF2C9137F29B141263E9FEC36BE39058"
+
+This is an S/MIME signed message
+
+------FF2C9137F29B141263E9FEC36BE39058
+Content-Type: text/plain
+
+
+
+
+
+
+
+
+
+
+
+ *
+ FALSE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+ NONE
+
+
+ *
+ TRUE
+ TRUE
+ TRUE
+ NONE
+ NONE
+
+
+
+
+
+
+------FF2C9137F29B141263E9FEC36BE39058
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+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
+
+------FF2C9137F29B141263E9FEC36BE39058--
+
diff --git a/resource/secure/signed_PerftestGovernance_DiscoveryEncryptBoth.xml b/resource/secure/signed_PerftestGovernance_DiscoveryEncryptBoth.xml
new file mode 100644
index 00000000..c0162fdf
--- /dev/null
+++ b/resource/secure/signed_PerftestGovernance_DiscoveryEncryptBoth.xml
@@ -0,0 +1,95 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----C7A3642163F6A6B6912D5D390F88D025"
+
+This is an S/MIME signed message
+
+------C7A3642163F6A6B6912D5D390F88D025
+Content-Type: text/plain
+
+
+
+
+
+
+
+
+
+
+ *
+ FALSE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+ NONE
+
+
+ *
+ TRUE
+ TRUE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+
+
+
+
+
+
+------C7A3642163F6A6B6912D5D390F88D025
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+MIIGVgYJKoZIhvcNAQcCoIIGRzCCBkMCAQExDzANBglghkgBZQMEAgEFADALBgkq
+hkiG9w0BBwGgggN8MIIDeDCCAmACCQDDJ6weFoOySTANBgkqhkiG9w0BAQsFADB+
+MQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCVN1bm55dmFsZTEe
+MBwGA1UECgwVUmVhbCBUaW1lIElubm92YXRpb25zMQ8wDQYDVQQDDAZSVEkgQ0Ex
+HTAbBgkqhkiG9w0BCQEWDnNlY3VyZUBydGkuY29tMB4XDTE2MDcxNzE0MzA0MVoX
+DTI2MDcxNTE0MzA0MVowfjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYD
+VQQHDAlTdW5ueXZhbGUxHjAcBgNVBAoMFVJlYWwgVGltZSBJbm5vdmF0aW9uczEP
+MA0GA1UEAwwGUlRJIENBMR0wGwYJKoZIhvcNAQkBFg5zZWN1cmVAcnRpLmNvbTCC
+ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN1Z1CYXRWmx4EywOk20l228
+jmPzQD8DfbINZP4xlh/pGmzGtuuvkwkqQMSC+yBNp9rKHVRO2FqiDfPp7dnOsPEt
+AxwaVYyhZW1z+5QwgsVa7Y6yPXENGijUsR+MjiF5rNJSTh0zRu4Mc7VOYNE3Yq6f
+TCeC3M9GUzxuN6vVcz/RJE0RNXuun2PGrB/M0ke1tiO+gzAX5WTlRGq0Meam3cTP
+osFZmYG0NPr39OUuG7aEYm/+aSce/MN44cokVCo+JU2mw6lFljYnXROQYUX1MRSQ
+mui2JerRKxhpPqBXvwC53ci17p2mKaTWQNPwOUuDtvePbFdmj1xUKO2lbje8M28C
+AwEAATANBgkqhkiG9w0BAQsFAAOCAQEACVXHxpRwBwIwyltfZ+7fD5Adjh0mU2Dv
+Cyh9gSnCJy0C1+hW+8+bccXp/kImlFobLZCwCa24W1arJKlU3yjBi61kmv1LiVNv
+gQtL65lDdtoaiJAkHvCXlytu6XrKhhC8+siJFbr7Xig2N3t6JGxacwwl/QJFQnBT
+6xNn62bcn8IM/M4IZZsPSx7ZJX0wlqq5oJSPCZf47GV2wwgjDBkZR1tpMI79NHJD
+OIzb+8a+OWpRIR2ajOJ8ZDwKap2eRFMmzAbRqt5NtQurvBlvdt+ayrog0KahnaGp
+TA9wfOBMkRFVrP7Lxnq1+WO65ozXx8cnAt2u+Jy1OLF4GlvSIYyD3TGCAp4wggKa
+AgEBMIGLMH4xCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTESMBAGA1UEBwwJU3Vu
+bnl2YWxlMR4wHAYDVQQKDBVSZWFsIFRpbWUgSW5ub3ZhdGlvbnMxDzANBgNVBAMM
+BlJUSSBDQTEdMBsGCSqGSIb3DQEJARYOc2VjdXJlQHJ0aS5jb20CCQDDJ6weFoOy
+STANBglghkgBZQMEAgEFAKCB5DAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwG
+CSqGSIb3DQEJBTEPFw0xNjA3MTcxNDMwNDZaMC8GCSqGSIb3DQEJBDEiBCDy1iG/
+75KIqa2kmeDgJ9VoMrZnydaxzdQVK/qaXdCxiDB5BgkqhkiG9w0BCQ8xbDBqMAsG
+CWCGSAFlAwQBKjALBglghkgBZQMEARYwCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMH
+MA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG
+9w0DAgIBKDANBgkqhkiG9w0BAQEFAASCAQBDegLjMi7nzoSZr4usJU+kZnFamG19
+D8X0NMMr5eCO8nnvrX+y74p8NG2GXomfVbDF8KfWezTj9zJQPrPGcIvhMeIm7WXx
++kx0GnkIVj95SZsud+T0JLLkM9k252tc6C0TExJYc49nM++cPaXOWr6nI1pOU47p
+es+wDor3va6mmYL0l6qYM4lHcwK9/b5nKpMmgOVhTiIXEnRdPPZqrufhlU7az3C9
+oj7qa5Zbg4iTZxgdxPgbtUUOeCj6LXZpxtrLHpLDltqxrRoXmHpXDl8SoqBlM4za
+zTDcv5sS0UNtVz82PgRsRPMQc+vOXEQVEGLOZLttusuHA8cf+S5JWcYn
+
+------C7A3642163F6A6B6912D5D390F88D025--
+
diff --git a/resource/secure/signed_PerftestGovernance_DiscoveryEncryptData.xml b/resource/secure/signed_PerftestGovernance_DiscoveryEncryptData.xml
new file mode 100644
index 00000000..9e961396
--- /dev/null
+++ b/resource/secure/signed_PerftestGovernance_DiscoveryEncryptData.xml
@@ -0,0 +1,95 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----B782E7BFE506DF0A48BE6AE99D21420E"
+
+This is an S/MIME signed message
+
+------B782E7BFE506DF0A48BE6AE99D21420E
+Content-Type: text/plain
+
+
+
+
+
+
+
+
+
+
+ *
+ FALSE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+ NONE
+
+
+ *
+ TRUE
+ TRUE
+ TRUE
+ NONE
+ ENCRYPT
+
+
+
+
+
+
+------B782E7BFE506DF0A48BE6AE99D21420E
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+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
+
+------B782E7BFE506DF0A48BE6AE99D21420E--
+
diff --git a/resource/secure/signed_PerftestGovernance_DiscoveryEncryptSubmessage.xml b/resource/secure/signed_PerftestGovernance_DiscoveryEncryptSubmessage.xml
new file mode 100644
index 00000000..d79a2881
--- /dev/null
+++ b/resource/secure/signed_PerftestGovernance_DiscoveryEncryptSubmessage.xml
@@ -0,0 +1,95 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----941C36616C3D9B12BBE0B3BA94907CB4"
+
+This is an S/MIME signed message
+
+------941C36616C3D9B12BBE0B3BA94907CB4
+Content-Type: text/plain
+
+
+
+
+
+
+
+
+
+
+ *
+ FALSE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+ NONE
+
+
+ *
+ TRUE
+ TRUE
+ TRUE
+ ENCRYPT
+ NONE
+
+
+
+
+
+
+------941C36616C3D9B12BBE0B3BA94907CB4
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+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
+
+------941C36616C3D9B12BBE0B3BA94907CB4--
+
diff --git a/resource/secure/signed_PerftestGovernance_DiscoverySign.xml b/resource/secure/signed_PerftestGovernance_DiscoverySign.xml
new file mode 100644
index 00000000..df8b6812
--- /dev/null
+++ b/resource/secure/signed_PerftestGovernance_DiscoverySign.xml
@@ -0,0 +1,96 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----9BBAC0D394C159C73155C4BE3649C580"
+
+This is an S/MIME signed message
+
+------9BBAC0D394C159C73155C4BE3649C580
+Content-Type: text/plain
+
+
+
+
+
+
+
+
+
+
+
+ *
+ FALSE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+ SIGN
+
+
+ *
+ TRUE
+ TRUE
+ TRUE
+ NONE
+ NONE
+
+
+
+
+
+
+------9BBAC0D394C159C73155C4BE3649C580
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+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
+
+------9BBAC0D394C159C73155C4BE3649C580--
+
diff --git a/resource/secure/signed_PerftestGovernance_DiscoverySignEncryptBoth.xml b/resource/secure/signed_PerftestGovernance_DiscoverySignEncryptBoth.xml
new file mode 100644
index 00000000..37fa3d29
--- /dev/null
+++ b/resource/secure/signed_PerftestGovernance_DiscoverySignEncryptBoth.xml
@@ -0,0 +1,95 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----589E0CD5EFC86F0AE2EE8817BC68B170"
+
+This is an S/MIME signed message
+
+------589E0CD5EFC86F0AE2EE8817BC68B170
+Content-Type: text/plain
+
+
+
+
+
+
+
+
+
+
+ *
+ FALSE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+ SIGN
+
+
+ *
+ TRUE
+ TRUE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+
+
+
+
+
+
+------589E0CD5EFC86F0AE2EE8817BC68B170
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+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
+
+------589E0CD5EFC86F0AE2EE8817BC68B170--
+
diff --git a/resource/secure/signed_PerftestGovernance_DiscoverySignEncryptData.xml b/resource/secure/signed_PerftestGovernance_DiscoverySignEncryptData.xml
new file mode 100644
index 00000000..8ca601d7
--- /dev/null
+++ b/resource/secure/signed_PerftestGovernance_DiscoverySignEncryptData.xml
@@ -0,0 +1,95 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----4FBF760DA00D7421E14295E121A4BEEA"
+
+This is an S/MIME signed message
+
+------4FBF760DA00D7421E14295E121A4BEEA
+Content-Type: text/plain
+
+
+
+
+
+
+
+
+
+
+ *
+ FALSE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+ SIGN
+
+
+ *
+ TRUE
+ TRUE
+ TRUE
+ NONE
+ ENCRYPT
+
+
+
+
+
+
+------4FBF760DA00D7421E14295E121A4BEEA
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+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
+
+------4FBF760DA00D7421E14295E121A4BEEA--
+
diff --git a/resource/secure/signed_PerftestGovernance_DiscoverySignEncryptSubmessage.xml b/resource/secure/signed_PerftestGovernance_DiscoverySignEncryptSubmessage.xml
new file mode 100644
index 00000000..da8bf422
--- /dev/null
+++ b/resource/secure/signed_PerftestGovernance_DiscoverySignEncryptSubmessage.xml
@@ -0,0 +1,95 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----5DB88D8D27B2DFEDDA59C36FC0F8DF7A"
+
+This is an S/MIME signed message
+
+------5DB88D8D27B2DFEDDA59C36FC0F8DF7A
+Content-Type: text/plain
+
+
+
+
+
+
+
+
+
+
+ *
+ FALSE
+ TRUE
+ ENCRYPT
+ ENCRYPT
+ SIGN
+
+
+ *
+ TRUE
+ TRUE
+ TRUE
+ ENCRYPT
+ NONE
+
+
+
+
+
+
+------5DB88D8D27B2DFEDDA59C36FC0F8DF7A
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+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
+
+------5DB88D8D27B2DFEDDA59C36FC0F8DF7A--
+
diff --git a/resource/secure/signed_PerftestGovernance_EncryptBoth.xml b/resource/secure/signed_PerftestGovernance_EncryptBoth.xml
new file mode 100644
index 00000000..37233014
--- /dev/null
+++ b/resource/secure/signed_PerftestGovernance_EncryptBoth.xml
@@ -0,0 +1,96 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----941A26965A0574CB1F38AE7E676B3827"
+
+This is an S/MIME signed message
+
+------941A26965A0574CB1F38AE7E676B3827
+Content-Type: text/plain
+
+
+
+
+
+
+
+
+
+
+
+ *
+ TRUE
+ FALSE
+ NONE
+ NONE
+ NONE
+
+
+ *
+ FALSE
+ FALSE
+ FALSE
+ ENCRYPT
+ ENCRYPT
+
+
+
+
+
+
+------941A26965A0574CB1F38AE7E676B3827
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+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
+
+------941A26965A0574CB1F38AE7E676B3827--
+
diff --git a/resource/secure/signed_PerftestGovernance_EncryptData.xml b/resource/secure/signed_PerftestGovernance_EncryptData.xml
new file mode 100644
index 00000000..f9292581
--- /dev/null
+++ b/resource/secure/signed_PerftestGovernance_EncryptData.xml
@@ -0,0 +1,96 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----BAE5C47D20CC66365E7853328891CF6F"
+
+This is an S/MIME signed message
+
+------BAE5C47D20CC66365E7853328891CF6F
+Content-Type: text/plain
+
+
+
+
+
+
+
+
+
+
+
+ *
+ TRUE
+ FALSE
+ NONE
+ NONE
+ NONE
+
+
+ *
+ FALSE
+ FALSE
+ FALSE
+ NONE
+ ENCRYPT
+
+
+
+
+
+
+------BAE5C47D20CC66365E7853328891CF6F
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+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
+
+------BAE5C47D20CC66365E7853328891CF6F--
+
diff --git a/resource/secure/signed_PerftestGovernance_EncryptSubmessage.xml b/resource/secure/signed_PerftestGovernance_EncryptSubmessage.xml
new file mode 100644
index 00000000..b0ede0c6
--- /dev/null
+++ b/resource/secure/signed_PerftestGovernance_EncryptSubmessage.xml
@@ -0,0 +1,96 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----971FCF69203E9D12796E96E71491FFFC"
+
+This is an S/MIME signed message
+
+------971FCF69203E9D12796E96E71491FFFC
+Content-Type: text/plain
+
+
+
+
+
+
+
+
+
+
+
+ *
+ TRUE
+ FALSE
+ NONE
+ NONE
+ NONE
+
+
+ *
+ FALSE
+ FALSE
+ FALSE
+ ENCRYPT
+ NONE
+
+
+
+
+
+
+------971FCF69203E9D12796E96E71491FFFC
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+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
+
+------971FCF69203E9D12796E96E71491FFFC--
+
diff --git a/resource/secure/signed_PerftestGovernance_Sign.xml b/resource/secure/signed_PerftestGovernance_Sign.xml
new file mode 100644
index 00000000..0b28a621
--- /dev/null
+++ b/resource/secure/signed_PerftestGovernance_Sign.xml
@@ -0,0 +1,95 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----30DF43B3376AF3C3A2DE9AF2444EF9C2"
+
+This is an S/MIME signed message
+
+------30DF43B3376AF3C3A2DE9AF2444EF9C2
+Content-Type: text/plain
+
+
+
+
+
+
+
+
+
+
+ *
+ TRUE
+ FALSE
+ NONE
+ NONE
+ SIGN
+
+
+ *
+ FALSE
+ FALSE
+ FALSE
+ NONE
+ NONE
+
+
+
+
+
+
+------30DF43B3376AF3C3A2DE9AF2444EF9C2
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+MIIGVgYJKoZIhvcNAQcCoIIGRzCCBkMCAQExDzANBglghkgBZQMEAgEFADALBgkq
+hkiG9w0BBwGgggN8MIIDeDCCAmACCQDDJ6weFoOySTANBgkqhkiG9w0BAQsFADB+
+MQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCVN1bm55dmFsZTEe
+MBwGA1UECgwVUmVhbCBUaW1lIElubm92YXRpb25zMQ8wDQYDVQQDDAZSVEkgQ0Ex
+HTAbBgkqhkiG9w0BCQEWDnNlY3VyZUBydGkuY29tMB4XDTE2MDcxNzE0MzA0MVoX
+DTI2MDcxNTE0MzA0MVowfjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYD
+VQQHDAlTdW5ueXZhbGUxHjAcBgNVBAoMFVJlYWwgVGltZSBJbm5vdmF0aW9uczEP
+MA0GA1UEAwwGUlRJIENBMR0wGwYJKoZIhvcNAQkBFg5zZWN1cmVAcnRpLmNvbTCC
+ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN1Z1CYXRWmx4EywOk20l228
+jmPzQD8DfbINZP4xlh/pGmzGtuuvkwkqQMSC+yBNp9rKHVRO2FqiDfPp7dnOsPEt
+AxwaVYyhZW1z+5QwgsVa7Y6yPXENGijUsR+MjiF5rNJSTh0zRu4Mc7VOYNE3Yq6f
+TCeC3M9GUzxuN6vVcz/RJE0RNXuun2PGrB/M0ke1tiO+gzAX5WTlRGq0Meam3cTP
+osFZmYG0NPr39OUuG7aEYm/+aSce/MN44cokVCo+JU2mw6lFljYnXROQYUX1MRSQ
+mui2JerRKxhpPqBXvwC53ci17p2mKaTWQNPwOUuDtvePbFdmj1xUKO2lbje8M28C
+AwEAATANBgkqhkiG9w0BAQsFAAOCAQEACVXHxpRwBwIwyltfZ+7fD5Adjh0mU2Dv
+Cyh9gSnCJy0C1+hW+8+bccXp/kImlFobLZCwCa24W1arJKlU3yjBi61kmv1LiVNv
+gQtL65lDdtoaiJAkHvCXlytu6XrKhhC8+siJFbr7Xig2N3t6JGxacwwl/QJFQnBT
+6xNn62bcn8IM/M4IZZsPSx7ZJX0wlqq5oJSPCZf47GV2wwgjDBkZR1tpMI79NHJD
+OIzb+8a+OWpRIR2ajOJ8ZDwKap2eRFMmzAbRqt5NtQurvBlvdt+ayrog0KahnaGp
+TA9wfOBMkRFVrP7Lxnq1+WO65ozXx8cnAt2u+Jy1OLF4GlvSIYyD3TGCAp4wggKa
+AgEBMIGLMH4xCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTESMBAGA1UEBwwJU3Vu
+bnl2YWxlMR4wHAYDVQQKDBVSZWFsIFRpbWUgSW5ub3ZhdGlvbnMxDzANBgNVBAMM
+BlJUSSBDQTEdMBsGCSqGSIb3DQEJARYOc2VjdXJlQHJ0aS5jb20CCQDDJ6weFoOy
+STANBglghkgBZQMEAgEFAKCB5DAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwG
+CSqGSIb3DQEJBTEPFw0xNjA3MTcxNDMwNDZaMC8GCSqGSIb3DQEJBDEiBCBH66qc
+h85P0rdlZbYVaZEh3VfVCuJAsNEUuCtUQXY9ajB5BgkqhkiG9w0BCQ8xbDBqMAsG
+CWCGSAFlAwQBKjALBglghkgBZQMEARYwCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMH
+MA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG
+9w0DAgIBKDANBgkqhkiG9w0BAQEFAASCAQBV8kdLxGMDOrSGJId8glIhhYMZkne9
+35BSh0QhL+wQ0DGsALKcxZFjMSm1ASnSkQcOurvwkbFFuzHQhdtwfeYfYy1ub+mO
+A+Y8al5g48mElPpjJpmhmGfVXtZuLwWU5nj+HVhKc6ptwLinTJg7AaOS47jiWX4h
+8Em3pWttQMZkh96g23RleGFLsbC4Td2oDffUnpRIvG6kOo9ih+wqrYVDxoEht8q1
+IPfRm3CVoUdRAAs49d0y+YaW3b2sf9JOTja6h9v4OEmyr+uB2DEafGxcoL1v4c9C
+WKKCLdo0sCoeZFLZP99NXqhiFYcfxq5sOAURfqQlVbBB5dX4wLUoEzgt
+
+------30DF43B3376AF3C3A2DE9AF2444EF9C2--
+
diff --git a/resource/secure/signed_PerftestGovernance_SignEncryptBoth.xml b/resource/secure/signed_PerftestGovernance_SignEncryptBoth.xml
new file mode 100644
index 00000000..66e24c8a
--- /dev/null
+++ b/resource/secure/signed_PerftestGovernance_SignEncryptBoth.xml
@@ -0,0 +1,96 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----7B017833DF1713A6AB8FEC503F6A68AD"
+
+This is an S/MIME signed message
+
+------7B017833DF1713A6AB8FEC503F6A68AD
+Content-Type: text/plain
+
+
+
+
+
+
+
+
+
+
+
+ *
+ TRUE
+ FALSE
+ NONE
+ NONE
+ SIGN
+
+
+ *
+ FALSE
+ FALSE
+ FALSE
+ ENCRYPT
+ ENCRYPT
+
+
+
+
+
+
+------7B017833DF1713A6AB8FEC503F6A68AD
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+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
+
+------7B017833DF1713A6AB8FEC503F6A68AD--
+
diff --git a/resource/secure/signed_PerftestGovernance_SignEncryptData.xml b/resource/secure/signed_PerftestGovernance_SignEncryptData.xml
new file mode 100644
index 00000000..bf564ef3
--- /dev/null
+++ b/resource/secure/signed_PerftestGovernance_SignEncryptData.xml
@@ -0,0 +1,96 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----5D8481501FC7750F4794466B3EF6325E"
+
+This is an S/MIME signed message
+
+------5D8481501FC7750F4794466B3EF6325E
+Content-Type: text/plain
+
+
+
+
+
+
+
+
+
+
+
+ *
+ TRUE
+ FALSE
+ NONE
+ NONE
+ SIGN
+
+
+ *
+ FALSE
+ FALSE
+ FALSE
+ NONE
+ ENCRYPT
+
+
+
+
+
+
+------5D8481501FC7750F4794466B3EF6325E
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+MIIGVgYJKoZIhvcNAQcCoIIGRzCCBkMCAQExDzANBglghkgBZQMEAgEFADALBgkq
+hkiG9w0BBwGgggN8MIIDeDCCAmACCQDDJ6weFoOySTANBgkqhkiG9w0BAQsFADB+
+MQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCVN1bm55dmFsZTEe
+MBwGA1UECgwVUmVhbCBUaW1lIElubm92YXRpb25zMQ8wDQYDVQQDDAZSVEkgQ0Ex
+HTAbBgkqhkiG9w0BCQEWDnNlY3VyZUBydGkuY29tMB4XDTE2MDcxNzE0MzA0MVoX
+DTI2MDcxNTE0MzA0MVowfjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYD
+VQQHDAlTdW5ueXZhbGUxHjAcBgNVBAoMFVJlYWwgVGltZSBJbm5vdmF0aW9uczEP
+MA0GA1UEAwwGUlRJIENBMR0wGwYJKoZIhvcNAQkBFg5zZWN1cmVAcnRpLmNvbTCC
+ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN1Z1CYXRWmx4EywOk20l228
+jmPzQD8DfbINZP4xlh/pGmzGtuuvkwkqQMSC+yBNp9rKHVRO2FqiDfPp7dnOsPEt
+AxwaVYyhZW1z+5QwgsVa7Y6yPXENGijUsR+MjiF5rNJSTh0zRu4Mc7VOYNE3Yq6f
+TCeC3M9GUzxuN6vVcz/RJE0RNXuun2PGrB/M0ke1tiO+gzAX5WTlRGq0Meam3cTP
+osFZmYG0NPr39OUuG7aEYm/+aSce/MN44cokVCo+JU2mw6lFljYnXROQYUX1MRSQ
+mui2JerRKxhpPqBXvwC53ci17p2mKaTWQNPwOUuDtvePbFdmj1xUKO2lbje8M28C
+AwEAATANBgkqhkiG9w0BAQsFAAOCAQEACVXHxpRwBwIwyltfZ+7fD5Adjh0mU2Dv
+Cyh9gSnCJy0C1+hW+8+bccXp/kImlFobLZCwCa24W1arJKlU3yjBi61kmv1LiVNv
+gQtL65lDdtoaiJAkHvCXlytu6XrKhhC8+siJFbr7Xig2N3t6JGxacwwl/QJFQnBT
+6xNn62bcn8IM/M4IZZsPSx7ZJX0wlqq5oJSPCZf47GV2wwgjDBkZR1tpMI79NHJD
+OIzb+8a+OWpRIR2ajOJ8ZDwKap2eRFMmzAbRqt5NtQurvBlvdt+ayrog0KahnaGp
+TA9wfOBMkRFVrP7Lxnq1+WO65ozXx8cnAt2u+Jy1OLF4GlvSIYyD3TGCAp4wggKa
+AgEBMIGLMH4xCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTESMBAGA1UEBwwJU3Vu
+bnl2YWxlMR4wHAYDVQQKDBVSZWFsIFRpbWUgSW5ub3ZhdGlvbnMxDzANBgNVBAMM
+BlJUSSBDQTEdMBsGCSqGSIb3DQEJARYOc2VjdXJlQHJ0aS5jb20CCQDDJ6weFoOy
+STANBglghkgBZQMEAgEFAKCB5DAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwG
+CSqGSIb3DQEJBTEPFw0xNjA3MTcxNDMwNDZaMC8GCSqGSIb3DQEJBDEiBCCiboNH
+APv1RJrkcr2QfA9AUQ2pX+KkdB3BkjUD3t8jWjB5BgkqhkiG9w0BCQ8xbDBqMAsG
+CWCGSAFlAwQBKjALBglghkgBZQMEARYwCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMH
+MA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG
+9w0DAgIBKDANBgkqhkiG9w0BAQEFAASCAQCqybyWikCtA/8PIIOnHm6np+t1L7CK
+z8hhcjIs0ehcHVhncXbmO8SQdEiUgPqgnJD0mR7Sx/DESDxRZpda/18IAqJZ2rY/
+Q4bkTV31P9zAaSqQCNYZhfzZjYacRocTneVI8NfVlLfYZGoexi1lf3qT+tnWihpv
+cX7q5h9zlQy1qx089q5Q9/ZoYtacWxk9uVUNpbY3azViNrC/czBoLNlRblYIvtJj
+1Hze4IQbEOAAvtSEHLgoaD5tgabAgwYxzD0pksoV1Y4JjjqH25/uCYXdqsm0SiF9
+wY10kDthXqlGQ3s7nKNJxl3xTuF4eJUSTSaBzTRltKehetHcW/5mTQXs
+
+------5D8481501FC7750F4794466B3EF6325E--
+
diff --git a/resource/secure/signed_PerftestGovernance_SignEncryptSubmessage.xml b/resource/secure/signed_PerftestGovernance_SignEncryptSubmessage.xml
new file mode 100644
index 00000000..11328188
--- /dev/null
+++ b/resource/secure/signed_PerftestGovernance_SignEncryptSubmessage.xml
@@ -0,0 +1,96 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----B825DD1B4B49285A62576B902478B932"
+
+This is an S/MIME signed message
+
+------B825DD1B4B49285A62576B902478B932
+Content-Type: text/plain
+
+
+
+
+
+
+
+
+
+
+
+ *
+ TRUE
+ FALSE
+ NONE
+ NONE
+ SIGN
+
+
+ *
+ FALSE
+ FALSE
+ FALSE
+ ENCRYPT
+ NONE
+
+
+
+
+
+
+------B825DD1B4B49285A62576B902478B932
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+MIIGVgYJKoZIhvcNAQcCoIIGRzCCBkMCAQExDzANBglghkgBZQMEAgEFADALBgkq
+hkiG9w0BBwGgggN8MIIDeDCCAmACCQDDJ6weFoOySTANBgkqhkiG9w0BAQsFADB+
+MQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCVN1bm55dmFsZTEe
+MBwGA1UECgwVUmVhbCBUaW1lIElubm92YXRpb25zMQ8wDQYDVQQDDAZSVEkgQ0Ex
+HTAbBgkqhkiG9w0BCQEWDnNlY3VyZUBydGkuY29tMB4XDTE2MDcxNzE0MzA0MVoX
+DTI2MDcxNTE0MzA0MVowfjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYD
+VQQHDAlTdW5ueXZhbGUxHjAcBgNVBAoMFVJlYWwgVGltZSBJbm5vdmF0aW9uczEP
+MA0GA1UEAwwGUlRJIENBMR0wGwYJKoZIhvcNAQkBFg5zZWN1cmVAcnRpLmNvbTCC
+ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN1Z1CYXRWmx4EywOk20l228
+jmPzQD8DfbINZP4xlh/pGmzGtuuvkwkqQMSC+yBNp9rKHVRO2FqiDfPp7dnOsPEt
+AxwaVYyhZW1z+5QwgsVa7Y6yPXENGijUsR+MjiF5rNJSTh0zRu4Mc7VOYNE3Yq6f
+TCeC3M9GUzxuN6vVcz/RJE0RNXuun2PGrB/M0ke1tiO+gzAX5WTlRGq0Meam3cTP
+osFZmYG0NPr39OUuG7aEYm/+aSce/MN44cokVCo+JU2mw6lFljYnXROQYUX1MRSQ
+mui2JerRKxhpPqBXvwC53ci17p2mKaTWQNPwOUuDtvePbFdmj1xUKO2lbje8M28C
+AwEAATANBgkqhkiG9w0BAQsFAAOCAQEACVXHxpRwBwIwyltfZ+7fD5Adjh0mU2Dv
+Cyh9gSnCJy0C1+hW+8+bccXp/kImlFobLZCwCa24W1arJKlU3yjBi61kmv1LiVNv
+gQtL65lDdtoaiJAkHvCXlytu6XrKhhC8+siJFbr7Xig2N3t6JGxacwwl/QJFQnBT
+6xNn62bcn8IM/M4IZZsPSx7ZJX0wlqq5oJSPCZf47GV2wwgjDBkZR1tpMI79NHJD
+OIzb+8a+OWpRIR2ajOJ8ZDwKap2eRFMmzAbRqt5NtQurvBlvdt+ayrog0KahnaGp
+TA9wfOBMkRFVrP7Lxnq1+WO65ozXx8cnAt2u+Jy1OLF4GlvSIYyD3TGCAp4wggKa
+AgEBMIGLMH4xCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTESMBAGA1UEBwwJU3Vu
+bnl2YWxlMR4wHAYDVQQKDBVSZWFsIFRpbWUgSW5ub3ZhdGlvbnMxDzANBgNVBAMM
+BlJUSSBDQTEdMBsGCSqGSIb3DQEJARYOc2VjdXJlQHJ0aS5jb20CCQDDJ6weFoOy
+STANBglghkgBZQMEAgEFAKCB5DAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwG
+CSqGSIb3DQEJBTEPFw0xNjA3MTcxNDMwNDZaMC8GCSqGSIb3DQEJBDEiBCB0Nt1S
+T+HC4RvCKavloo1oWza1m1IrtcUkfXkAz24NgzB5BgkqhkiG9w0BCQ8xbDBqMAsG
+CWCGSAFlAwQBKjALBglghkgBZQMEARYwCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMH
+MA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG
+9w0DAgIBKDANBgkqhkiG9w0BAQEFAASCAQAN9eWiaZWiGr0kTzC1R8JiGV7Qhs2h
+FflWybuE0Z6IbrGjRQ0pnO4vI7N+Av+k5UaILMm7s4t9rSzu/yLkq3L+1HKtMgNi
+NPVd/MBJAT5N3BQUACm6pLIjUBH7Q/7barpt4t0xR3cbafVQkpmHN/tZx1c9nwiD
+RmGqLbwibTc8UiswUeaLXL/Qm9yBybgNny6jFnoLQHjXYYhFOEthWBeAtYpJ9dMD
+em+75ICy864EWU0xgkkSmgWDZabxZNA/ZRVMnFmPvGVciLgfjHT49cEe6sFktAVd
+p/qJD440ycrwb4Rn47FE+gRn45V4Ex6+rDmqK734AufAD+Jdjo/yVrdK
+
+------B825DD1B4B49285A62576B902478B932--
+
diff --git a/resource/secure/signed_PerftestPermissionsPub.xml b/resource/secure/signed_PerftestPermissionsPub.xml
new file mode 100644
index 00000000..b56f33eb
--- /dev/null
+++ b/resource/secure/signed_PerftestPermissionsPub.xml
@@ -0,0 +1,79 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----33D9B40ED41AF77B040DB2B045FEBB8C"
+
+This is an S/MIME signed message
+
+------33D9B40ED41AF77B040DB2B045FEBB8C
+Content-Type: text/plain
+
+
+
+
+
+
+ /C=US/ST=CA/O=Real Time Innovations/CN=perftest/emailAddress=pub@rti.com
+
+
+ 2013060113
+ 2023060113
+
+
+ 1
+
+ Throughput
+
+
+ Announcement
+
+
+ Latency
+
+
+ Announcement
+
+
+ DENY
+
+
+------33D9B40ED41AF77B040DB2B045FEBB8C
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+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
+
+------33D9B40ED41AF77B040DB2B045FEBB8C--
+
diff --git a/resource/secure/signed_PerftestPermissionsSub.xml b/resource/secure/signed_PerftestPermissionsSub.xml
new file mode 100644
index 00000000..cc2cee14
--- /dev/null
+++ b/resource/secure/signed_PerftestPermissionsSub.xml
@@ -0,0 +1,79 @@
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha-256"; boundary="----30434C92F6E42C8602D771F7F73241F5"
+
+This is an S/MIME signed message
+
+------30434C92F6E42C8602D771F7F73241F5
+Content-Type: text/plain
+
+
+
+
+
+
+ /C=US/ST=CA/O=Real Time Innovations/CN=perftest/emailAddress=sub@rti.com
+
+
+ 2013060113
+ 2023060113
+
+
+ 1
+
+ Latency
+
+
+ Announcement
+
+
+ Throughput
+
+
+ Announcement
+
+
+ DENY
+
+
+------30434C92F6E42C8602D771F7F73241F5
+Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="smime.p7s"
+
+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
+
+------30434C92F6E42C8602D771F7F73241F5--
+
diff --git a/resource/secure/sub.pem b/resource/secure/sub.pem
new file mode 100644
index 00000000..83972523
--- /dev/null
+++ b/resource/secure/sub.pem
@@ -0,0 +1,86 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 2 (0x2)
+ Signature Algorithm: sha256WithRSAEncryption
+ Issuer: C=US, ST=CA, L=Sunnyvale, O=Real Time Innovations, CN=RTI CA/emailAddress=secure@rti.com
+ Validity
+ Not Before: Jul 17 14:30:44 2016 GMT
+ Not After : Jul 17 14:30:44 2017 GMT
+ Subject: C=US, ST=CA, O=Real Time Innovations, CN=perftest/emailAddress=sub@rti.com
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ Public-Key: (2048 bit)
+ Modulus:
+ 00:b9:12:3e:59:f7:92:11:80:72:42:9b:a2:fb:27:
+ e9:6a:24:c4:89:fe:af:5e:07:62:1d:b5:14:13:ca:
+ 74:8d:fd:15:a9:53:df:6e:99:54:e6:8f:83:f1:ab:
+ 3e:de:d0:9c:de:52:45:60:47:e2:2f:b0:11:3d:80:
+ de:5a:3c:58:47:ac:3c:f3:61:f5:56:15:20:7a:3c:
+ 05:1d:d6:48:fa:02:ef:36:2c:cc:75:7a:04:32:c0:
+ 0d:3c:f3:e8:7e:e1:c5:18:84:8d:1c:36:4c:21:4c:
+ 0e:6a:83:5a:19:4c:18:0a:f0:64:2b:d5:bd:55:9a:
+ 48:92:1d:ce:34:9e:b6:08:6b:f4:a8:19:6e:6c:96:
+ 44:b0:82:b2:ad:36:ad:d6:01:7e:75:52:53:81:89:
+ 46:31:39:01:28:97:c4:52:99:05:cd:6c:a7:f2:f3:
+ 0b:5b:6b:51:7e:4a:0e:5f:90:92:fc:64:b2:d0:e3:
+ 30:c6:62:19:88:44:e6:92:18:78:d4:57:8f:d0:5f:
+ 02:13:48:4e:57:4f:92:1a:c4:89:91:38:cf:26:f4:
+ 04:10:16:90:1b:20:53:30:76:03:e1:00:98:f6:92:
+ e9:89:46:48:2d:f6:7c:e5:57:b6:04:ec:9c:ae:d5:
+ 12:45:72:54:10:78:52:6a:35:f4:70:3d:70:40:b2:
+ 24:4f
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints:
+ CA:FALSE
+ Netscape Comment:
+ OpenSSL Generated Certificate
+ X509v3 Subject Key Identifier:
+ 0C:FD:CF:A8:F9:1E:D6:4B:8B:4B:7B:C5:87:76:B1:77:C1:D5:34:44
+ X509v3 Authority Key Identifier:
+ DirName:/C=US/ST=CA/L=Sunnyvale/O=Real Time Innovations/CN=RTI CA/emailAddress=secure@rti.com
+ serial:C3:27:AC:1E:16:83:B2:49
+
+ Signature Algorithm: sha256WithRSAEncryption
+ 48:59:c4:f2:63:8f:ef:4b:5d:24:a9:a6:fc:f2:48:24:00:6a:
+ 57:ba:06:a8:3f:67:82:16:5b:64:47:03:f3:4f:d2:6c:4f:eb:
+ cb:9b:cf:89:8a:4a:1e:b8:8e:22:cf:d7:b5:01:e8:07:5b:67:
+ 15:de:fa:e7:5f:4b:a9:5c:f0:4d:13:34:74:93:5b:31:39:7f:
+ d8:ab:47:3e:66:4e:6f:4a:09:af:4e:0a:85:3e:a3:8e:ca:8b:
+ 26:2e:04:eb:4f:b1:1c:4e:80:7b:13:c4:97:05:99:f9:e3:f3:
+ 24:bf:90:26:01:32:37:09:5a:9d:b5:39:4b:09:5b:2c:9c:1b:
+ fb:38:f2:d6:03:67:93:d9:a5:24:38:21:c4:a6:d2:3a:2a:2e:
+ 5d:8e:6c:29:6f:7c:e8:48:1d:80:04:c2:20:d5:93:47:e9:5b:
+ aa:ef:5c:d7:ff:32:fd:ab:3c:25:33:e4:e8:87:f7:4f:17:05:
+ 78:0c:13:f3:58:12:ad:49:f2:84:61:b3:e5:8b:86:be:89:db:
+ 89:d7:2d:d5:1a:76:b4:3f:a1:2a:42:f0:91:94:cc:55:24:a6:
+ 5a:f4:d7:0e:c6:33:a8:ab:b0:da:60:cb:95:ed:3d:81:61:11:
+ 13:7f:e3:82:e6:94:76:b7:d6:49:ca:07:1b:27:1d:89:cb:02:
+ 7f:7c:bf:1f
+-----BEGIN CERTIFICATE-----
+MIIEXTCCA0WgAwIBAgIBAjANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJVUzEL
+MAkGA1UECAwCQ0ExEjAQBgNVBAcMCVN1bm55dmFsZTEeMBwGA1UECgwVUmVhbCBU
+aW1lIElubm92YXRpb25zMQ8wDQYDVQQDDAZSVEkgQ0ExHTAbBgkqhkiG9w0BCQEW
+DnNlY3VyZUBydGkuY29tMB4XDTE2MDcxNzE0MzA0NFoXDTE3MDcxNzE0MzA0NFow
+aTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMR4wHAYDVQQKDBVSZWFsIFRpbWUg
+SW5ub3ZhdGlvbnMxETAPBgNVBAMMCHBlcmZ0ZXN0MRowGAYJKoZIhvcNAQkBFgtz
+dWJAcnRpLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALkSPln3
+khGAckKbovsn6WokxIn+r14HYh21FBPKdI39FalT326ZVOaPg/GrPt7QnN5SRWBH
+4i+wET2A3lo8WEesPPNh9VYVIHo8BR3WSPoC7zYszHV6BDLADTzz6H7hxRiEjRw2
+TCFMDmqDWhlMGArwZCvVvVWaSJIdzjSetghr9KgZbmyWRLCCsq02rdYBfnVSU4GJ
+RjE5ASiXxFKZBc1sp/LzC1trUX5KDl+QkvxkstDjMMZiGYhE5pIYeNRXj9BfAhNI
+TldPkhrEiZE4zyb0BBAWkBsgUzB2A+EAmPaS6YlGSC32fOVXtgTsnK7VEkVyVBB4
+Umo19HA9cECyJE8CAwEAAaOB+jCB9zAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQf
+Fh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUDP3PqPke
+1kuLS3vFh3axd8HVNEQwgZwGA1UdIwSBlDCBkaGBg6SBgDB+MQswCQYDVQQGEwJV
+UzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCVN1bm55dmFsZTEeMBwGA1UECgwVUmVh
+bCBUaW1lIElubm92YXRpb25zMQ8wDQYDVQQDDAZSVEkgQ0ExHTAbBgkqhkiG9w0B
+CQEWDnNlY3VyZUBydGkuY29tggkAwyesHhaDskkwDQYJKoZIhvcNAQELBQADggEB
+AEhZxPJjj+9LXSSppvzySCQAale6Bqg/Z4IWW2RHA/NP0mxP68ubz4mKSh64jiLP
+17UB6AdbZxXe+udfS6lc8E0TNHSTWzE5f9irRz5mTm9KCa9OCoU+o47KiyYuBOtP
+sRxOgHsTxJcFmfnj8yS/kCYBMjcJWp21OUsJWyycG/s48tYDZ5PZpSQ4IcSm0joq
+Ll2ObClvfOhIHYAEwiDVk0fpW6rvXNf/Mv2rPCUz5OiH908XBXgME/NYEq1J8oRh
+s+WLhr6J24nXLdUadrQ/oSpC8JGUzFUkplr01w7GM6irsNpgy5XtPYFhERN/44Lm
+lHa31knKBxsnHYnLAn98vx8=
+-----END CERTIFICATE-----
diff --git a/resource/secure/subkey.pem b/resource/secure/subkey.pem
new file mode 100644
index 00000000..21e6ab93
--- /dev/null
+++ b/resource/secure/subkey.pem
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAuRI+WfeSEYByQpui+yfpaiTEif6vXgdiHbUUE8p0jf0VqVPf
+bplU5o+D8as+3tCc3lJFYEfiL7ARPYDeWjxYR6w882H1VhUgejwFHdZI+gLvNizM
+dXoEMsANPPPofuHFGISNHDZMIUwOaoNaGUwYCvBkK9W9VZpIkh3ONJ62CGv0qBlu
+bJZEsIKyrTat1gF+dVJTgYlGMTkBKJfEUpkFzWyn8vMLW2tRfkoOX5CS/GSy0OMw
+xmIZiETmkhh41FeP0F8CE0hOV0+SGsSJkTjPJvQEEBaQGyBTMHYD4QCY9pLpiUZI
+LfZ85Ve2BOycrtUSRXJUEHhSajX0cD1wQLIkTwIDAQABAoIBAQCR0w0sKIWAotvl
+HesayMUDbLssHHCjv1+RFtgeC/0w0AUcacj4xXp/PP/zEUK1oFyqVNrzVVCk0K+U
+7ZDGOxw4RT+1ai88x+LSTa6eZvUTgfJoln335s+eCXOk3m8IYu7BNdhWLXZpGhuV
+06/PlQSwwd+8JmtMIwghkbij/5ZhJQ/I9Khaycohxedxr/3PbsOqkO+CA1CwHle1
+WzaNVl7wPMC5D9lpT9e3+PCf9I3q7EhtnSCaZmlQln3zD3+iahS7zP4qXrhBckYY
+rvfgfEHHM9hRTUNhYHfqHXuQWV6iu6fd69sqWCvWuw5wraoHVBTaP0vgYTJ47TKf
+rZWLwtMZAoGBAOM6GU0RQcCQIThyGrllDhDVvOrK1KviMozwZmThpxur1eXa7Xep
+5w8URemJYgCCfqG3pq7battQWbyC6rbQEH20szCxlGlb/FkqQ+OhNo364zYH4Rn1
+EcQdzcNlhcx6V20UIcrrsnZwLcvt2wiewamIrsIuVf4V2hKV8sdWZ6mzAoGBANCB
+mu5zdSHB0kTvVjKuMWLwNtq59BmONA8O8mh8YyMsj7V1Rjwz6Y5FB69/jcWEIoqg
+iJRDTaTGK3102s4/TY3tUeix59YCYIF81X90iWyeCQszrFqMECEDfYPSIIhmCAEr
++ex/wb3L0jw/O9erDS052cYbb/lyuaaG6Rhh+lT1AoGAFtE9uyxxctnGTDnBDz7j
+k7My3kzx4DS9qMN3NMgoFLJDr2o1kF+iUTRS9OmTysNP3gNoHITyDQXbjP+EfEkW
+btkXaVtbsNzI0VdaK+CDbuxzpnhSFV4zo4Lup6FpNyhN4Sk1X4AdkqEfKCxBY3M1
+tUWBbwRiJDqjhFxEXdoCXNsCgYBKLUGEATkzeDOo6Ih+4S+apiCtsafgi5GDpeqh
+N1dBhTHe+UiyVDmLro0sZzF1iiuLq87LCCKQMxv3tuG8rBKYIkyYfuoeXZwdlN6T
+SE83gAVxocF4OQnn5Mj7Y37FZ58DY7S26UBwmBlD668La8P1SfZqnwo38ROQ5b/5
+N6oKHQKBgEPZf9jPFnr6QLQGjAvjNrZLA6yoaJmgzqPoJzcYHAwTGvKnoXvUeIMA
+6FMLW+votSGZUQuTqtO/Egf8tsZ3jDuRFue9BH23lUMCzh+fxm5hMe42RXixRcwA
+yFvz14Q43colApZXB634O1QUoye5rLklvlNXvFIhp2EqWGgDJk8V
+-----END RSA PRIVATE KEY-----
diff --git a/scripts/perftest_java b/scripts/perftest_java
index 528e15e3..6da08497 100755
--- a/scripts/perftest_java
+++ b/scripts/perftest_java
@@ -1,20 +1,8 @@
#!/bin/ksh
-# $Id: perftest_java,v 1.4 2015/04/30 11:21:29 juanjo Exp $
-#
-# (c) 2005-2012 Copyright, Real-Time Innovations, Inc. All rights reserved.
-# Permission to modify and use for internal purposes granted.
+# (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+# Permission to modify and use for internal purposes granted.
# This software is provided "as is", without warranty, express or implied.
-#
-# modification history
-# --------------------
-# 30apr15,jmc PERFTEST-88 Changed /class to /lib/java in the classpath
-# 11apr09,jsr Added RTI_PERFTEST_ARCH variable for arch flexibility
-# 22oct08,rbw Fixed JAR file name
-# 07oct08,rbw Refactored launcher class
-# 08apr08,rbw Increased max heap size
-# 04apr08,rbw Created
-# =====================================================================
# You can override the following settings with the correct location of Java
JAVA=`which java`
@@ -22,7 +10,7 @@ JAVA=`which java`
# Make sure JAVA and NDDSHOME are set correctly
test -z "$JAVA" && echo "java not found" && exit 0
test -z "$NDDSHOME" && echo "NDDSHOME environment variable not set!" && exit 0
-#test -z "$RTI_PERFTEST_ARCH" && echo "RTI_PERFTEST_ARCH environment variable not set!" && exit 0
+test -z "$RTI_PERFTEST_ARCH" && echo "RTI_PERFTEST_ARCH environment variable not set!" && exit 0
# Attempt to set LD_LIBRARY_PATH from which to load native libraries.
# If RTI_PERFTEST_ARCH is set (e.g. to i86Linux2.6gcc4.1.1), you don't
diff --git a/scripts/perftest_java.bat b/scripts/perftest_java.bat
index c3bf23fa..dc2f32d1 100755
--- a/scripts/perftest_java.bat
+++ b/scripts/perftest_java.bat
@@ -1,24 +1,6 @@
-@REM $Id: perftest_java.bat,v 1.3 2015/04/30 11:25:24 juanjo Exp $
-@REM
-@REM (c) Copyright, Real-Time Innovations, 2005.
-@REM All rights reserved.
-@REM
-@REM No duplications, whole or partial, manual or electronic, may be made
-@REM without express written permission. Any such copies, or
-@REM revisions thereof, must display this notice unaltered.
-@REM This code contains trade secrets of Real-Time Innovations, Inc.
-@REM
-@REM modification history
-@REM --------------------
-@REM 30apr15,jmc PERFTEST-88 Changed \class to \lib\java in the classpath
-@REM 11apr09,jsr Added RTI_PERFTEST_ARCH variable for arch flexibility
-@REM 22oct08,rbw Fixed JAR file name
-@REM 07oct08,rbw Refactored launcher class
-@REM 04apr08,rbw Harmonized output paths with other architectures
-@REM 02apr08,rbw Increase heap size; get 'java' from path; use release libs
-@REM 02apr08,rbw Created
-
-@REM =====================================================================
+@REM (c) 2005-2016 Copyright, Real-Time Innovations, Inc. All rights reserved.
+@REM Permission to modify and use for internal purposes granted.
+@REM This software is provided "as is", without warranty, express or implied.
@echo off
diff --git a/xsd/rti_dds_qos_profiles.xsd b/xsd/rti_dds_qos_profiles.xsd
index 83b1f2f3..f8a81b4d 100755
--- a/xsd/rti_dds_qos_profiles.xsd
+++ b/xsd/rti_dds_qos_profiles.xsd
@@ -497,310 +497,310 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1270,7 +1270,7 @@
- <RTPS_AUTO_ID_FROM_IP|RTPS_AUTO_ID_FROM_MAC>
+ <RTPS_AUTO_ID_FROM_IP|RTPS_AUTO_ID_FROM_MAC|RTPS_AUTO_ID_FROM_UUID>
@@ -1278,6 +1278,7 @@
+
diff --git a/xsd/rti_routing_service.xsd b/xsd/rti_routing_service.xsd
deleted file mode 100644
index dbf9990d..00000000
--- a/xsd/rti_routing_service.xsd
+++ /dev/null
@@ -1,4935 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Configuration of RTI Connext and RTI Connext services.
-
-
-
-
-
-
-
-
-
-
- Defines types that can be used by
- RTI Routing Service
-
-
-
-
-
-
-
-
-
-
- Specifies a QoS library and profiles. The
- contents of this tag are specified in the same
- manner as for an RTI Connext
- QoS profile file
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This element allows configuring the DDS Router Service
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- A routing service may belong to a
- group of several routing services
- identified by a common
- group_name. This common name
- can be used to implement a specific
- policy when the communication happens
- between routing services of the
- same group. For example, in the
- built-in DDS adapter, a participant
- will ignore other participants in the
- same group, as a way to avoid circular
- communication.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Specifies a library of transformation plugins.
-
-
-
-
-
-
-
- Entry point to load apluggable transformation
-
-
-
-
-
-
-
-
-
-
-
- Specifies a library of adapter plugins.
-
-
-
-
-
-
-
-
- Declares an adapter plugin.
-
-
-
-
-
-
- Declares a java adapter plugin.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Shared library containing the implementation
- of the adapter plugin.
-
-
-
-
-
-
- Name of the function used to create the
- adapter plugin, implemented in the shared library.
-
-
-
-
-
-
-
-
-
-
-
-
-
- Name of the class that implements the adapter plugin.
- For example:
- com.rti.routingservice.adapter.jms.JMSAdapter
-
-
-
-
-
-
-
-
-
-
-
-
- Set of name-value pairs passed to the plugin implementation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Configures the Java JVM used to load and run Java adapters
- such as the JMS Adapter
-
-
-
-
-
-
-
- The class path used to load java adapters.
- Default: The value of the environment
- variable CLASSPATH
-
-
-
-
-
-
-
-
-
-
-
- Options for the JVM
- (as they're passed to the java executable).
- Default: no options.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Defines a mapping between two data domains.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Configures one of the DDS participants.
- (Only applicable to DDS domains)
-
-
-
-
-
-
-
- Sets the participant QoS. The contents
- of this tag are specified in the same manner as an
- RTI Connext QoS profile file.
- Use the attribute base_name to inherit from an
- existing profile. Default: DDS defaults.
-
-
-
-
-
-
-
-
-
-
-
- Configures one of the connections.
- (Applicable to non-DDS domains)
-
-
-
-
-
-
-
-
-
- Reference to the an adapter plugin
- in the form LibraryName::PluginName
-
-
-
-
-
-
-
-
-
-
- Sets the domain ID associated with the participant.
-
-
-
-
-
-
-
-
- Makes a type defined in the file
- available to this connection
-
-
-
-
-
- The name routes will use to refer to this type
-
-
-
-
-
-
- The full name (e.g. module1::module2::type) of
- the type defined in the file
-
-
-
-
-
-
-
-
-
- Configures different aspects of the internal memory management for
- the data routed within this connection
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Defines a single-threaded context for data routing;
- the data is routed according to specified routes.
-
-
-
-
-
-
-
-
-
-
- Sets the DDS publisher QoS. Only applicable
- to DDS domains. Default: DDS defaults
-
-
-
-
-
-
- Sets the DDS subscriber QoS. Only applicable
- to DDS domains. Default: DDS defaults
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- A special kind of session that reads data from the
- contained routes every certain period of time.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sets the mask, priority and stack size of the
- thread associated with this session.
-
-
-
-
-
-
- Sets the mask. Default: MASK_DEFAULT
-
-
-
-
-
-
- Sets the thread priority.
- Default: O.S. default
-
-
-
-
-
-
- Sets the thread stack size.
- Default: O.S. default
-
-
-
-
-
-
-
-
-
- Conditions and WaitSets provide another way for RTI Connext to communicate status changes
- (including the arrival of data). While a Listener is used
- to provide a callback for synchronous access, Conditions
- and WaitSets provide asynchronous data access. In other words,
- Listeners are notification-based and Conditions are wait-based.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Defines a explicit mapping between an input topic
- on one domain and an output topic on the other domain.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Defines a explicit mapping between an input data stream
- on one connection and an output data stream
- on the other connection
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Defines the route's input topic.
- Only applicable to DDS inputs.
-
-
-
-
-
-
-
- The topic name used by this route's DataReader
-
-
-
-
-
-
- The type of the samples read in this route.
- This type can be discovered or registered in the participant.
-
-
-
-
-
-
-
-
-
-
- Sets the DDS Data Reader QoS.
- Default: DDS defaults
-
-
-
-
-
-
-
-
-
-
-
-
- Defines the route's output topic.
- Only applicable to DDS inputs.
-
-
-
-
-
-
- The topic name used by this route's DataWriter
-
-
-
-
-
-
- The type of the samples written in this route.
- This type can be discovered or registered in the connection.
-
-
-
-
-
-
-
- Sets the DDS Data Writer QoS.
- Default: DDS defaults
-
-
-
-
-
-
-
-
-
- Applicable to non-DDS inputs.
- Defines the route’s input stream.
-
-
-
-
-
-
-
-
- The stream name used to identify the data read
- in this route.
-
-
-
-
-
-
- The type of the samples read in this route.
- This type can be discovered or registered in the connection.
-
-
-
-
-
-
-
-
-
-
-
-
- This element is used to configure the output of a route.
-
-
-
-
-
-
-
- The stream name used to identify the data written
- in this route.
-
-
-
-
-
-
- The type of the samples read in this route.
- This type can be discovered or registered in the connection.
-
-
-
-
-
-
-
-
-
-
- Defines a SQL content filter topic for the DDS Data Rader,
- making possible to subscribe only to a subset of the
- data.
-
-
-
-
-
-
- The content filter expression.
- For example: x > 100
-
-
-
-
-
-
- Specifies a value for a content-filter
- expression using parameters.
-
-
-
-
-
-
-
-
-
- Enables the propagation of filter information that is an aggregation
- of the user DataReaders' filters.
-
-
-
-
-
-
- Maximum number of events that must occur to propagate
- the filter information. All the events are handled at once.
- Default: one.
- Range: [1, DDS_LENGTH_UNLIMITED]
-
-
-
-
-
-
- Maximum amount of time the propagation of the filter information
- is delayed since the first occurrence of an event.
- All the indication events that occur within this interval
- will be handle at once.
- Default: infinite
- Range: [1ns, DDS_DURATION_INFINITE]
-
-
-
-
-
-
-
-
-
-
-
-
- Sets a data transformation to be applied for every
- data sample.
-
-
-
-
-
-
-
-
-
- Reference to the an transformation plugin
- in the form LibraryName::PluginName
-
-
-
-
-
-
-
-
-
-
-
-
-
- Defines a set of potential routes, with the same input and output
- type, and the same input and output stream name. A route can eventually be instantiated
- when a new stream is discovered with a type name and a stream name that match
- the filters in the auto route. When this happens, a route is created (but not necessarily
- started) with the configuration defined in the auto route tag.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Defines a set of potential routes, with the same input and output
- type, and the same input and output stream name. A route can eventually be instantiated
- when a new stream is discovered with a type name and a stream name that match
- the filters in the auto route. When this happens, a route is created (but not necessarily
- started) with the configuration defined in the auto route tag.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This element is used to configure which data types and topics
- are discovered in the output
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Controls when the route input (StreamReader)
- or output (StreamWriter) is created
- Default: IMMEDIATE.
-
-
-
-
-
-
- The route StreamReader/StreamWriter is created as
- soon as possible; that is, as soon as the types are available.
- Note that if the type is defined in the configuration
- file, the creation will occur when the routing service
- starts.
- If the type is not defined in the configuration file, it has
- to be discovered
-
-
-
-
-
-
- The route StreamReader is not created until the associated
- connection discovers a data Producer on the same
- stream
- For example, for a DDS domain, RTI Routing Service will
- not create the route DataReader until a DataWriter for
- the same topic is discovered on the same domain.
- The routing service StreamWriter is not created until the
- associated connection discovers a data Consumer on the
- same stream.
- For example, for a DDS domain, RTI Routing Service will
- not create the route DataWriter until a DataReader for
- the same topic is discover on the same domain
-
-
-
-
-
-
- The routing service StreamReader/StreamWriter is not
- created until its counterpart in the route is created.
-
-
-
-
-
-
- Both conditions must be true
-
-
-
-
-
-
- At least one of the conditions must be true
-
-
-
-
-
-
-
-
-
-
-
- The participant used to read data in this route
-
-
-
-
-
-
- participant_1 - the first participant of this domain route
-
-
-
-
-
-
- participant_2 - the second participant of this domain route
-
-
-
-
-
-
-
-
-
- The connection used to read data in this route
-
-
-
-
-
-
- connection_1 - the first connection of this domain route
-
-
-
-
-
-
- connection_2 - the second connection of this domain route
-
-
-
-
-
-
-
-
-
-
-
- The name identifying the stream used
- in
-
-
-
-
-
-
-
-
- Defines if the input connection will use types discovered
- in the output connection and vice versa for
- the creation of StreamWriters and StreamReaders in
- the route. Default: false
-
-
-
-
-
-
-
-
-
-
- Writes the data sample as if they came from its original
- writer. Setting this option to true allows having
- redundant routing services and prevents the applications
- from receiving duplicate samples.
- Default: false
-
-
-
-
-
-
-
-
- When this tag is true, the data samples read from the
- input stream are written into the output stream with
- the same timestamp that was associated with them
- when they were made available in the input
- domain.
- This option may not be applicable in some adapter
- implementations in which the concept of timestamp
- is unsupported.
- Default: false
-
-
-
-
-
-
-
-
- Indicates whether or not disposed samples
- (NOT_ALIVE_DISPOSE) must be propagated by the
- topic route.
- This action maybe be overwritten by the execution
- of a transformation.
- Default: true
-
-
-
-
-
-
-
-
- Indicates whether or not
- NOT_ALIVE_NO_WRITERS samples must be propagated
- by the topic route by using the
- unregister_instance() operation
- This action maybe be overwritten by the execution
- of a transformation.
- Default: true
-
-
-
-
-
-
-
-
-
-
-
-
- Remote access configuration.
-
-
-
-
-
-
-
-
- Configuration settings for Distributed Logger.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Configuration of the publication of entity status and statistics
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Override monitoring general configuration for this specific entity
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Specify the frequency the status of this entity is published.
- Set it to infinite to disable it.
-
-
-
-
-
-
-
- Period in which the current averages are retreived
- and used for the calculation of the statistics. A smaller
- period will give more accurante historical statistics but
- a higher use of resources.
-
-
-
-
-
-
-
- Use this tag to enable or disable the publication of
- statistics calculated within fixed time windows
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Enable the publication of statistics calculated in this
- time window
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <xs:boolean>
-
-
-
-
-
-
-
-
- <xs:string>
-
-
-
-
-
-
-
-
- <xs:integer>
-
-
-
-
-
-
-
-
- <xs:nonNegativeInteger>
-
-
-
-
-
-
-
-
- <xs:positiveInteger>
-
-
-
-
-
-
-
-
- <xs:string>
-
-
- Uses a byte-oriented encoding wich successive bytes separates by comma and each byte represented
- either using a decimal or hexadecimal notation. White space is allowed between bytes.
- For example:
- 34, 44, 56,0x44,127,0xf3,
- 44,233,122, 122, 44, 222
-
-
-
-
-
-
-
-
-
-
-
-
-
- <xs:string>
-
-
- Name that uniquely identifies this element.
-
-
-
-
-
-
-
-
-
-
-
- <xs:string>
-
-
- A QoS Profile can inherit its values from other QoS Profiles described in the XML file
- using this attribute.
-
-
-
-
-
-
-
-
-
-
-
- <xs:string>
-
-
- It can only be 255 characters in length.
-
-
-
-
-
-
-
-
-
-
- <xs:string>
-
-
- It can only be 255 characters in length.
-
-
-
-
-
-
-
-
-
-
- <xs:string>
-
-
- The name of the Property.
-
-
-
-
-
-
-
-
-
-
-
- <xs:string>
-
-
- RTI Connext will select a QoS based on the evaluation of this filter expression on the topic name.
-
-
-
-
-
-
-
-
-
-
-
- <BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS|BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS>
-
-
-
-
-
-
-
-
-
-
-
-
- <AUTOMATIC_TRANSPORT_MULTICAST_QOS|UNICAST_ONLY_TRANSPORT_MULTICAST_QOS>
-
-
-
-
-
-
-
-
-
-
-
-
- <VOLATILE_DURABILITY_QOS|TRANSIENT_LOCAL_DURABILITY_QOS|TRANSIENT_DURABILITY_QOS|PERSISTENT_DURABILITY_QOS>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <KEEP_LAST_HISTORY_QOS|KEEP_ALL_HISTORY_QOS>
-
-
-
-
-
-
-
-
-
-
-
-
- <AUTOMATIC_LIVELINESS_QOS|MANUAL_BY_PARTICIPANT_LIVELINESS_QOS|MANUAL_BY_TOPIC_LIVELINESS_QOS>
-
-
-
-
-
-
-
-
-
-
-
-
-
- <INSTANCE_PRESENTATION_QOS|TOPIC_PRESENTATION_QOS|GROUP_PRESENTATION_QOS>
-
-
-
-
-
-
-
-
-
-
-
-
-
- <INSTANCE_PRESENTATION_QOS|TOPIC_PRESENTATION_QOS|GROUP_PRESENTATION_QOS|HIGHEST_OFFERED_PRESENTATION_QOS>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <DDS_NO_SERVICE_QOS|DDS_PERSISTENCE_SERVICE_QOS|DDS_QUEUING_SERVICE_QOS|DDS_ROUTING_SERVICE_QOS|RECORDING_SERVICE_QOS|DATABASE_INTEGRATION_SERVICE_QOS>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <BEST_EFFORT_RELIABILITY_QOS|RELIABLE_RELIABILITY_QOS>
-
-
-
-
-
-
-
-
-
-
-
-
- <PROTOCOL_ACKNOWLEDGMENT_MODE|APPLICATION_AUTO_ACKNOWLEDGMENT_MODE|APPLICATION_EXPLICIT_ACKNOWLEDGMENT_MODE>
-
-
-
-
-
-
-
-
-
-
-
-
-
- <SHARED_OWNERSHIP_QOS|EXCLUSIVE_OWNERSHIP_QOS>
-
-
-
-
-
-
-
-
-
-
-
-
- <NO_REPLACEMENT_IGNORED_ENTITY_REPLACEMENT|NOT_ALIVE_FIRST_IGNORED_ENTITY_REPLACEMENT>
-
-
-
-
-
-
-
-
-
-
-
-
- <UNREGISTERED_INSTANCE_REPLACEMENT|ALIVE_INSTANCE_REPLACEMENT|DISPOSED_INSTANCE_REPLACEMENT|ALIVE_THEN_DISPOSED_INSTANCE_REPLACEMENT|DISPOSED_THEN_ALIVE_INSTANCE_REPLACEMENT|ALIVE_OR_DISPOSED_INSTANCE_REPLACEMENT>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <RTPS_AUTO_ID|xs:string>
-
-
-
-
-
-
-
-
-
-
-
- A valid IP address
-
-
-
-
-
-
-
-
-
-
-
- <SYNCHRONOUS_PUBLISH_MODE_QOS|ASYNCHRONOUS_PUBLISH_MODE_QOS>
-
-
-
-
-
-
-
-
-
-
-
-
-
- <NONE_REFILTER_QOS|ALL_REFILTER_QOS|ON_DEMAND_REFILTER_QOS>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <LIVELINESS_BASED_REMOTE_PARTICIPANT_PURGE|NO_REMOTE_PARTICIPANT_PURGE>
-
-
-
-
-
-
-
-
-
-
-
-
-
- <UDPv4|UDPv6|SHMEM|MASK_DEFAULT|MASK_NONE|MASK_ALL> [|<UDPv4|UDPv6|SHMEM>| ... ]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <RTPS_AUTO_ID_FROM_IP|RTPS_AUTO_ID_FROM_MAC>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <MASK_DEFAULT|MASK_NONE|MASK_ALL|BUILTIN_UNICAST|BUILTIN_MULTICAST|USER_UNICAST|USER_MULTICAST> [|<BUILTIN_UNICAST|BUILTIN_MULTICAST|USER_UNICAST|USER_MULTICAST>| ... ]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <MASK_DEFAULT|FLOATING_POINT|STDIO|REALTIME_PRIORITY|PRIORITY_ENFORCE> [|<FLOATING_POINT|STDIO|REALTIME_PRIORITY|PRIORITY_ENFORCE>| ... ]
- (See Platform Notes for platform specific details)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <SDP|EDS|SPDP|SEDP|MASK_NONE|MASK_ALL|MASK_DEFAULT> [|<SDP|EDS|SPDP|SEDP>| ... ]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <ZERO_CDR_PADDING|NOT_SET_CDR_PADDING|AUTO_CDR_PADDING>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <LENGTH_UNLIMITED|xs:nonNegativeInteger>
-
-
-
-
-
-
-
-
-
-
-
- <DURATION_INFINITE_SEC|DURATION_ZERO_SEC|xs:nonNegativeInteger>
-
-
-
-
-
-
-
-
-
-
-
-
- <DURATION_INFINITE_NSEC|DURATION_ZERO_NSEC|xs:nonNegativeInteger>
-
-
-
-
-
-
-
-
-
-
-
-
- <DURATION_INFINITE_SEC|DURATION_ZERO_SEC|DURATION_AUTO_SEC|xs:nonNegativeInteger>
-
-
-
-
-
-
-
-
-
-
-
-
- <DURATION_INFINITE_NSEC|DURATION_ZERO_NSEC|DURATION_AUTO_NSEC|xs:nonNegativeInteger>
-
-
-
-
-
-
-
-
-
-
-
-
- <LENGTH_UNLIMITED|xs:positiveInteger>
-
-
-
-
-
-
-
-
-
-
-
- <LENGTH_AUTO|xs:positiveInteger>
-
-
-
-
-
-
-
-
-
-
-
-
- <AUTO_MAX_TOTAL_INSTANCES|xs:positiveInteger>
-
-
-
-
-
-
-
-
-
-
-
-
- <THREAD_PRIORITY_DEFAULT|THREAD_PRIORITY_BELOW_NORMAL|THREAD_PRIORITY_LOW|THREAD_PRIORITY_NORMAL|THREAD_PRIORITY_ABOVE_NORMAL|THREAD_PRIORITY_HIGH|xs:positiveInteger>
- (See Platform Notes for platform specific details)
-
-
-
-
-
-
-
-
-
-
-
-
- <THREAD_STACK_SIZE_DEFAULT|xs:positiveInteger>
- (See Platform Notes for platform specific details)
-
-
-
-
-
-
-
-
-
-
-
- <GUID_AUTO|xs:string>
-
-
-
-
-
-
-
-
- <DEFAULT_FLOW_CONTROLLER_NAME|FIXED_RATE_FLOW_CONTROLLER_NAME|ON_DEMAND_FLOW_CONTROLLER_NAME|xs:string>
-
-
-
-
-
-
-
-
-
- <ENCAPSULATION_ID_CDR_LE|ENCAPSULATION_ID_CDR_BE|ENCAPSULATION_ID_CDR_NATIVE|xs:unsignedShort>
- <METP_ENCAPSULATION_ID_SHMEM_LE|METP_ENCAPSULATION_ID_SHMEM_BE|METP_ENCAPSULATION_ID_SHMEM|xs:unsignedShort>
- <METP_ENCAPSULATION_ID_IB_RDMA_READ_LE|METP_ENCAPSULATION_ID_IB_RDMA_READ_BE|METP_ENCAPSULATION_ID_IB_RDMA_READ|xs:unsignedShort>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- TODO
-
-
-
-
-
-
-
-
-
-
-
-
- <SILENT|ERROR|WARNING|LOCAL|REMOTE|ALL>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <PLATFORM|COMMUNICATION|DATABASE|ENTITIES|API|ALL>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <DEFAULT|TIMESTAMPED|VERBOSE|VERBOSE_TIMESTAMPED|DEBUG|MINIMAL|MAXIMAL>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Time specified in seconds and nanoseconds
-
-
-
-
-
-
-
-
-
-
-
- Time specified in seconds and nanoseconds
-
-
-
-
-
-
-
-
-
-
-
- Declares a sequence of elements, which correspond to different xs:string.
-
-
-
-
-
-
-
-
-
-
-
- Sequence number specified in high and low, or as a 64-bit decimal value
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Resource allocation settings.
-
-
-
-
-
-
-
-
-
-
-
-
-
- A sequence of elements with valid IP addresses.
-
-
-
-
-
-
-
-
-
-
-
- RTPS well-known port mapping configuration.
- RTI Connext uses the RTPS wire protocol.
- The discovery protocols defined by RTPS rely on well-known ports to initiate discovery.
- These well-known ports define the multicast and unicast ports on which a Participant will listen for discovery
- metatraffic from other Participants.
- The discovery metatraffic contains all the information required to establish the presence of remote DDS entities in the network.
- The well-known ports are defined by RTPS in terms of port mapping expressions with several tunable parameters,
- which allow the user to customize what network ports are used by the middleware.
- In order for all Participants in a system to correctly
- discover each other, it is important that they all use the
- same port mapping expressions.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- QoS related to reliable reader protocol defined in RTPS.
- It is used to configure a reliable reader according to the
- RTPS protocol.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- QoS related to the reliable writer protocol defined in RTPS.
- It is used to configure a reliable writer according to RTPS protocol.
- The reliability protocol settings are applied to batches instead of individual data samples when batching is enabled.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The virtual GUID (Global Unique Identifier).
- The virtual GUID is used to uniquely identify different incarnations of the same DataReader.
- The association between a DataReader and its persisted state is done using the virtual GUID.
-
-
-
-
-
-
-
-
-
-
-
- A sequence of elements of non-negative integers
-
-
-
-
-
-
-
-
-
-
- <THREAD_SETTINGS_CPU_NO_ROTATION|THREAD_SETTINGS_CPU_RR_ROTATION>
- (See Platform Notes for platform specific details)
-
-
-
-
-
-
-
-
-
-
-
-
-
- The properties of a thread of execution.
- (See Platform Notes for platform specific details)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Type representing a list of unicast locators.
- A unicast locator specifies a transport class, a unicast address, and a unicast port number on which messages can be received by an entity.
-
-
-
-
-
-
-
-
-
-
-
- Type representing a function defined into an external library.
-
-
-
-
-
-
-
-
-
-
-
-
- Type representing a list of addresses associeted with a topic expression.
-
-
-
-
-
-
-
-
-
-
-
-
-
- Declares a sequence of elements, which correspond to different TransportUnicastSettings_t
- entities.
-
-
-
-
-
-
-
-
-
-
-
- Declares a sequence of elements, which correspond to different TransportMulticast_t
- entities.
-
-
-
-
-
-
-
-
-
-
-
- Type representing a list of multicast locators.
- A multicast locator specifies a transport class, a multicast address, and a multicast port number on which messages can be received by an entity.
-
-
-
-
-
-
-
-
-
-
-
-
-
- Declares a sequence of elements, which correspond to different TransportMulticastSettings_t
- entities.
-
-
-
-
-
-
-
-
-
-
-
- Type used to configure the properties of a channel.
-
-
-
-
-
-
-
-
-
-
-
-
-
- Declares a sequence of elements, which correspond to different ChannelSettings_t
- entities.
-
-
-
-
-
-
-
-
-
-
-
- Properties are name/value pairs objects.
-
-
-
-
-
-
-
-
-
-
-
-
-
- Declares a sequence of elements, which correspond to different Property_t
- entities.
-
-
-
-
-
-
-
-
-
-
-
- Declares a sequence of encapsulations.
-
-
-
-
-
-
-
-
-
-
-
- Type representing a list of transport encapsulations associated to a set of transports.
-
-
-
-
-
-
-
-
-
-
-
-
- Declares a sequence of elements, which correspond to different TransportEncapsulationSettings_t
- entities.
-
-
-
-
-
-
-
-
-
-
-
- Endpoint groups are identified by a role_name and a quorum_count.
-
-
-
-
-
-
-
-
-
-
-
-
- Declares a sequence of elements, which correspond to different EndpointGroup_t
- entities.
-
-
-
-
-
-
-
-
-
-
-
-
-
- On a DataWriter, this QoS policy states the maximum period in
- which the application
- expects to call write() on the DataWriter, thus publishing a new sample. The application
- may call write() faster than the rate set by this QoS policy.
- On a DataReader, this QoS policy states the maximum period in
- which the application
- expects to receive new values for the Topic. The application may receive data faster than
- the rate set by this QoS policy.
-
-
-
-
-
-
-
-
-
-
- This policy controls how each subscriber resolves the final value of a data instance that
- is written by multiple DataWriters.
-
-
-
-
-
-
-
-
-
-
-
- The Durability QoS policy controls whether or not, and how,
- published samples are
- stored by the DataWriter application for DataReaders that are found after the samples
- were initially written.
-
-
-
-
-
-
-
-
-
-
-
-
- This QoS policy is only used if the DURABILITY QoS policy is
- PERSISTENT or TRANSIENT
- and you are using RTI Persistence Service, an optional product which may be
- purchased separately.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The Entity Factory QoS policy is a mechanism whereby a user can indicate whether entities
- should be automatically enabled upon creation by their factory or whether
- enabling should be deferred to a later time of the user's own choosing.
-
-
-
-
-
-
-
-
-
-
- This QoS policy provides an area where your application can
- store additional information
- related to the Publisher and Subscriber. This information is passed between applications
- during discovery using built-in topics.
-
-
-
-
-
-
-
-
-
-
- This QoS policy configures the number of samples that RTI
- Data Distribution Service will
- store locally for DataWriters and DataReaders.
-
-
-
-
-
-
-
-
-
-
-
-
-
- This QoS policy is used to suggest the maximum acceptable delay that is acceptable
- between when data is written and when data is received.
-
-
-
-
-
-
-
-
-
-
- The purpose of this QoS is to avoid delivering stale data to the application. Each data
- sample written by a DataWriter has an associated expiration time, beyond which the
- data should not be delivered to any application. Once the sample expires, the data will
- be removed from the DataReader caches, as well as from the transient and persistent
- information caches.
-
-
-
-
-
-
-
-
-
-
- The LIVELINESS QoS policy specifies how RTI Data Distribution
- Service determines
- whether a DataWriter is "alive". A DataWriter's liveliness is used in combination with
- the OWNERSHIP QoS policy to maintain ownership of an instance
- (note that the DEADLINE QoS policy
- is also used to change ownership when a DataWriter is still alive)
-
-
-
-
-
-
-
-
-
-
-
-
- The OWNERSHIP QoS policy specifies whether a DataReader will
- see changes to an
- instance of a Topic from multiple DataWriters. For non-keyed Topics, there is only one
- instance of the Topic.
-
-
-
-
-
-
-
-
-
-
- The OWNERSHIP_STRENGTH QoS policy is used to rank DataWriters
- of the same
- instance of a Topic, so that RTI Connext can decide which DataWriter will
- have ownership of the instance when the OWNERSHIP QoS policy
- (Section 6.5.13) is set
- to EXCLUSIVE.
-
-
-
-
-
-
-
-
-
-
- The PARTITION QoS provides another way to control which DataWriters will match
- and thus communicate with which DataReaders. It can be used to prevent DataWriters
- and DataReaders that would have otherwise matched with the same Topic and compatible
- QoS policies from talking to each other. Much in the same way
- that only applications
- within the same DDS domain will communicate with each other, only DataWriters and
- DataReaders that belong to the same partition can talk to each other.
-
-
-
-
-
-
-
-
-
-
- Since data samples are sent independently over networks that may deliver packets out
- of order, the PRESENTATION QoS policy allows you to control
- how a Subscriber sorts
- and orders the received samples in the DataReader's queue.
-
-
-
-
-
-
-
-
-
-
-
-
- Since data samples are sent independently over networks that may deliver packets out
- of order, the PRESENTATION QoS policy allows you to control
- how a Subscriber sorts
- and orders the received samples in the DataReader's queue.
-
-
-
-
-
-
-
-
-
-
-
-
- This policy controls the behavior of the DataReader with regards to the lifecycle of the
- data instances it manages, that is, the data instances that have been received and for
- which the DataReader maintains some internal resources.
-
-
-
-
-
-
-
-
-
-
-
-
- This RELIABILITY QoS policy determines whether or not data
- published by a
- DataWriter will be reliably delivered by RTI Connext to matching
- DataReaders.
-
-
-
-
-
-
-
-
-
-
-
-
- This SERVICE QoS policy Service QoS policy is used to indicate
- what kind of service is associated with the DDS entity.
-
-
-
-
-
-
-
-
-
-
- This QoS policy determines the DataWriter's publishing mode,
- either asynchronous or synchronous.
- The publishing mode controls whether data is written synchronously in the context of
- the user thread when calling write(), or asynchronously in the context of a separate
- thread internal to RTI Connext.
-
-
-
-
-
-
-
-
-
-
-
-
- The RESOURCE_LIMITS QoS policy controls the memory resources
- that RTI Data Distribution
- Service allocates and uses for DataWriter or DataReader. One of the most important
- fields is max_samples, which sets the size and causes memory to be allocated for the
- send or receive queues.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This TIME_BASED_FILTER QoS policy allows you to specify that
- data should not be delivered more than once per-specified
- period for each data instance, regardless of how fast
- DataWriters are publishing new samples of the data instance.
-
-
-
-
-
-
-
-
-
-
- This QoS policy provides an area where your application can
- store additional information
- related to the Topic. This information is passed between applications during discovery
- using built-in topics.
- How this information is used will be up to user code. RTI Connext does
- not do anything with the information stored as TOPIC_DATA except to pass it to other
- applications.
-
-
-
-
-
-
-
-
-
-
- The TRANSPORT_PRIORITY QoS policy allows the user application
- to take advantage
- of transports that are capable of sending messages with different priorities.
-
-
-
-
-
-
-
-
-
-
- This QoS policy provides an area where your application can
- store additional information
- related to a DomainParticipant, DataWriter, or DataReader. This information is passed
- between applications during discovery using built-in-topics. How this information is used
- will be up to user code.
- RTI Connext does not do anything with the information stored as
- USER_DATA except to pass it to other applications.
-
-
-
-
-
-
-
-
-
-
- This QoS policy determines if the DataWriter will dispose an instance when it is unregistered.
- When a DataWriter unregisters an instance, it means that this particular DataWriter has
- no more information/data on this instance. When an instance is disposed, it means that
- the instance is "dead"-there will no more information/data from any DataWriter on
- this instance.
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- Resource limits that apply only to DataReader instances.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- Resource limits that apply only to DataWriter instances.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- This QoS policy is used to partition the data published by a
- DataWriter across multiple
- channels . A channel is defined by a filter expression and a sequence of multicast locators.
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- The PROPERTY QoS policy can be used to associate a set of
- properties in the form of
- (name,value) pairs with a DataReader, DataWriter, or DomainParticipant. This is similar to
- the USER_DATA QoS policy, except this policy uses
- (name, value) pairs, and you can
- select whether or not a particular pair should be propagated
- (included in the built-in topic).
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- The purpose of this QoS is to allow the user to attach naming information to created
- Entity objects.
- It can only be 255 characters in length.
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- Protocol that applies only to DataReader instances.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- Protocol that applies only to DataWriter instances.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- This QoS policy can be used to decrease the amount of
- communication overhead associated
- with the transmission and (in the case of reliable communication) acknowledgment
- of small samples in order to increase throughput.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- The DISCOVERY QoS configures how DomainParticipants discover each other on the
- network.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- The DISCOVERY_CONFIG QoS policy is used to tune the discovery
- process. It controls
- how often to send discovery packets, how to determine when participants are alive or
- dead, and resources used by the discovery mechanism.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- The DOMAIN_PARTICIPANT_RESOURCE_LIMITS QoS policy configures
- the
- resources used by a DomainParticipant. Many of these resources are used by the internal
- RTI Connext database to store information about locally and remotely
- created DDS Entities. Some of the parameters configure the data structures used to
- search through the database efficiently. Finally, there are parameters that limit the sizes
- of variable-length data fields.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- The WIRE_PROTOCOL QoS policy configures some Real-Time
- Publish Subscribe
- (RTPS) protocol-related properties for the DomainParticipant. The open RTPS protocol is
- used by RTI Connext to format and interpret messages between Domain-
- Participants.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- The EVENT QoS policy configures the internal RTI Data
- Distribution Service Event thread.
- The purpose of the Event thread is described in Event Thread.
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- The RECEIVER_POOL QoS policy configures the internal RTI Data
- Distribution Service
- thread used to process the data received from a transport.
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- Built-in topic reader's resource limits.
- Defines the resources that can be used for a built-in-topic data reader.
- A built-in topic data reader subscribes reliably to built-in topics containing
- declarations of new entities or updates to existing entities in the domain.
- Keys are used to differentiate among entities of the same type.
- RTI Connext assigns a unique key to each entity in a domain.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- This QoS policy is used to enable or disable asynchronous
- publishing and asynchronous
- batch flushing for the Publisher.
- If enabled, the Publisher will spawn two threads, one for asynchronous publishing and
- one for asynchronous batch flushing.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- The DATABASE QoS policy configures the internal "database"
- (thread and data structures)
- used by RTI Connext to hold information about locally created
- DDS entities and remote entities that are discovered through the discovery process.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- This QoS policy controls the creation and use of Exclusive
- Areas. An exclusive area (EA)
- is a mutex with built-in deadlock protection when multiple EAs are in use. It is used to
- provide mutual exclusion among different threads of execution. Multiple EAs allow
- greater concurrency by the internal and user threads when executing RTI Data Distribution
- Service code.
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- The TRANSPORT_BUILTIN QoS policy specifies which built-in
- transports can be used
- by the DomainParticipant. RTI Connext provides two built-in transports,
- UDPv4 and shared memory. UDPv4 uses the IPv4 UDP protocol to send and receive
- messages. The shared memory transport uses system shared memory for inter-process
- communications.
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- The TRANSPORT_SELECTION QoS policy allows you to select the
- transports that have
- been installed with the DomainParticipant to be used by the DataWriter or DataReader.
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- The TRANSPORT_UNICAST QoS policy allows you to specify
- unicast network
- addresses to be used by DomainParticipant, DataWriters and DataReaders for receiving
- messages. DomainParticipants receive messages to support the discovery process.
- DataWriters may receive ACK/NACK messages to support the reliable protocol.
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- The MULTICAST_MAPPING QoS policy allows you to specify
- a list of multicast addresses
- to be used by DataReaders for receiving
- messages. The address is choosed using the topicname.
-
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- This QoS policy allows you to specify network multicast
- addresses to be used by
- DataWriters when sending data samples to this DataReader.
-
-
-
-
-
-
-
-
-
-
-
-
- <DISALLOW_TYPE_COERCION|ALLOW_TYPE_COERCION>
-
-
-
-
-
-
-
- The DataWriter and the DataReader must support the same data type
- in order for them to communicate.
-
-
-
-
-
-
- The DataWriter and the DataReader need not support the same data type
- in order for them to communicate as long as the reader’s type is assignable from the writer’s type
-
-
-
-
-
-
-
-
-
- The Type Consistency Enforcement QoS Policy defines the rules for determining whether the type used
- to publish a given data stream is consistent with that used to subscribe to it.
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- This QoS policy allows you to associate encapsulation formats
- to transport destinations.
-
-
-
-
-
-
-
-
-
-
-
- <<RTI Extension>>
- The Logging QoS policy configures the NDDS Config Logger.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- QoS policies related to DomainParticipants.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- QoS policies related to DomainParticipantFactory.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- QoS policies related to Publishers.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- QoS policies related to Subscribers.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- QoS policies related to Topics.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- QoS policies related to DataReaders.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- QoS policies related to DataWriters.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This profile groups the QoS policies related to DomainParticipants.
-
-
-
-
-
-
-
-
-
-
-
-
- This profile groups the QoS policies related to DomainParticipantFactory.
-
-
-
-
-
-
-
-
-
-
-
-
- This profile groups the QoS policies related to Topics.
-
-
-
-
-
-
-
-
-
-
-
-
- This profile groups the QoS policies related to Publishers.
-
-
-
-
-
-
-
-
-
-
-
-
- This profile groups the QoS policies related to Subscribers.
-
-
-
-
-
-
-
-
-
-
-
-
- This profile groups the QoS policies related to DataWriters.
-
-
-
-
-
-
-
-
-
-
-
-
- This profile groups the QoS policies related to DataReaders.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This profile groups the QoS policies related to DomainParticipants.
-
-
-
-
-
-
-
-
-
-
-
-
- This profile groups the QoS policies related to DomainParticipantFactory.
-
-
-
-
-
-
-
-
-
-
-
-
- This profile groups the QoS policies related to Topics.
-
-
-
-
-
-
-
-
-
-
-
-
- This profile groups the QoS policies related to Publishers.
-
-
-
-
-
-
-
-
-
-
-
-
- This profile groups the QoS policies related to Subscribers.
-
-
-
-
-
-
-
-
-
-
-
-
- This profile groups the QoS policies related to DataWriters.
-
-
-
-
-
-
-
-
-
-
-
-
- This profile groups the QoS policies related to DataReaders.
-
-
-
-
-
-
-
-
-
-
-
-
- A QoS profile groups a set of related QoS.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The Qos Library provides a way to group a set of related QoS under a namespace.
- The Qos inside a library are further organized into Qos Profiles.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Enumeration type for the specification of Distributed Logger's filter level.
-
-
-
-
- Silent filter level
-
-
-
- Fatal filter level
-
-
-
- Severe filter level
-
-
-
- Error filter level
-
-
-
- Warning filter level
-
-
-
- Notice filter level
-
-
-
- Info filter level
-
-
-
- Debug filter level
-
-
-
- Trace filter level
-
-
-
-
-
-
-
- Main type for the definition of Distributed Logger configuration.
-
-
-
-
-
- The filter level to apply to the log messages.
-
-
-
-
-
-
- Whether the remote administration of Distributed
- Logger is active (true) or not (false).
-
-
-
-
-
-
- Thread settings for Distributed Logger.
-
-
-
-
-
- Size of the Distributed Logger queue for incoming log messages to be written.
-
-
-
-
-