summaryrefslogtreecommitdiff
path: root/dds_io_pub
diff options
context:
space:
mode:
Diffstat (limited to 'dds_io_pub')
-rw-r--r--dds_io_pub/.cproject946
-rw-r--r--dds_io_pub/.project82
-rw-r--r--dds_io_pub/IOTest.idl12
-rw-r--r--dds_io_pub/IOTestC.cpp254
-rw-r--r--dds_io_pub/IOTestC.h168
-rw-r--r--dds_io_pub/IOTestC.inl28
-rw-r--r--dds_io_pub/IOTestS.cpp73
-rw-r--r--dds_io_pub/IOTestS.h63
-rw-r--r--dds_io_pub/IOTestS.inl28
-rw-r--r--dds_io_pub/PortTypeSupport.idl162
-rw-r--r--dds_io_pub/PortTypeSupportC.cpp902
-rw-r--r--dds_io_pub/PortTypeSupportC.h654
-rw-r--r--dds_io_pub/PortTypeSupportC.inl28
-rw-r--r--dds_io_pub/PortTypeSupportI.cpp454
-rw-r--r--dds_io_pub/PortTypeSupportI.h359
-rw-r--r--dds_io_pub/PortTypeSupportImpl.cpp1939
-rw-r--r--dds_io_pub/PortTypeSupportImpl.h493
-rw-r--r--dds_io_pub/PortTypeSupportS.cpp73
-rw-r--r--dds_io_pub/PortTypeSupportS.h64
-rw-r--r--dds_io_pub/PortTypeSupportS.inl28
-rw-r--r--dds_io_pub/Writer.cpp146
-rw-r--r--dds_io_pub/Writer.h36
-rw-r--r--dds_io_pub/dds_io_pub.cpp218
-rw-r--r--dds_io_pub/pub.ini107
-rw-r--r--dds_io_pub/pub_start.sh1
-rw-r--r--dds_io_pub/tcp.conf1
26 files changed, 7319 insertions, 0 deletions
diff --git a/dds_io_pub/.cproject b/dds_io_pub/.cproject
new file mode 100644
index 0000000..7a63b9c
--- /dev/null
+++ b/dds_io_pub/.cproject
@@ -0,0 +1,946 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?fileVersion 4.0.0?>
+
+<cproject>
+<storageModule moduleId="org.eclipse.cdt.core.settings">
+<cconfiguration id="cdt.managedbuild.config.gnu.exe.debug.785718917">
+<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.785718917" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<configuration artifactExtension="" artifactName="dds_io_pub" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.785718917" name="Debug" parent="cdt.managedbuild.config.gnu.exe.debug">
+<folderInfo id="cdt.managedbuild.config.gnu.exe.debug.785718917." name="/" resourcePath="">
+<toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.2014795098" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.debug">
+<targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug.1670171396" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/>
+<builder buildPath="${workspace_loc:/dds_io_pub/Debug}" id="cdt.managedbuild.target.gnu.builder.exe.debug.2001210179" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.debug"/>
+<tool id="cdt.managedbuild.tool.gnu.archiver.base.941638645" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
+<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1850027683" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug">
+<option id="gnu.cpp.compiler.exe.debug.option.optimization.level.930436287" name="Optimization Level" superClass="gnu.cpp.compiler.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+<option id="gnu.cpp.compiler.exe.debug.option.debugging.level.2131694248" name="Debug Level" superClass="gnu.cpp.compiler.exe.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+<option id="gnu.cpp.compiler.option.include.paths.1252470691" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="/opt/ACE_wrappers/ace"/>
+<listOptionValue builtIn="false" value="/opt/ACE_wrappers/TAO"/>
+<listOptionValue builtIn="false" value="/opt/ACE_wrappers"/>
+<listOptionValue builtIn="false" value="/opt/DDS"/>
+</option>
+<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1276667085" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug.2044902302" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.debug">
+<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.exe.debug.option.optimization.level.1786513356" name="Optimization Level" superClass="gnu.c.compiler.exe.debug.option.optimization.level" valueType="enumerated"/>
+<option id="gnu.c.compiler.exe.debug.option.debugging.level.301727690" name="Debug Level" superClass="gnu.c.compiler.exe.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.504211970" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.c.linker.exe.debug.866532711" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.debug"/>
+<tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.1551615042" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug">
+<option id="gnu.cpp.link.option.paths.2141407423" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+<listOptionValue builtIn="false" value="/opt/DDS/lib"/>
+<listOptionValue builtIn="false" value="/opt/ACE_wrappers/lib"/>
+</option>
+<option id="gnu.cpp.link.option.libs.1688421542" superClass="gnu.cpp.link.option.libs" valueType="libs">
+<listOptionValue builtIn="false" value="OpenDDS_Dcps"/>
+<listOptionValue builtIn="false" value="ReliableMulticast"/>
+<listOptionValue builtIn="false" value="SimpleTcp"/>
+<listOptionValue builtIn="false" value="SimpleUnreliableDgram"/>
+</option>
+<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1697181140" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+</inputType>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.assembler.exe.debug.1022663456" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.debug">
+<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1914401144" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+</tool>
+</toolChain>
+</folderInfo>
+</configuration>
+</storageModule>
+<storageModule moduleId="scannerConfiguration">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.1771703362;cdt.managedbuild.config.gnu.exe.release.1771703362.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.1993375111;cdt.managedbuild.tool.gnu.cpp.compiler.input.1285080939">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.785718917;cdt.managedbuild.config.gnu.exe.debug.785718917.;cdt.managedbuild.tool.gnu.c.compiler.exe.debug.2044902302;cdt.managedbuild.tool.gnu.c.compiler.input.504211970">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.785718917;cdt.managedbuild.config.gnu.exe.debug.785718917.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1850027683;cdt.managedbuild.tool.gnu.cpp.compiler.input.1276667085">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.1771703362;cdt.managedbuild.config.gnu.exe.release.1771703362.;cdt.managedbuild.tool.gnu.c.compiler.exe.release.1729920616;cdt.managedbuild.tool.gnu.c.compiler.input.1083087515">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
+</cconfiguration>
+<cconfiguration id="cdt.managedbuild.config.gnu.exe.release.1771703362">
+<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.release.1771703362" moduleId="org.eclipse.cdt.core.settings" name="Release">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<configuration artifactName="dds_io_pub" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.release.1771703362" name="Release" parent="cdt.managedbuild.config.gnu.exe.release">
+<folderInfo id="cdt.managedbuild.config.gnu.exe.release.1771703362." name="/" resourcePath="">
+<toolChain id="cdt.managedbuild.toolchain.gnu.exe.release.2053373758" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.release">
+<targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.release.796653801" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.release"/>
+<builder buildPath="${workspace_loc:/dds_io_pub/Release}" id="cdt.managedbuild.target.gnu.builder.exe.release.1673676494" managedBuildOn="true" name="Gnu Make Builder.Release" superClass="cdt.managedbuild.target.gnu.builder.exe.release"/>
+<tool id="cdt.managedbuild.tool.gnu.archiver.base.1578829965" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
+<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.1993375111" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release">
+<option id="gnu.cpp.compiler.exe.release.option.optimization.level.164079896" superClass="gnu.cpp.compiler.exe.release.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+<option id="gnu.cpp.compiler.exe.release.option.debugging.level.401311742" superClass="gnu.cpp.compiler.exe.release.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
+<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1285080939" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.release.1729920616" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.release">
+<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.exe.release.option.optimization.level.1474329134" superClass="gnu.c.compiler.exe.release.option.optimization.level" valueType="enumerated"/>
+<option id="gnu.c.compiler.exe.release.option.debugging.level.1297133667" superClass="gnu.c.compiler.exe.release.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
+<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1083087515" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.c.linker.exe.release.676079758" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.release"/>
+<tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.release.97756512" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.release">
+<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.160487661" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+</inputType>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.assembler.exe.release.460322673" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.release">
+<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1367163930" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+</tool>
+</toolChain>
+</folderInfo>
+</configuration>
+</storageModule>
+<storageModule moduleId="scannerConfiguration">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.1771703362;cdt.managedbuild.config.gnu.exe.release.1771703362.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.1993375111;cdt.managedbuild.tool.gnu.cpp.compiler.input.1285080939">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.785718917;cdt.managedbuild.config.gnu.exe.debug.785718917.;cdt.managedbuild.tool.gnu.c.compiler.exe.debug.2044902302;cdt.managedbuild.tool.gnu.c.compiler.input.504211970">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.785718917;cdt.managedbuild.config.gnu.exe.debug.785718917.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1850027683;cdt.managedbuild.tool.gnu.cpp.compiler.input.1276667085">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.1771703362;cdt.managedbuild.config.gnu.exe.release.1771703362.;cdt.managedbuild.tool.gnu.c.compiler.exe.release.1729920616;cdt.managedbuild.tool.gnu.c.compiler.input.1083087515">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="false" filePath=""/>
+<parser enabled="false"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
+</cconfiguration>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<project id="dds_io_pub.cdt.managedbuild.target.gnu.exe.94856057" name="Executable" projectType="cdt.managedbuild.target.gnu.exe"/>
+</storageModule>
+</cproject>
diff --git a/dds_io_pub/.project b/dds_io_pub/.project
new file mode 100644
index 0000000..c9a9c66
--- /dev/null
+++ b/dds_io_pub/.project
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>dds_io_pub</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.fullBuildTarget</key>
+ <value>all</value>
+ </dictionary>
+ <dictionary>
+ <key>?name?</key>
+ <value></value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+ <value>false</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildLocation</key>
+ <value>${workspace_loc:/dds_io_pub/Debug}</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableFullBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
+ <value>clean</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.append_environment</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.contents</key>
+ <value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildArguments</key>
+ <value></value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildCommand</key>
+ <value>make</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.autoBuildTarget</key>
+ <value>all</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.stopOnError</key>
+ <value>true</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+ <nature>org.eclipse.cdt.core.ccnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+ </natures>
+</projectDescription>
diff --git a/dds_io_pub/IOTest.idl b/dds_io_pub/IOTest.idl
new file mode 100644
index 0000000..82f4025
--- /dev/null
+++ b/dds_io_pub/IOTest.idl
@@ -0,0 +1,12 @@
+module IOTest{
+
+#pragma DCPS_DATA_TYPE "IOTest::Port"
+#pragma DCPS_DATA_KEY "IOTest::Port no"
+
+ struct Port {
+ long no;
+ long value;
+ };
+
+};
+
diff --git a/dds_io_pub/IOTestC.cpp b/dds_io_pub/IOTestC.cpp
new file mode 100644
index 0000000..03b24b1
--- /dev/null
+++ b/dds_io_pub/IOTestC.cpp
@@ -0,0 +1,254 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler ****
+// TAO and the TAO IDL Compiler have been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// and
+// Distributed Object Computing Laboratory
+// University of California at Irvine
+// Irvine, CA
+// USA
+// http://doc.ece.uci.edu/
+// and
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about TAO is available at:
+// http://www.cs.wustl.edu/~schmidt/TAO.html
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:381
+
+
+#include "IOTestC.h"
+#include "tao/AnyTypeCode/Null_RefCount_Policy.h"
+#include "tao/AnyTypeCode/TypeCode_Constants.h"
+#include "tao/AnyTypeCode/Alias_TypeCode_Static.h"
+#include "tao/AnyTypeCode/Struct_TypeCode_Static.h"
+#include "tao/AnyTypeCode/TypeCode_Struct_Field.h"
+#include "tao/CDR.h"
+#include "tao/CDR.h"
+#include "tao/AnyTypeCode/Any_Dual_Impl_T.h"
+
+#if !defined (__ACE_INLINE__)
+#include "IOTestC.inl"
+#endif /* !defined INLINE */
+
+// TAO_IDL - Generated from
+// be/be_visitor_arg_traits.cpp:72
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+
+// Arg traits specializations.
+namespace TAO
+{
+}
+
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_typecode/struct_typecode.cpp:84
+
+static TAO::TypeCode::Struct_Field<
+ char const *,
+ ::CORBA::TypeCode_ptr const *> const
+ _tao_fields_IOTest_Port[] =
+ {
+ { "no", &CORBA::_tc_long },
+ { "value", &CORBA::_tc_long }
+ };
+
+static TAO::TypeCode::Struct<
+ char const *,
+ ::CORBA::TypeCode_ptr const *,
+ TAO::TypeCode::Struct_Field<
+ char const *,
+ ::CORBA::TypeCode_ptr const *> const *,
+ TAO::Null_RefCount_Policy>
+_tao_tc_IOTest_Port (
+ ::CORBA::tk_struct,
+ "IDL:IOTest/Port:1.0",
+ "Port",
+ _tao_fields_IOTest_Port,
+ 2);
+
+namespace IOTest
+{
+ ::CORBA::TypeCode_ptr const _tc_Port =
+ &_tao_tc_IOTest_Port;
+}
+
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_structure/structure_cs.cpp:66
+
+void
+IOTest::Port::_tao_any_destructor (
+ void *_tao_void_pointer
+ )
+{
+ Port *_tao_tmp_pointer =
+ static_cast<Port *> (_tao_void_pointer);
+ delete _tao_tmp_pointer;
+}
+
+// TAO_IDL - Generated from
+// be/be_visitor_structure/any_op_cs.cpp:54
+
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+// Copying insertion.
+void operator<<= (
+ ::CORBA::Any &_tao_any,
+ const IOTest::Port &_tao_elem
+ )
+{
+ if (0 == &_tao_elem) // Trying to de-reference NULL object
+ _tao_any <<= static_cast<IOTest::Port *>( 0 ); // Use non-copying insertion of a NULL
+ else
+ TAO::Any_Dual_Impl_T<IOTest::Port>::insert_copy (
+ _tao_any,
+ IOTest::Port::_tao_any_destructor,
+ IOTest::_tc_Port,
+ _tao_elem
+ );
+}
+
+// Non-copying insertion.
+void operator<<= (
+ ::CORBA::Any &_tao_any,
+ IOTest::Port *_tao_elem
+ )
+{
+ TAO::Any_Dual_Impl_T<IOTest::Port>::insert (
+ _tao_any,
+ IOTest::Port::_tao_any_destructor,
+ IOTest::_tc_Port,
+ _tao_elem
+ );
+}
+
+// Extraction to non-const pointer (deprecated).
+::CORBA::Boolean operator>>= (
+ const ::CORBA::Any &_tao_any,
+ IOTest::Port *&_tao_elem
+ )
+{
+ return _tao_any >>= const_cast<
+ const IOTest::Port *&> (
+ _tao_elem
+ );
+}
+
+// Extraction to const pointer.
+::CORBA::Boolean operator>>= (
+ const ::CORBA::Any &_tao_any,
+ const IOTest::Port *&_tao_elem
+ )
+{
+ return
+ TAO::Any_Dual_Impl_T<IOTest::Port>::extract (
+ _tao_any,
+ IOTest::Port::_tao_any_destructor,
+ IOTest::_tc_Port,
+ _tao_elem
+ );
+}
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_structure/cdr_op_cs.cpp:61
+
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+::CORBA::Boolean operator<< (
+ TAO_OutputCDR &strm,
+ const IOTest::Port &_tao_aggregate
+ )
+{
+ return
+ (strm << _tao_aggregate.no) &&
+ (strm << _tao_aggregate.value);
+}
+
+::CORBA::Boolean operator>> (
+ TAO_InputCDR &strm,
+ IOTest::Port &_tao_aggregate
+ )
+{
+ return
+ (strm >> _tao_aggregate.no) &&
+ (strm >> _tao_aggregate.value);
+}
+
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_structure/serializer_op_cs.cpp:61
+
+::CORBA::Boolean _dcps_has_key (const IOTest::Port& ) {
+ return true;
+}
+size_t _dcps_max_marshaled_size (const IOTest::Port& _tao_aggregate)
+{
+ ACE_UNUSED_ARG (_tao_aggregate); // sometimes not used - avoid warning
+ return
+ _dcps_max_marshaled_size (_tao_aggregate.no) +
+ _dcps_max_marshaled_size (_tao_aggregate.value);
+}
+
+::CORBA::Boolean _tao_is_bounded_size (const IOTest::Port& _tao_aggregate)
+{
+ ACE_UNUSED_ARG (_tao_aggregate); // often not used - avoid warning
+ return
+ true &&
+ true ;
+}
+
+size_t _dcps_find_size(const IOTest::Port& _tao_aggregate)
+{
+ ACE_UNUSED_ARG(_tao_aggregate); // sometimes not used - avoid warning
+ return
+ _dcps_max_marshaled_size (_tao_aggregate.no) +
+ _dcps_max_marshaled_size (_tao_aggregate.value);
+}
+
+::CORBA::Boolean operator<< (
+ TAO::DCPS::Serializer &strm,
+ const IOTest::Port &_tao_aggregate
+ )
+{
+ return
+ (strm << _tao_aggregate.no) &&
+ (strm << _tao_aggregate.value);
+}
+
+::CORBA::Boolean operator>> (
+ TAO::DCPS::Serializer &strm,
+ IOTest::Port &_tao_aggregate
+ )
+{
+ return
+ (strm >> _tao_aggregate.no) &&
+ (strm >> _tao_aggregate.value);
+}
+
diff --git a/dds_io_pub/IOTestC.h b/dds_io_pub/IOTestC.h
new file mode 100644
index 0000000..3803d83
--- /dev/null
+++ b/dds_io_pub/IOTestC.h
@@ -0,0 +1,168 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler ****
+// TAO and the TAO IDL Compiler have been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// and
+// Distributed Object Computing Laboratory
+// University of California at Irvine
+// Irvine, CA
+// USA
+// http://doc.ece.uci.edu/
+// and
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about TAO is available at:
+// http://www.cs.wustl.edu/~schmidt/TAO.html
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:135
+
+#ifndef _TAO_IDL_IOTESTC_H_
+#define _TAO_IDL_IOTESTC_H_
+
+
+#include /**/ "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+#include "tao/AnyTypeCode/AnyTypeCode_methods.h"
+#include "tao/ORB.h"
+#include "tao/Basic_Types.h"
+#include "dds/DCPS/Serializer.h"
+#include "tao/VarOut_T.h"
+#include /**/ "tao/Versioned_Namespace.h"
+
+#if defined (TAO_EXPORT_MACRO)
+#undef TAO_EXPORT_MACRO
+#endif
+#define TAO_EXPORT_MACRO
+
+// TAO_IDL - Generated from
+// be/be_visitor_module/module_ch.cpp:49
+
+namespace IOTest
+{
+
+ // TAO_IDL - Generated from
+ // be/be_type.cpp:269
+
+ struct Port;
+
+ typedef
+ TAO_Fixed_Var_T<
+ Port
+ >
+ Port_var;
+
+ typedef
+ Port &
+ Port_out;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_structure/structure_ch.cpp:57
+
+ struct Port
+ {
+ typedef Port_var _var_type;
+ typedef Port_out _out_type;
+
+ static void _tao_any_destructor (void *);
+ ::CORBA::Long no;
+ ::CORBA::Long value;
+ };
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_typecode/typecode_decl.cpp:49
+
+ extern ::CORBA::TypeCode_ptr const _tc_Port;
+
+// TAO_IDL - Generated from
+// be/be_visitor_module/module_ch.cpp:78
+
+} // module IOTest
+
+// TAO_IDL - Generated from
+// be/be_visitor_traits.cpp:64
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+// Traits specializations.
+namespace TAO
+{
+}
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_structure/any_op_ch.cpp:53
+
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+ void operator<<= (::CORBA::Any &, const IOTest::Port &); // copying version
+ void operator<<= (::CORBA::Any &, IOTest::Port*); // noncopying version
+ ::CORBA::Boolean operator>>= (const ::CORBA::Any &, IOTest::Port *&); // deprecated
+ ::CORBA::Boolean operator>>= (const ::CORBA::Any &, const IOTest::Port *&);
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_structure/cdr_op_ch.cpp:54
+
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+ ::CORBA::Boolean operator<< (TAO_OutputCDR &, const IOTest::Port &);
+ ::CORBA::Boolean operator>> (TAO_InputCDR &, IOTest::Port &);
+
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_structure/serializer_op_ch.cpp:56
+
+ ::CORBA::Boolean _dcps_has_key(const IOTest::Port& val);
+// This structure supports use of std::map with a key
+// defined by one or more #pragma DCPS_DATA_KEY lines.
+struct PortKeyLessThan
+{
+ bool operator() (
+ const IOTest::Port& v1,
+ const IOTest::Port& v2) const
+ {
+ return (v1.no < v2.no);
+ }
+};
+
+ size_t _dcps_max_marshaled_size (const IOTest::Port& _tao_aggregate);
+ ::CORBA::Boolean _tao_is_bounded_size (const IOTest::Port& _tao_aggregate);
+ size_t _dcps_find_size (const IOTest::Port& _tao_aggregate);
+ ::CORBA::Boolean operator<< (TAO::DCPS::Serializer &, const IOTest::Port &);
+ ::CORBA::Boolean operator>> (TAO::DCPS::Serializer &, IOTest::Port &);
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:1219
+#if defined (__ACE_INLINE__)
+#include "IOTestC.inl"
+#endif /* defined INLINE */
+
+#endif /* ifndef */
+
+
diff --git a/dds_io_pub/IOTestC.inl b/dds_io_pub/IOTestC.inl
new file mode 100644
index 0000000..38aa325
--- /dev/null
+++ b/dds_io_pub/IOTestC.inl
@@ -0,0 +1,28 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler ****
+// TAO and the TAO IDL Compiler have been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// and
+// Distributed Object Computing Laboratory
+// University of California at Irvine
+// Irvine, CA
+// USA
+// http://doc.ece.uci.edu/
+// and
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about TAO is available at:
+// http://www.cs.wustl.edu/~schmidt/TAO.html
+
+
diff --git a/dds_io_pub/IOTestS.cpp b/dds_io_pub/IOTestS.cpp
new file mode 100644
index 0000000..f1c0a06
--- /dev/null
+++ b/dds_io_pub/IOTestS.cpp
@@ -0,0 +1,73 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler ****
+// TAO and the TAO IDL Compiler have been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// and
+// Distributed Object Computing Laboratory
+// University of California at Irvine
+// Irvine, CA
+// USA
+// http://doc.ece.uci.edu/
+// and
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about TAO is available at:
+// http://www.cs.wustl.edu/~schmidt/TAO.html
+
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:703
+
+#ifndef _TAO_IDL_IOTESTS_CPP_
+#define _TAO_IDL_IOTESTS_CPP_
+
+
+#include "IOTestS.h"
+
+#if !defined (__ACE_INLINE__)
+#include "IOTestS.inl"
+#endif /* !defined INLINE */
+
+// TAO_IDL - Generated from
+// be/be_visitor_arg_traits.cpp:72
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+
+// Arg traits specializations.
+namespace TAO
+{
+}
+
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_arg_traits.cpp:72
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+
+// Arg traits specializations.
+namespace TAO
+{
+}
+
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+#endif /* ifndef */
+
diff --git a/dds_io_pub/IOTestS.h b/dds_io_pub/IOTestS.h
new file mode 100644
index 0000000..44fb047
--- /dev/null
+++ b/dds_io_pub/IOTestS.h
@@ -0,0 +1,63 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler ****
+// TAO and the TAO IDL Compiler have been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// and
+// Distributed Object Computing Laboratory
+// University of California at Irvine
+// Irvine, CA
+// USA
+// http://doc.ece.uci.edu/
+// and
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about TAO is available at:
+// http://www.cs.wustl.edu/~schmidt/TAO.html
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:487
+
+#ifndef _TAO_IDL_IOTESTS_H_
+#define _TAO_IDL_IOTESTS_H_
+
+
+#include "IOTestC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_module/module_sh.cpp:49
+
+namespace POA_IOTest
+{
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_module/module_sh.cpp:80
+
+} // module IOTest
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:1281
+
+
+#if defined (__ACE_INLINE__)
+#include "IOTestS.inl"
+#endif /* defined INLINE */
+
+#endif /* ifndef */
+
diff --git a/dds_io_pub/IOTestS.inl b/dds_io_pub/IOTestS.inl
new file mode 100644
index 0000000..38aa325
--- /dev/null
+++ b/dds_io_pub/IOTestS.inl
@@ -0,0 +1,28 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler ****
+// TAO and the TAO IDL Compiler have been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// and
+// Distributed Object Computing Laboratory
+// University of California at Irvine
+// Irvine, CA
+// USA
+// http://doc.ece.uci.edu/
+// and
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about TAO is available at:
+// http://www.cs.wustl.edu/~schmidt/TAO.html
+
+
diff --git a/dds_io_pub/PortTypeSupport.idl b/dds_io_pub/PortTypeSupport.idl
new file mode 100644
index 0000000..dd4f75d
--- /dev/null
+++ b/dds_io_pub/PortTypeSupport.idl
@@ -0,0 +1,162 @@
+
+// $Id: IDLTemplate.pm 899 2007-07-05 16:36:52Z mitza $
+
+// Generated by dcps_ts.pl
+
+#include "dds/DdsDcpsInfrastructure.idl"
+#include "dds/DdsDcpsTopic.idl"
+#include "dds/DdsDcpsPublication.idl"
+#include "dds/DdsDcpsSubscription.idl"
+#include "dds/DdsDcpsTypeSupportExt.idl"
+
+#include "IOTest.idl"
+
+module IOTest {
+
+
+#pragma DCPS_SUPPORT_ZERO_COPY_READ
+#pragma DCPS_GEN_ZERO_COPY_READ
+//typedef sequence<IOTest::Port> PortSeq;
+native PortSeq;
+
+/** Support topic registartion for Port data type.
+ *
+ * See the DDS specification, OMG formal/04-12-02, for a description of
+ * this interface.
+ */
+local interface PortTypeSupport : OpenDDS::DCPS::TypeSupport {
+ DDS::ReturnCode_t register_type(
+ in DDS::DomainParticipant participant,
+ in string type_name);
+};
+
+/** DataWriter interface for Port data type.
+ *
+ * See the DDS specification, OMG formal/04-12-02, for a description of
+ * this interface.
+ */
+local interface PortDataWriter : DDS::DataWriter {
+ DDS::InstanceHandle_t register(
+ in IOTest::Port instance_data);
+
+ DDS::InstanceHandle_t register_w_timestamp(
+ in IOTest::Port instance_data,
+ in DDS::InstanceHandle_t handle,
+ in DDS::Time_t source_timestamp);
+
+ DDS::ReturnCode_t unregister(
+ in IOTest::Port instance_data,
+ in DDS::InstanceHandle_t handle);
+
+ DDS::ReturnCode_t unregister_w_timestamp(
+ in IOTest::Port instance_data,
+ in DDS::InstanceHandle_t handle,
+ in DDS::Time_t source_timestamp);
+
+ //WARNING: If the handle is non-nil and the instance is not registered
+ // then this operation may cause an access violation.
+ // This lack of safety helps performance.
+ DDS::ReturnCode_t write(
+ in IOTest::Port instance_data,
+ in DDS::InstanceHandle_t handle);
+
+ //WARNING: If the handle is non-nil and the instance is not registered
+ // then this operation may cause an access violation.
+ // This lack of safety helps performance.
+ DDS::ReturnCode_t write_w_timestamp(
+ in IOTest::Port instance_data,
+ in DDS::InstanceHandle_t handle,
+ in DDS::Time_t source_timestamp);
+
+ DDS::ReturnCode_t dispose(
+ in IOTest::Port instance_data,
+ in DDS::InstanceHandle_t instance_handle);
+
+ DDS::ReturnCode_t dispose_w_timestamp(
+ in IOTest::Port instance_data,
+ in DDS::InstanceHandle_t instance_handle,
+ in DDS::Time_t source_timestamp);
+
+ DDS::ReturnCode_t get_key_value(
+ inout IOTest::Port key_holder,
+ in DDS::InstanceHandle_t handle);
+};
+
+/** DataReader interface for Port data type.
+ *
+ * See the DDS specification, OMG formal/04-12-02, for a description of
+ * this interface.
+ */
+local interface PortDataReader : DDS::DataReader {
+ DDS::ReturnCode_t read(
+ inout PortSeq received_data,
+ inout DDS::SampleInfoSeq info_seq,
+ in long max_samples,
+ in DDS::SampleStateMask sample_states,
+ in DDS::ViewStateMask view_states,
+ in DDS::InstanceStateMask instance_states);
+
+ DDS::ReturnCode_t take(
+ inout PortSeq received_data,
+ inout DDS::SampleInfoSeq info_seq,
+ in long max_samples,
+ in DDS::SampleStateMask sample_states,
+ in DDS::ViewStateMask view_states,
+ in DDS::InstanceStateMask instance_states);
+
+ DDS::ReturnCode_t read_next_sample(
+ inout IOTest::Port received_data,
+ inout DDS::SampleInfo sample_info);
+
+ DDS::ReturnCode_t take_next_sample(
+ inout IOTest::Port received_data,
+ inout DDS::SampleInfo sample_info);
+
+ DDS::ReturnCode_t read_instance(
+ inout PortSeq received_data,
+ inout DDS::SampleInfoSeq info_seq,
+ in long max_samples,
+ in DDS::InstanceHandle_t a_handle,
+ in DDS::SampleStateMask sample_states,
+ in DDS::ViewStateMask view_states,
+ in DDS::InstanceStateMask instance_states);
+
+ DDS::ReturnCode_t take_instance(
+ inout PortSeq received_data,
+ inout DDS::SampleInfoSeq info_seq,
+ in long max_samples,
+ in DDS::InstanceHandle_t a_handle,
+ in DDS::SampleStateMask sample_states,
+ in DDS::ViewStateMask view_states,
+ in DDS::InstanceStateMask instance_states);
+
+ DDS::ReturnCode_t read_next_instance(
+ inout PortSeq received_data,
+ inout DDS::SampleInfoSeq info_seq,
+ in long max_samples,
+ in DDS::InstanceHandle_t a_handle,
+ in DDS::SampleStateMask sample_states,
+ in DDS::ViewStateMask view_states,
+ in DDS::InstanceStateMask instance_states);
+
+ DDS::ReturnCode_t take_next_instance(
+ inout PortSeq received_data,
+ inout DDS::SampleInfoSeq info_seq,
+ in long max_samples,
+ in DDS::InstanceHandle_t a_handle,
+ in DDS::SampleStateMask sample_states,
+ in DDS::ViewStateMask view_states,
+ in DDS::InstanceStateMask instance_states);
+
+ DDS::ReturnCode_t return_loan(
+ inout PortSeq received_data,
+ inout DDS::SampleInfoSeq info_seq);
+
+ DDS::ReturnCode_t get_key_value(
+ inout IOTest::Port key_holder,
+ in DDS::InstanceHandle_t handle);
+};
+
+};
+
+
diff --git a/dds_io_pub/PortTypeSupportC.cpp b/dds_io_pub/PortTypeSupportC.cpp
new file mode 100644
index 0000000..c20cc82
--- /dev/null
+++ b/dds_io_pub/PortTypeSupportC.cpp
@@ -0,0 +1,902 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler ****
+// TAO and the TAO IDL Compiler have been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// and
+// Distributed Object Computing Laboratory
+// University of California at Irvine
+// Irvine, CA
+// USA
+// http://doc.ece.uci.edu/
+// and
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about TAO is available at:
+// http://www.cs.wustl.edu/~schmidt/TAO.html
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:381
+
+
+#include "PortTypeSupportC.h"
+#include "tao/AnyTypeCode/Null_RefCount_Policy.h"
+#include "tao/AnyTypeCode/TypeCode_Constants.h"
+#include "tao/AnyTypeCode/Alias_TypeCode_Static.h"
+#include "tao/AnyTypeCode/Objref_TypeCode_Static.h"
+#include "tao/AnyTypeCode/String_TypeCode_Static.h"
+#include "tao/AnyTypeCode/Struct_TypeCode_Static.h"
+#include "tao/AnyTypeCode/TypeCode_Struct_Field.h"
+#include "tao/CDR.h"
+#include "tao/CDR.h"
+#include "tao/AnyTypeCode/Any.h"
+#include "tao/AnyTypeCode/Any_Impl_T.h"
+#include "tao/AnyTypeCode/Any_Dual_Impl_T.h"
+#include "ace/OS_NS_string.h"
+
+#if !defined (__ACE_INLINE__)
+#include "PortTypeSupportC.inl"
+#endif /* !defined INLINE */
+
+// TAO_IDL - Generated from
+// be/be_visitor_arg_traits.cpp:72
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+
+// Arg traits specializations.
+namespace TAO
+{
+}
+
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_interface/interface_cs.cpp:60
+
+// Traits specializations for IOTest::PortTypeSupport.
+
+IOTest::PortTypeSupport_ptr
+TAO::Objref_Traits<IOTest::PortTypeSupport>::duplicate (
+ IOTest::PortTypeSupport_ptr p)
+{
+ return IOTest::PortTypeSupport::_duplicate (p);
+}
+
+void
+TAO::Objref_Traits<IOTest::PortTypeSupport>::release (
+ IOTest::PortTypeSupport_ptr p)
+{
+ ::CORBA::release (p);
+}
+
+IOTest::PortTypeSupport_ptr
+TAO::Objref_Traits<IOTest::PortTypeSupport>::nil (void)
+{
+ return IOTest::PortTypeSupport::_nil ();
+}
+
+::CORBA::Boolean
+TAO::Objref_Traits<IOTest::PortTypeSupport>::marshal (
+ const IOTest::PortTypeSupport_ptr p,
+ TAO_OutputCDR & cdr)
+{
+ return ::CORBA::Object::marshal (p, cdr);
+}
+
+IOTest::PortTypeSupport::PortTypeSupport (void)
+{}
+
+IOTest::PortTypeSupport::~PortTypeSupport (void)
+{}
+
+void
+IOTest::PortTypeSupport::_tao_any_destructor (void *_tao_void_pointer)
+{
+ PortTypeSupport *_tao_tmp_pointer =
+ static_cast<PortTypeSupport *> (_tao_void_pointer);
+ ::CORBA::release (_tao_tmp_pointer);
+}
+
+IOTest::PortTypeSupport_ptr
+IOTest::PortTypeSupport::_narrow (
+ ::CORBA::Object_ptr _tao_objref
+ )
+{
+ return PortTypeSupport::_duplicate (
+ dynamic_cast<PortTypeSupport_ptr> (_tao_objref)
+ );
+}
+
+IOTest::PortTypeSupport_ptr
+IOTest::PortTypeSupport::_unchecked_narrow (
+ ::CORBA::Object_ptr _tao_objref
+ )
+{
+ return PortTypeSupport::_duplicate (
+ dynamic_cast<PortTypeSupport_ptr> (_tao_objref)
+ );
+}
+
+IOTest::PortTypeSupport_ptr
+IOTest::PortTypeSupport::_duplicate (PortTypeSupport_ptr obj)
+{
+ if (! ::CORBA::is_nil (obj))
+ {
+ obj->_add_ref ();
+ }
+
+ return obj;
+}
+
+void
+IOTest::PortTypeSupport::_tao_release (PortTypeSupport_ptr obj)
+{
+ ::CORBA::release (obj);
+}
+
+::CORBA::Boolean
+IOTest::PortTypeSupport::_is_a (const char *value)
+{
+ if (
+ !ACE_OS::strcmp (
+ value,
+ "IDL:DDS/TypeSupport:1.0"
+ ) ||
+ !ACE_OS::strcmp (
+ value,
+ "IDL:OpenDDS/DCPS/TypeSupport:1.0"
+ ) ||
+ !ACE_OS::strcmp (
+ value,
+ "IDL:IOTest/PortTypeSupport:1.0"
+ ) ||
+ !ACE_OS::strcmp (
+ value,
+ "IDL:omg.org/CORBA/LocalObject:1.0"
+ ) ||
+ !ACE_OS::strcmp (
+ value,
+ "IDL:omg.org/CORBA/Object:1.0"
+ )
+ )
+ {
+ return true; // success using local knowledge
+ }
+ else
+ {
+ return false;
+ }
+}
+
+const char* IOTest::PortTypeSupport::_interface_repository_id (void) const
+{
+ return "IDL:IOTest/PortTypeSupport:1.0";
+}
+
+::CORBA::Boolean
+IOTest::PortTypeSupport::marshal (TAO_OutputCDR &)
+{
+ return false;
+}
+
+// TAO_IDL - Generated from
+// be/be_visitor_typecode/objref_typecode.cpp:76
+
+static TAO::TypeCode::Objref<char const *,
+ TAO::Null_RefCount_Policy>
+ _tao_tc_IOTest_PortTypeSupport (
+ ::CORBA::tk_local_interface,
+ "IDL:IOTest/PortTypeSupport:1.0",
+ "PortTypeSupport");
+
+namespace IOTest
+{
+ ::CORBA::TypeCode_ptr const _tc_PortTypeSupport =
+ &_tao_tc_IOTest_PortTypeSupport;
+}
+
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_interface/interface_cs.cpp:60
+
+// Traits specializations for IOTest::PortDataWriter.
+
+IOTest::PortDataWriter_ptr
+TAO::Objref_Traits<IOTest::PortDataWriter>::duplicate (
+ IOTest::PortDataWriter_ptr p)
+{
+ return IOTest::PortDataWriter::_duplicate (p);
+}
+
+void
+TAO::Objref_Traits<IOTest::PortDataWriter>::release (
+ IOTest::PortDataWriter_ptr p)
+{
+ ::CORBA::release (p);
+}
+
+IOTest::PortDataWriter_ptr
+TAO::Objref_Traits<IOTest::PortDataWriter>::nil (void)
+{
+ return IOTest::PortDataWriter::_nil ();
+}
+
+::CORBA::Boolean
+TAO::Objref_Traits<IOTest::PortDataWriter>::marshal (
+ const IOTest::PortDataWriter_ptr p,
+ TAO_OutputCDR & cdr)
+{
+ return ::CORBA::Object::marshal (p, cdr);
+}
+
+IOTest::PortDataWriter::PortDataWriter (void)
+{}
+
+IOTest::PortDataWriter::~PortDataWriter (void)
+{}
+
+void
+IOTest::PortDataWriter::_tao_any_destructor (void *_tao_void_pointer)
+{
+ PortDataWriter *_tao_tmp_pointer =
+ static_cast<PortDataWriter *> (_tao_void_pointer);
+ ::CORBA::release (_tao_tmp_pointer);
+}
+
+IOTest::PortDataWriter_ptr
+IOTest::PortDataWriter::_narrow (
+ ::CORBA::Object_ptr _tao_objref
+ )
+{
+ return PortDataWriter::_duplicate (
+ dynamic_cast<PortDataWriter_ptr> (_tao_objref)
+ );
+}
+
+IOTest::PortDataWriter_ptr
+IOTest::PortDataWriter::_unchecked_narrow (
+ ::CORBA::Object_ptr _tao_objref
+ )
+{
+ return PortDataWriter::_duplicate (
+ dynamic_cast<PortDataWriter_ptr> (_tao_objref)
+ );
+}
+
+IOTest::PortDataWriter_ptr
+IOTest::PortDataWriter::_duplicate (PortDataWriter_ptr obj)
+{
+ if (! ::CORBA::is_nil (obj))
+ {
+ obj->_add_ref ();
+ }
+
+ return obj;
+}
+
+void
+IOTest::PortDataWriter::_tao_release (PortDataWriter_ptr obj)
+{
+ ::CORBA::release (obj);
+}
+
+::CORBA::Boolean
+IOTest::PortDataWriter::_is_a (const char *value)
+{
+ if (
+ !ACE_OS::strcmp (
+ value,
+ "IDL:DDS/Entity:1.0"
+ ) ||
+ !ACE_OS::strcmp (
+ value,
+ "IDL:DDS/DataWriter:1.0"
+ ) ||
+ !ACE_OS::strcmp (
+ value,
+ "IDL:IOTest/PortDataWriter:1.0"
+ ) ||
+ !ACE_OS::strcmp (
+ value,
+ "IDL:omg.org/CORBA/LocalObject:1.0"
+ ) ||
+ !ACE_OS::strcmp (
+ value,
+ "IDL:omg.org/CORBA/Object:1.0"
+ )
+ )
+ {
+ return true; // success using local knowledge
+ }
+ else
+ {
+ return false;
+ }
+}
+
+const char* IOTest::PortDataWriter::_interface_repository_id (void) const
+{
+ return "IDL:IOTest/PortDataWriter:1.0";
+}
+
+::CORBA::Boolean
+IOTest::PortDataWriter::marshal (TAO_OutputCDR &)
+{
+ return false;
+}
+
+// TAO_IDL - Generated from
+// be/be_visitor_typecode/objref_typecode.cpp:76
+
+static TAO::TypeCode::Objref<char const *,
+ TAO::Null_RefCount_Policy>
+ _tao_tc_IOTest_PortDataWriter (
+ ::CORBA::tk_local_interface,
+ "IDL:IOTest/PortDataWriter:1.0",
+ "PortDataWriter");
+
+namespace IOTest
+{
+ ::CORBA::TypeCode_ptr const _tc_PortDataWriter =
+ &_tao_tc_IOTest_PortDataWriter;
+}
+
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_interface/interface_cs.cpp:60
+
+// Traits specializations for IOTest::PortDataReader.
+
+IOTest::PortDataReader_ptr
+TAO::Objref_Traits<IOTest::PortDataReader>::duplicate (
+ IOTest::PortDataReader_ptr p)
+{
+ return IOTest::PortDataReader::_duplicate (p);
+}
+
+void
+TAO::Objref_Traits<IOTest::PortDataReader>::release (
+ IOTest::PortDataReader_ptr p)
+{
+ ::CORBA::release (p);
+}
+
+IOTest::PortDataReader_ptr
+TAO::Objref_Traits<IOTest::PortDataReader>::nil (void)
+{
+ return IOTest::PortDataReader::_nil ();
+}
+
+::CORBA::Boolean
+TAO::Objref_Traits<IOTest::PortDataReader>::marshal (
+ const IOTest::PortDataReader_ptr p,
+ TAO_OutputCDR & cdr)
+{
+ return ::CORBA::Object::marshal (p, cdr);
+}
+
+IOTest::PortDataReader::PortDataReader (void)
+{}
+
+IOTest::PortDataReader::~PortDataReader (void)
+{}
+
+void
+IOTest::PortDataReader::_tao_any_destructor (void *_tao_void_pointer)
+{
+ PortDataReader *_tao_tmp_pointer =
+ static_cast<PortDataReader *> (_tao_void_pointer);
+ ::CORBA::release (_tao_tmp_pointer);
+}
+
+IOTest::PortDataReader_ptr
+IOTest::PortDataReader::_narrow (
+ ::CORBA::Object_ptr _tao_objref
+ )
+{
+ return PortDataReader::_duplicate (
+ dynamic_cast<PortDataReader_ptr> (_tao_objref)
+ );
+}
+
+IOTest::PortDataReader_ptr
+IOTest::PortDataReader::_unchecked_narrow (
+ ::CORBA::Object_ptr _tao_objref
+ )
+{
+ return PortDataReader::_duplicate (
+ dynamic_cast<PortDataReader_ptr> (_tao_objref)
+ );
+}
+
+IOTest::PortDataReader_ptr
+IOTest::PortDataReader::_duplicate (PortDataReader_ptr obj)
+{
+ if (! ::CORBA::is_nil (obj))
+ {
+ obj->_add_ref ();
+ }
+
+ return obj;
+}
+
+void
+IOTest::PortDataReader::_tao_release (PortDataReader_ptr obj)
+{
+ ::CORBA::release (obj);
+}
+
+::CORBA::Boolean
+IOTest::PortDataReader::_is_a (const char *value)
+{
+ if (
+ !ACE_OS::strcmp (
+ value,
+ "IDL:DDS/Entity:1.0"
+ ) ||
+ !ACE_OS::strcmp (
+ value,
+ "IDL:DDS/DataReader:1.0"
+ ) ||
+ !ACE_OS::strcmp (
+ value,
+ "IDL:IOTest/PortDataReader:1.0"
+ ) ||
+ !ACE_OS::strcmp (
+ value,
+ "IDL:omg.org/CORBA/LocalObject:1.0"
+ ) ||
+ !ACE_OS::strcmp (
+ value,
+ "IDL:omg.org/CORBA/Object:1.0"
+ )
+ )
+ {
+ return true; // success using local knowledge
+ }
+ else
+ {
+ return false;
+ }
+}
+
+const char* IOTest::PortDataReader::_interface_repository_id (void) const
+{
+ return "IDL:IOTest/PortDataReader:1.0";
+}
+
+::CORBA::Boolean
+IOTest::PortDataReader::marshal (TAO_OutputCDR &)
+{
+ return false;
+}
+
+// TAO_IDL - Generated from
+// be/be_visitor_typecode/objref_typecode.cpp:76
+
+static TAO::TypeCode::Objref<char const *,
+ TAO::Null_RefCount_Policy>
+ _tao_tc_IOTest_PortDataReader (
+ ::CORBA::tk_local_interface,
+ "IDL:IOTest/PortDataReader:1.0",
+ "PortDataReader");
+
+namespace IOTest
+{
+ ::CORBA::TypeCode_ptr const _tc_PortDataReader =
+ &_tao_tc_IOTest_PortDataReader;
+}
+
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_interface/any_op_cs.cpp:51
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+
+
+namespace TAO
+{
+ template<>
+ ::CORBA::Boolean
+ Any_Impl_T<IOTest::PortTypeSupport>::to_object (
+ ::CORBA::Object_ptr &_tao_elem
+ ) const
+ {
+ _tao_elem = ::CORBA::Object::_duplicate (this->value_);
+ return true;
+ }
+}
+
+namespace TAO
+{
+ template<>
+ ::CORBA::Boolean
+ Any_Impl_T<IOTest::PortTypeSupport>::marshal_value (TAO_OutputCDR &)
+ {
+ return false;
+ }
+
+ template<>
+ ::CORBA::Boolean
+ Any_Impl_T<IOTest::PortTypeSupport>::demarshal_value (TAO_InputCDR &)
+ {
+ return false;
+ }
+}
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+#if defined (ACE_ANY_OPS_USE_NAMESPACE)
+
+namespace IOTest
+{
+
+
+ /// Copying insertion.
+ void
+ operator<<= (
+ ::CORBA::Any &_tao_any,
+ PortTypeSupport_ptr _tao_elem)
+ {
+ PortTypeSupport_ptr _tao_objptr =
+ PortTypeSupport::_duplicate (_tao_elem);
+ _tao_any <<= &_tao_objptr;
+ }
+
+ /// Non-copying insertion.
+ void
+ operator<<= (
+ ::CORBA::Any &_tao_any,
+ PortTypeSupport_ptr *_tao_elem)
+ {
+ TAO::Any_Impl_T<PortTypeSupport>::insert (
+ _tao_any,
+ PortTypeSupport::_tao_any_destructor,
+ _tc_PortTypeSupport,
+ *_tao_elem)
+ }
+
+ ::CORBA::Boolean
+ operator>>= (
+ const ::CORBA::Any &_tao_any,
+ PortTypeSupport_ptr &_tao_elem)
+ {
+ return
+ TAO::Any_Impl_T<PortTypeSupport>::extract (
+ _tao_any,
+ PortTypeSupport::_tao_any_destructor,
+ _tc_PortTypeSupport,
+ _tao_elem)
+ }
+}
+
+#else
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+
+
+/// Copying insertion.
+void
+operator<<= (
+ ::CORBA::Any &_tao_any,
+ IOTest::PortTypeSupport_ptr _tao_elem)
+{
+ IOTest::PortTypeSupport_ptr _tao_objptr =
+ IOTest::PortTypeSupport::_duplicate (_tao_elem);
+ _tao_any <<= &_tao_objptr;
+}
+
+/// Non-copying insertion.
+void
+operator<<= (
+ ::CORBA::Any &_tao_any,
+ IOTest::PortTypeSupport_ptr *_tao_elem)
+{
+ TAO::Any_Impl_T<IOTest::PortTypeSupport>::insert (
+ _tao_any,
+ IOTest::PortTypeSupport::_tao_any_destructor,
+ IOTest::_tc_PortTypeSupport,
+ *_tao_elem);
+}
+
+::CORBA::Boolean
+operator>>= (
+ const ::CORBA::Any &_tao_any,
+ IOTest::PortTypeSupport_ptr &_tao_elem)
+{
+ return
+ TAO::Any_Impl_T<IOTest::PortTypeSupport>::extract (
+ _tao_any,
+ IOTest::PortTypeSupport::_tao_any_destructor,
+ IOTest::_tc_PortTypeSupport,
+ _tao_elem);
+}
+
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+#endif
+
+// TAO_IDL - Generated from
+// be/be_visitor_interface/any_op_cs.cpp:51
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+
+
+namespace TAO
+{
+ template<>
+ ::CORBA::Boolean
+ Any_Impl_T<IOTest::PortDataWriter>::to_object (
+ ::CORBA::Object_ptr &_tao_elem
+ ) const
+ {
+ _tao_elem = ::CORBA::Object::_duplicate (this->value_);
+ return true;
+ }
+}
+
+namespace TAO
+{
+ template<>
+ ::CORBA::Boolean
+ Any_Impl_T<IOTest::PortDataWriter>::marshal_value (TAO_OutputCDR &)
+ {
+ return false;
+ }
+
+ template<>
+ ::CORBA::Boolean
+ Any_Impl_T<IOTest::PortDataWriter>::demarshal_value (TAO_InputCDR &)
+ {
+ return false;
+ }
+}
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+#if defined (ACE_ANY_OPS_USE_NAMESPACE)
+
+namespace IOTest
+{
+
+
+ /// Copying insertion.
+ void
+ operator<<= (
+ ::CORBA::Any &_tao_any,
+ PortDataWriter_ptr _tao_elem)
+ {
+ PortDataWriter_ptr _tao_objptr =
+ PortDataWriter::_duplicate (_tao_elem);
+ _tao_any <<= &_tao_objptr;
+ }
+
+ /// Non-copying insertion.
+ void
+ operator<<= (
+ ::CORBA::Any &_tao_any,
+ PortDataWriter_ptr *_tao_elem)
+ {
+ TAO::Any_Impl_T<PortDataWriter>::insert (
+ _tao_any,
+ PortDataWriter::_tao_any_destructor,
+ _tc_PortDataWriter,
+ *_tao_elem)
+ }
+
+ ::CORBA::Boolean
+ operator>>= (
+ const ::CORBA::Any &_tao_any,
+ PortDataWriter_ptr &_tao_elem)
+ {
+ return
+ TAO::Any_Impl_T<PortDataWriter>::extract (
+ _tao_any,
+ PortDataWriter::_tao_any_destructor,
+ _tc_PortDataWriter,
+ _tao_elem)
+ }
+}
+
+#else
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+
+
+/// Copying insertion.
+void
+operator<<= (
+ ::CORBA::Any &_tao_any,
+ IOTest::PortDataWriter_ptr _tao_elem)
+{
+ IOTest::PortDataWriter_ptr _tao_objptr =
+ IOTest::PortDataWriter::_duplicate (_tao_elem);
+ _tao_any <<= &_tao_objptr;
+}
+
+/// Non-copying insertion.
+void
+operator<<= (
+ ::CORBA::Any &_tao_any,
+ IOTest::PortDataWriter_ptr *_tao_elem)
+{
+ TAO::Any_Impl_T<IOTest::PortDataWriter>::insert (
+ _tao_any,
+ IOTest::PortDataWriter::_tao_any_destructor,
+ IOTest::_tc_PortDataWriter,
+ *_tao_elem);
+}
+
+::CORBA::Boolean
+operator>>= (
+ const ::CORBA::Any &_tao_any,
+ IOTest::PortDataWriter_ptr &_tao_elem)
+{
+ return
+ TAO::Any_Impl_T<IOTest::PortDataWriter>::extract (
+ _tao_any,
+ IOTest::PortDataWriter::_tao_any_destructor,
+ IOTest::_tc_PortDataWriter,
+ _tao_elem);
+}
+
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+#endif
+
+// TAO_IDL - Generated from
+// be/be_visitor_interface/any_op_cs.cpp:51
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+
+
+namespace TAO
+{
+ template<>
+ ::CORBA::Boolean
+ Any_Impl_T<IOTest::PortDataReader>::to_object (
+ ::CORBA::Object_ptr &_tao_elem
+ ) const
+ {
+ _tao_elem = ::CORBA::Object::_duplicate (this->value_);
+ return true;
+ }
+}
+
+namespace TAO
+{
+ template<>
+ ::CORBA::Boolean
+ Any_Impl_T<IOTest::PortDataReader>::marshal_value (TAO_OutputCDR &)
+ {
+ return false;
+ }
+
+ template<>
+ ::CORBA::Boolean
+ Any_Impl_T<IOTest::PortDataReader>::demarshal_value (TAO_InputCDR &)
+ {
+ return false;
+ }
+}
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+#if defined (ACE_ANY_OPS_USE_NAMESPACE)
+
+namespace IOTest
+{
+
+
+ /// Copying insertion.
+ void
+ operator<<= (
+ ::CORBA::Any &_tao_any,
+ PortDataReader_ptr _tao_elem)
+ {
+ PortDataReader_ptr _tao_objptr =
+ PortDataReader::_duplicate (_tao_elem);
+ _tao_any <<= &_tao_objptr;
+ }
+
+ /// Non-copying insertion.
+ void
+ operator<<= (
+ ::CORBA::Any &_tao_any,
+ PortDataReader_ptr *_tao_elem)
+ {
+ TAO::Any_Impl_T<PortDataReader>::insert (
+ _tao_any,
+ PortDataReader::_tao_any_destructor,
+ _tc_PortDataReader,
+ *_tao_elem)
+ }
+
+ ::CORBA::Boolean
+ operator>>= (
+ const ::CORBA::Any &_tao_any,
+ PortDataReader_ptr &_tao_elem)
+ {
+ return
+ TAO::Any_Impl_T<PortDataReader>::extract (
+ _tao_any,
+ PortDataReader::_tao_any_destructor,
+ _tc_PortDataReader,
+ _tao_elem)
+ }
+}
+
+#else
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+
+
+/// Copying insertion.
+void
+operator<<= (
+ ::CORBA::Any &_tao_any,
+ IOTest::PortDataReader_ptr _tao_elem)
+{
+ IOTest::PortDataReader_ptr _tao_objptr =
+ IOTest::PortDataReader::_duplicate (_tao_elem);
+ _tao_any <<= &_tao_objptr;
+}
+
+/// Non-copying insertion.
+void
+operator<<= (
+ ::CORBA::Any &_tao_any,
+ IOTest::PortDataReader_ptr *_tao_elem)
+{
+ TAO::Any_Impl_T<IOTest::PortDataReader>::insert (
+ _tao_any,
+ IOTest::PortDataReader::_tao_any_destructor,
+ IOTest::_tc_PortDataReader,
+ *_tao_elem);
+}
+
+::CORBA::Boolean
+operator>>= (
+ const ::CORBA::Any &_tao_any,
+ IOTest::PortDataReader_ptr &_tao_elem)
+{
+ return
+ TAO::Any_Impl_T<IOTest::PortDataReader>::extract (
+ _tao_any,
+ IOTest::PortDataReader::_tao_any_destructor,
+ IOTest::_tc_PortDataReader,
+ _tao_elem);
+}
+
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+#endif
+
diff --git a/dds_io_pub/PortTypeSupportC.h b/dds_io_pub/PortTypeSupportC.h
new file mode 100644
index 0000000..c23d151
--- /dev/null
+++ b/dds_io_pub/PortTypeSupportC.h
@@ -0,0 +1,654 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler ****
+// TAO and the TAO IDL Compiler have been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// and
+// Distributed Object Computing Laboratory
+// University of California at Irvine
+// Irvine, CA
+// USA
+// http://doc.ece.uci.edu/
+// and
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about TAO is available at:
+// http://www.cs.wustl.edu/~schmidt/TAO.html
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:135
+
+#ifndef _TAO_IDL_PORTTYPESUPPORTC_H_
+#define _TAO_IDL_PORTTYPESUPPORTC_H_
+
+
+#include /**/ "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "dds/DdsDcpsTypeSupportExtC.h"
+#include "tao/AnyTypeCode/AnyTypeCode_methods.h"
+#include "tao/ORB.h"
+#include "tao/SystemException.h"
+#include "tao/UserException.h"
+#include "tao/Basic_Types.h"
+#include "tao/ORB_Constants.h"
+#include "dds/DCPS/ZeroCopyInfoSeq_T.h"
+#include "dds/DCPS/ZeroCopySeq_T.h"
+#include "tao/Object.h"
+#include "tao/String_Manager_T.h"
+#include "tao/Objref_VarOut_T.h"
+#include /**/ "tao/Versioned_Namespace.h"
+
+#include "IOTestC.h"
+
+#if defined (TAO_EXPORT_MACRO)
+#undef TAO_EXPORT_MACRO
+#endif
+#define TAO_EXPORT_MACRO
+
+// TAO_IDL - Generated from
+// be/be_visitor_module/module_ch.cpp:49
+
+namespace IOTest
+{
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_native/native_ch.cpp:55
+
+
+
+ typedef ::TAO::DCPS::ZeroCopyDataSeq< IOTest::Port, DCPS_ZERO_COPY_SEQ_DEFAULT_SIZE> PortSeq;
+
+
+ // TAO_IDL - Generated from
+ // be/be_interface.cpp:638
+
+#if !defined (_IOTEST_PORTTYPESUPPORT__VAR_OUT_CH_)
+#define _IOTEST_PORTTYPESUPPORT__VAR_OUT_CH_
+
+ class PortTypeSupport;
+ typedef PortTypeSupport *PortTypeSupport_ptr;
+
+ typedef
+ TAO_Objref_Var_T<
+ PortTypeSupport
+ >
+ PortTypeSupport_var;
+
+ typedef
+ TAO_Objref_Out_T<
+ PortTypeSupport
+ >
+ PortTypeSupport_out;
+
+#endif /* end #if !defined */
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_interface/interface_ch.cpp:54
+
+#if !defined (_IOTEST_PORTTYPESUPPORT_CH_)
+#define _IOTEST_PORTTYPESUPPORT_CH_
+
+ class PortTypeSupport
+ : public virtual ::OpenDDS::DCPS::TypeSupport
+ {
+ public:
+ typedef PortTypeSupport_ptr _ptr_type;
+ typedef PortTypeSupport_var _var_type;
+ typedef PortTypeSupport_out _out_type;
+
+ // The static operations.
+ static PortTypeSupport_ptr _duplicate (PortTypeSupport_ptr obj);
+
+ static void _tao_release (PortTypeSupport_ptr obj);
+
+ static PortTypeSupport_ptr _narrow (::CORBA::Object_ptr obj);
+ static PortTypeSupport_ptr _unchecked_narrow (::CORBA::Object_ptr obj);
+ static PortTypeSupport_ptr _nil (void)
+ {
+ return static_cast<PortTypeSupport_ptr> (0);
+ }
+
+ static void _tao_any_destructor (void *);
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t register_type (
+ ::DDS::DomainParticipant_ptr participant,
+ const char * type_name) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_interface/interface_ch.cpp:216
+
+ virtual ::CORBA::Boolean _is_a (const char *type_id);
+ virtual const char* _interface_repository_id (void) const;
+ virtual ::CORBA::Boolean marshal (TAO_OutputCDR &cdr);
+
+ protected:
+ // Abstract or local interface only.
+ PortTypeSupport (void);
+
+ virtual ~PortTypeSupport (void);
+
+ private:
+ // Private and unimplemented for concrete interfaces.
+ PortTypeSupport (const PortTypeSupport &);
+
+ void operator= (const PortTypeSupport &);
+ };
+
+#endif /* end #if !defined */
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_typecode/typecode_decl.cpp:49
+
+ extern ::CORBA::TypeCode_ptr const _tc_PortTypeSupport;
+
+ // TAO_IDL - Generated from
+ // be/be_interface.cpp:638
+
+#if !defined (_IOTEST_PORTDATAWRITER__VAR_OUT_CH_)
+#define _IOTEST_PORTDATAWRITER__VAR_OUT_CH_
+
+ class PortDataWriter;
+ typedef PortDataWriter *PortDataWriter_ptr;
+
+ typedef
+ TAO_Objref_Var_T<
+ PortDataWriter
+ >
+ PortDataWriter_var;
+
+ typedef
+ TAO_Objref_Out_T<
+ PortDataWriter
+ >
+ PortDataWriter_out;
+
+#endif /* end #if !defined */
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_interface/interface_ch.cpp:54
+
+#if !defined (_IOTEST_PORTDATAWRITER_CH_)
+#define _IOTEST_PORTDATAWRITER_CH_
+
+ class PortDataWriter
+ : public virtual ::DDS::DataWriter
+ {
+ public:
+ typedef PortDataWriter_ptr _ptr_type;
+ typedef PortDataWriter_var _var_type;
+ typedef PortDataWriter_out _out_type;
+
+ // The static operations.
+ static PortDataWriter_ptr _duplicate (PortDataWriter_ptr obj);
+
+ static void _tao_release (PortDataWriter_ptr obj);
+
+ static PortDataWriter_ptr _narrow (::CORBA::Object_ptr obj);
+ static PortDataWriter_ptr _unchecked_narrow (::CORBA::Object_ptr obj);
+ static PortDataWriter_ptr _nil (void)
+ {
+ return static_cast<PortDataWriter_ptr> (0);
+ }
+
+ static void _tao_any_destructor (void *);
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::InstanceHandle_t _cxx_register (
+ const ::IOTest::Port & instance_data) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::InstanceHandle_t register_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle,
+ const ::DDS::Time_t & source_timestamp) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t unregister (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t unregister_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle,
+ const ::DDS::Time_t & source_timestamp) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t write (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t write_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle,
+ const ::DDS::Time_t & source_timestamp) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t dispose (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t instance_handle) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t dispose_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t instance_handle,
+ const ::DDS::Time_t & source_timestamp) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t get_key_value (
+ ::IOTest::Port & key_holder,
+ ::DDS::InstanceHandle_t handle) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_interface/interface_ch.cpp:216
+
+ virtual ::CORBA::Boolean _is_a (const char *type_id);
+ virtual const char* _interface_repository_id (void) const;
+ virtual ::CORBA::Boolean marshal (TAO_OutputCDR &cdr);
+
+ protected:
+ // Abstract or local interface only.
+ PortDataWriter (void);
+
+ virtual ~PortDataWriter (void);
+
+ private:
+ // Private and unimplemented for concrete interfaces.
+ PortDataWriter (const PortDataWriter &);
+
+ void operator= (const PortDataWriter &);
+ };
+
+#endif /* end #if !defined */
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_typecode/typecode_decl.cpp:49
+
+ extern ::CORBA::TypeCode_ptr const _tc_PortDataWriter;
+
+ // TAO_IDL - Generated from
+ // be/be_interface.cpp:638
+
+#if !defined (_IOTEST_PORTDATAREADER__VAR_OUT_CH_)
+#define _IOTEST_PORTDATAREADER__VAR_OUT_CH_
+
+ class PortDataReader;
+ typedef PortDataReader *PortDataReader_ptr;
+
+ typedef
+ TAO_Objref_Var_T<
+ PortDataReader
+ >
+ PortDataReader_var;
+
+ typedef
+ TAO_Objref_Out_T<
+ PortDataReader
+ >
+ PortDataReader_out;
+
+#endif /* end #if !defined */
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_interface/interface_ch.cpp:54
+
+#if !defined (_IOTEST_PORTDATAREADER_CH_)
+#define _IOTEST_PORTDATAREADER_CH_
+
+ class PortDataReader
+ : public virtual ::DDS::DataReader
+ {
+ public:
+ typedef PortDataReader_ptr _ptr_type;
+ typedef PortDataReader_var _var_type;
+ typedef PortDataReader_out _out_type;
+
+ // The static operations.
+ static PortDataReader_ptr _duplicate (PortDataReader_ptr obj);
+
+ static void _tao_release (PortDataReader_ptr obj);
+
+ static PortDataReader_ptr _narrow (::CORBA::Object_ptr obj);
+ static PortDataReader_ptr _unchecked_narrow (::CORBA::Object_ptr obj);
+ static PortDataReader_ptr _nil (void)
+ {
+ return static_cast<PortDataReader_ptr> (0);
+ }
+
+ static void _tao_any_destructor (void *);
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t read (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t take (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t read_next_sample (
+ ::IOTest::Port & received_data,
+ ::DDS::SampleInfo & sample_info) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t take_next_sample (
+ ::IOTest::Port & received_data,
+ ::DDS::SampleInfo & sample_info) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t read_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t take_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t read_next_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t take_next_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t return_loan (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_operation/operation_ch.cpp:46
+
+ virtual ::DDS::ReturnCode_t get_key_value (
+ ::IOTest::Port & key_holder,
+ ::DDS::InstanceHandle_t handle) = 0;
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_interface/interface_ch.cpp:216
+
+ virtual ::CORBA::Boolean _is_a (const char *type_id);
+ virtual const char* _interface_repository_id (void) const;
+ virtual ::CORBA::Boolean marshal (TAO_OutputCDR &cdr);
+
+ protected:
+ // Abstract or local interface only.
+ PortDataReader (void);
+
+ virtual ~PortDataReader (void);
+
+ private:
+ // Private and unimplemented for concrete interfaces.
+ PortDataReader (const PortDataReader &);
+
+ void operator= (const PortDataReader &);
+ };
+
+#endif /* end #if !defined */
+
+ // TAO_IDL - Generated from
+ // be/be_visitor_typecode/typecode_decl.cpp:49
+
+ extern ::CORBA::TypeCode_ptr const _tc_PortDataReader;
+
+// TAO_IDL - Generated from
+// be/be_visitor_module/module_ch.cpp:78
+
+} // module IOTest
+
+// TAO_IDL - Generated from
+// be/be_visitor_traits.cpp:64
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+// Traits specializations.
+namespace TAO
+{
+
+#if !defined (_IOTEST_PORTTYPESUPPORT__TRAITS_)
+#define _IOTEST_PORTTYPESUPPORT__TRAITS_
+
+ template<>
+ struct Objref_Traits< ::IOTest::PortTypeSupport>
+ {
+ static ::IOTest::PortTypeSupport_ptr duplicate (
+ ::IOTest::PortTypeSupport_ptr
+ );
+ static void release (
+ ::IOTest::PortTypeSupport_ptr
+ );
+ static ::IOTest::PortTypeSupport_ptr nil (void);
+ static ::CORBA::Boolean marshal (
+ const ::IOTest::PortTypeSupport_ptr p,
+ TAO_OutputCDR & cdr
+ );
+ };
+
+#endif /* end #if !defined */
+
+#if !defined (_IOTEST_PORTDATAWRITER__TRAITS_)
+#define _IOTEST_PORTDATAWRITER__TRAITS_
+
+ template<>
+ struct Objref_Traits< ::IOTest::PortDataWriter>
+ {
+ static ::IOTest::PortDataWriter_ptr duplicate (
+ ::IOTest::PortDataWriter_ptr
+ );
+ static void release (
+ ::IOTest::PortDataWriter_ptr
+ );
+ static ::IOTest::PortDataWriter_ptr nil (void);
+ static ::CORBA::Boolean marshal (
+ const ::IOTest::PortDataWriter_ptr p,
+ TAO_OutputCDR & cdr
+ );
+ };
+
+#endif /* end #if !defined */
+
+#if !defined (_IOTEST_PORTDATAREADER__TRAITS_)
+#define _IOTEST_PORTDATAREADER__TRAITS_
+
+ template<>
+ struct Objref_Traits< ::IOTest::PortDataReader>
+ {
+ static ::IOTest::PortDataReader_ptr duplicate (
+ ::IOTest::PortDataReader_ptr
+ );
+ static void release (
+ ::IOTest::PortDataReader_ptr
+ );
+ static ::IOTest::PortDataReader_ptr nil (void);
+ static ::CORBA::Boolean marshal (
+ const ::IOTest::PortDataReader_ptr p,
+ TAO_OutputCDR & cdr
+ );
+ };
+
+#endif /* end #if !defined */
+}
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_interface/any_op_ch.cpp:54
+
+
+
+#if defined (ACE_ANY_OPS_USE_NAMESPACE)
+
+namespace IOTest
+{
+ void operator<<= ( ::CORBA::Any &, PortTypeSupport_ptr); // copying
+ void operator<<= ( ::CORBA::Any &, PortTypeSupport_ptr *); // non-copying
+ ::CORBA::Boolean operator>>= (const ::CORBA::Any &, PortTypeSupport_ptr &);
+}
+
+#else
+
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+ void operator<<= (::CORBA::Any &, IOTest::PortTypeSupport_ptr); // copying
+ void operator<<= (::CORBA::Any &, IOTest::PortTypeSupport_ptr *); // non-copying
+ ::CORBA::Boolean operator>>= (const ::CORBA::Any &, IOTest::PortTypeSupport_ptr &);
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+#endif
+
+// TAO_IDL - Generated from
+// be/be_visitor_interface/any_op_ch.cpp:54
+
+
+
+#if defined (ACE_ANY_OPS_USE_NAMESPACE)
+
+namespace IOTest
+{
+ void operator<<= ( ::CORBA::Any &, PortDataWriter_ptr); // copying
+ void operator<<= ( ::CORBA::Any &, PortDataWriter_ptr *); // non-copying
+ ::CORBA::Boolean operator>>= (const ::CORBA::Any &, PortDataWriter_ptr &);
+}
+
+#else
+
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+ void operator<<= (::CORBA::Any &, IOTest::PortDataWriter_ptr); // copying
+ void operator<<= (::CORBA::Any &, IOTest::PortDataWriter_ptr *); // non-copying
+ ::CORBA::Boolean operator>>= (const ::CORBA::Any &, IOTest::PortDataWriter_ptr &);
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+#endif
+
+// TAO_IDL - Generated from
+// be/be_visitor_interface/any_op_ch.cpp:54
+
+
+
+#if defined (ACE_ANY_OPS_USE_NAMESPACE)
+
+namespace IOTest
+{
+ void operator<<= ( ::CORBA::Any &, PortDataReader_ptr); // copying
+ void operator<<= ( ::CORBA::Any &, PortDataReader_ptr *); // non-copying
+ ::CORBA::Boolean operator>>= (const ::CORBA::Any &, PortDataReader_ptr &);
+}
+
+#else
+
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+ void operator<<= (::CORBA::Any &, IOTest::PortDataReader_ptr); // copying
+ void operator<<= (::CORBA::Any &, IOTest::PortDataReader_ptr *); // non-copying
+ ::CORBA::Boolean operator>>= (const ::CORBA::Any &, IOTest::PortDataReader_ptr &);
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+#endif
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:1219
+#if defined (__ACE_INLINE__)
+#include "PortTypeSupportC.inl"
+#endif /* defined INLINE */
+
+#endif /* ifndef */
+
+
diff --git a/dds_io_pub/PortTypeSupportC.inl b/dds_io_pub/PortTypeSupportC.inl
new file mode 100644
index 0000000..38aa325
--- /dev/null
+++ b/dds_io_pub/PortTypeSupportC.inl
@@ -0,0 +1,28 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler ****
+// TAO and the TAO IDL Compiler have been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// and
+// Distributed Object Computing Laboratory
+// University of California at Irvine
+// Irvine, CA
+// USA
+// http://doc.ece.uci.edu/
+// and
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about TAO is available at:
+// http://www.cs.wustl.edu/~schmidt/TAO.html
+
+
diff --git a/dds_io_pub/PortTypeSupportI.cpp b/dds_io_pub/PortTypeSupportI.cpp
new file mode 100644
index 0000000..be0f12b
--- /dev/null
+++ b/dds_io_pub/PortTypeSupportI.cpp
@@ -0,0 +1,454 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler ****
+// TAO and the TAO IDL Compiler have been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// and
+// Distributed Object Computing Laboratory
+// University of California at Irvine
+// Irvine, CA
+// USA
+// http://doc.ece.uci.edu/
+// and
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about TAO is available at:
+// http://www.cs.wustl.edu/~schmidt/TAO.html
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:1189
+
+#include "PortTypeSupportI.h"
+
+// Implementation skeleton constructor
+IOTest_PortTypeSupport_i::IOTest_PortTypeSupport_i (void)
+{
+}
+
+// Implementation skeleton destructor
+IOTest_PortTypeSupport_i::~IOTest_PortTypeSupport_i (void)
+{
+}
+
+::DDS::ReturnCode_t IOTest_PortTypeSupport_i::register_type (
+ ::DDS::DomainParticipant_ptr participant,
+ const char * type_name)
+{
+ // Add your implementation here
+}
+
+char * IOTest_PortTypeSupport_i::get_type_name (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::DataWriter_ptr IOTest_PortTypeSupport_i::create_datawriter (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::DataReader_ptr IOTest_PortTypeSupport_i::create_datareader (
+ void)
+{
+ // Add your implementation here
+}
+
+// Implementation skeleton constructor
+IOTest_PortDataWriter_i::IOTest_PortDataWriter_i (void)
+{
+}
+
+// Implementation skeleton destructor
+IOTest_PortDataWriter_i::~IOTest_PortDataWriter_i (void)
+{
+}
+
+::DDS::InstanceHandle_t IOTest_PortDataWriter_i::_cxx_register (
+ const ::IOTest::Port & instance_data)
+{
+ // Add your implementation here
+}
+
+::DDS::InstanceHandle_t IOTest_PortDataWriter_i::register_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle,
+ const ::DDS::Time_t & source_timestamp)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataWriter_i::unregister (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataWriter_i::unregister_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle,
+ const ::DDS::Time_t & source_timestamp)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataWriter_i::write (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataWriter_i::write_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle,
+ const ::DDS::Time_t & source_timestamp)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataWriter_i::dispose (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t instance_handle)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataWriter_i::dispose_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t instance_handle,
+ const ::DDS::Time_t & source_timestamp)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataWriter_i::get_key_value (
+ ::IOTest::Port & key_holder,
+ ::DDS::InstanceHandle_t handle)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataWriter_i::enable (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::StatusKindMask IOTest_PortDataWriter_i::get_status_changes (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataWriter_i::set_qos (
+ const ::DDS::DataWriterQos & qos)
+{
+ // Add your implementation here
+}
+
+void IOTest_PortDataWriter_i::get_qos (
+ ::DDS::DataWriterQos & qos)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataWriter_i::set_listener (
+ ::DDS::DataWriterListener_ptr a_listener,
+ ::DDS::StatusKindMask mask)
+{
+ // Add your implementation here
+}
+
+::DDS::DataWriterListener_ptr IOTest_PortDataWriter_i::get_listener (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::Topic_ptr IOTest_PortDataWriter_i::get_topic (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::Publisher_ptr IOTest_PortDataWriter_i::get_publisher (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::LivelinessLostStatus IOTest_PortDataWriter_i::get_liveliness_lost_status (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::OfferedDeadlineMissedStatus IOTest_PortDataWriter_i::get_offered_deadline_missed_status (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::OfferedIncompatibleQosStatus * IOTest_PortDataWriter_i::get_offered_incompatible_qos_status (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::PublicationMatchStatus IOTest_PortDataWriter_i::get_publication_match_status (
+ void)
+{
+ // Add your implementation here
+}
+
+void IOTest_PortDataWriter_i::assert_liveliness (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataWriter_i::get_matched_subscriptions (
+ ::DDS::InstanceHandleSeq & subscription_handles)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataWriter_i::get_matched_subscription_data (
+ ::DDS::SubscriptionBuiltinTopicData & subscription_data,
+ ::DDS::InstanceHandle_t subscription_handle)
+{
+ // Add your implementation here
+}
+
+// Implementation skeleton constructor
+IOTest_PortDataReader_i::IOTest_PortDataReader_i (void)
+{
+}
+
+// Implementation skeleton destructor
+IOTest_PortDataReader_i::~IOTest_PortDataReader_i (void)
+{
+}
+
+::DDS::ReturnCode_t IOTest_PortDataReader_i::read (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataReader_i::take (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataReader_i::read_next_sample (
+ ::IOTest::Port & received_data,
+ ::DDS::SampleInfo & sample_info)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataReader_i::take_next_sample (
+ ::IOTest::Port & received_data,
+ ::DDS::SampleInfo & sample_info)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataReader_i::read_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataReader_i::take_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataReader_i::read_next_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataReader_i::take_next_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataReader_i::return_loan (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataReader_i::get_key_value (
+ ::IOTest::Port & key_holder,
+ ::DDS::InstanceHandle_t handle)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataReader_i::enable (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::StatusKindMask IOTest_PortDataReader_i::get_status_changes (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataReader_i::delete_contained_entities (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataReader_i::set_qos (
+ const ::DDS::DataReaderQos & qos)
+{
+ // Add your implementation here
+}
+
+void IOTest_PortDataReader_i::get_qos (
+ ::DDS::DataReaderQos & qos)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataReader_i::set_listener (
+ ::DDS::DataReaderListener_ptr a_listener,
+ ::DDS::StatusKindMask mask)
+{
+ // Add your implementation here
+}
+
+::DDS::DataReaderListener_ptr IOTest_PortDataReader_i::get_listener (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::TopicDescription_ptr IOTest_PortDataReader_i::get_topicdescription (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::Subscriber_ptr IOTest_PortDataReader_i::get_subscriber (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::SampleRejectedStatus IOTest_PortDataReader_i::get_sample_rejected_status (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::LivelinessChangedStatus IOTest_PortDataReader_i::get_liveliness_changed_status (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::RequestedDeadlineMissedStatus IOTest_PortDataReader_i::get_requested_deadline_missed_status (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::RequestedIncompatibleQosStatus * IOTest_PortDataReader_i::get_requested_incompatible_qos_status (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::SubscriptionMatchStatus IOTest_PortDataReader_i::get_subscription_match_status (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::SampleLostStatus IOTest_PortDataReader_i::get_sample_lost_status (
+ void)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataReader_i::wait_for_historical_data (
+ const ::DDS::Duration_t & max_wait)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataReader_i::get_matched_publications (
+ ::DDS::InstanceHandleSeq & publication_handles)
+{
+ // Add your implementation here
+}
+
+::DDS::ReturnCode_t IOTest_PortDataReader_i::get_matched_publication_data (
+ ::DDS::PublicationBuiltinTopicData & publication_data,
+ ::DDS::InstanceHandle_t publication_handle)
+{
+ // Add your implementation here
+}
+
+
diff --git a/dds_io_pub/PortTypeSupportI.h b/dds_io_pub/PortTypeSupportI.h
new file mode 100644
index 0000000..ddd7c4f
--- /dev/null
+++ b/dds_io_pub/PortTypeSupportI.h
@@ -0,0 +1,359 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler ****
+// TAO and the TAO IDL Compiler have been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// and
+// Distributed Object Computing Laboratory
+// University of California at Irvine
+// Irvine, CA
+// USA
+// http://doc.ece.uci.edu/
+// and
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about TAO is available at:
+// http://www.cs.wustl.edu/~schmidt/TAO.html
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:1126
+
+#ifndef PORTTYPESUPPORTI_H_
+#define PORTTYPESUPPORTI_H_
+
+#include "PortTypeSupportS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+class IOTest_PortTypeSupport_i
+ : public virtual IOTest::PortTypeSupport,
+ public virtual TAO_Local_RefCounted_Object
+{
+public:
+ // Constructor
+ IOTest_PortTypeSupport_i (void);
+
+ // Destructor
+ virtual ~IOTest_PortTypeSupport_i (void);
+
+ virtual
+ ::DDS::ReturnCode_t register_type (
+ ::DDS::DomainParticipant_ptr participant,
+ const char * type_name) = 0;
+
+ virtual
+ char * get_type_name (
+ void) = 0;
+
+ virtual
+ ::DDS::DataWriter_ptr create_datawriter (
+ void) = 0;
+
+ virtual
+ ::DDS::DataReader_ptr create_datareader (
+ void) = 0;
+};
+
+class IOTest_PortDataWriter_i
+ : public virtual IOTest::PortDataWriter,
+ public virtual TAO_Local_RefCounted_Object
+{
+public:
+ // Constructor
+ IOTest_PortDataWriter_i (void);
+
+ // Destructor
+ virtual ~IOTest_PortDataWriter_i (void);
+
+ virtual
+ ::DDS::InstanceHandle_t _cxx_register (
+ const ::IOTest::Port & instance_data) = 0;
+
+ virtual
+ ::DDS::InstanceHandle_t register_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle,
+ const ::DDS::Time_t & source_timestamp) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t unregister (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t unregister_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle,
+ const ::DDS::Time_t & source_timestamp) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t write (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t write_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle,
+ const ::DDS::Time_t & source_timestamp) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t dispose (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t instance_handle) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t dispose_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t instance_handle,
+ const ::DDS::Time_t & source_timestamp) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t get_key_value (
+ ::IOTest::Port & key_holder,
+ ::DDS::InstanceHandle_t handle) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t enable (
+ void) = 0;
+
+ virtual
+ ::DDS::StatusKindMask get_status_changes (
+ void) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t set_qos (
+ const ::DDS::DataWriterQos & qos) = 0;
+
+ virtual
+ void get_qos (
+ ::DDS::DataWriterQos & qos) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t set_listener (
+ ::DDS::DataWriterListener_ptr a_listener,
+ ::DDS::StatusKindMask mask) = 0;
+
+ virtual
+ ::DDS::DataWriterListener_ptr get_listener (
+ void) = 0;
+
+ virtual
+ ::DDS::Topic_ptr get_topic (
+ void) = 0;
+
+ virtual
+ ::DDS::Publisher_ptr get_publisher (
+ void) = 0;
+
+ virtual
+ ::DDS::LivelinessLostStatus get_liveliness_lost_status (
+ void) = 0;
+
+ virtual
+ ::DDS::OfferedDeadlineMissedStatus get_offered_deadline_missed_status (
+ void) = 0;
+
+ virtual
+ ::DDS::OfferedIncompatibleQosStatus * get_offered_incompatible_qos_status (
+ void) = 0;
+
+ virtual
+ ::DDS::PublicationMatchStatus get_publication_match_status (
+ void) = 0;
+
+ virtual
+ void assert_liveliness (
+ void) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t get_matched_subscriptions (
+ ::DDS::InstanceHandleSeq & subscription_handles) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t get_matched_subscription_data (
+ ::DDS::SubscriptionBuiltinTopicData & subscription_data,
+ ::DDS::InstanceHandle_t subscription_handle) = 0;
+};
+
+class IOTest_PortDataReader_i
+ : public virtual IOTest::PortDataReader,
+ public virtual TAO_Local_RefCounted_Object
+{
+public:
+ // Constructor
+ IOTest_PortDataReader_i (void);
+
+ // Destructor
+ virtual ~IOTest_PortDataReader_i (void);
+
+ virtual
+ ::DDS::ReturnCode_t read (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t take (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t read_next_sample (
+ ::IOTest::Port & received_data,
+ ::DDS::SampleInfo & sample_info) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t take_next_sample (
+ ::IOTest::Port & received_data,
+ ::DDS::SampleInfo & sample_info) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t read_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t take_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t read_next_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t take_next_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t return_loan (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t get_key_value (
+ ::IOTest::Port & key_holder,
+ ::DDS::InstanceHandle_t handle) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t enable (
+ void) = 0;
+
+ virtual
+ ::DDS::StatusKindMask get_status_changes (
+ void) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t delete_contained_entities (
+ void) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t set_qos (
+ const ::DDS::DataReaderQos & qos) = 0;
+
+ virtual
+ void get_qos (
+ ::DDS::DataReaderQos & qos) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t set_listener (
+ ::DDS::DataReaderListener_ptr a_listener,
+ ::DDS::StatusKindMask mask) = 0;
+
+ virtual
+ ::DDS::DataReaderListener_ptr get_listener (
+ void) = 0;
+
+ virtual
+ ::DDS::TopicDescription_ptr get_topicdescription (
+ void) = 0;
+
+ virtual
+ ::DDS::Subscriber_ptr get_subscriber (
+ void) = 0;
+
+ virtual
+ ::DDS::SampleRejectedStatus get_sample_rejected_status (
+ void) = 0;
+
+ virtual
+ ::DDS::LivelinessChangedStatus get_liveliness_changed_status (
+ void) = 0;
+
+ virtual
+ ::DDS::RequestedDeadlineMissedStatus get_requested_deadline_missed_status (
+ void) = 0;
+
+ virtual
+ ::DDS::RequestedIncompatibleQosStatus * get_requested_incompatible_qos_status (
+ void) = 0;
+
+ virtual
+ ::DDS::SubscriptionMatchStatus get_subscription_match_status (
+ void) = 0;
+
+ virtual
+ ::DDS::SampleLostStatus get_sample_lost_status (
+ void) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t wait_for_historical_data (
+ const ::DDS::Duration_t & max_wait) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t get_matched_publications (
+ ::DDS::InstanceHandleSeq & publication_handles) = 0;
+
+ virtual
+ ::DDS::ReturnCode_t get_matched_publication_data (
+ ::DDS::PublicationBuiltinTopicData & publication_data,
+ ::DDS::InstanceHandle_t publication_handle) = 0;
+};
+
+
+#endif /* PORTTYPESUPPORTI_H_ */
+
diff --git a/dds_io_pub/PortTypeSupportImpl.cpp b/dds_io_pub/PortTypeSupportImpl.cpp
new file mode 100644
index 0000000..bcd2891
--- /dev/null
+++ b/dds_io_pub/PortTypeSupportImpl.cpp
@@ -0,0 +1,1939 @@
+// -*- C++ -*-
+//
+// $Id: CPPTemplate.pm 899 2007-07-05 16:36:52Z mitza $
+
+// Generated by dcsp_ts.pl
+
+
+#include "dds/DCPS/debug.h"
+#include "dds/DCPS/Registered_Data_Types.h"
+#include "dds/DdsDcpsDomainC.h"
+#include "dds/DCPS/Service_Participant.h"
+#include "dds/DCPS/Qos_Helper.h"
+#include "dds/DCPS/PublicationInstance.h"
+#include "dds/DCPS/PublisherImpl.h"
+#include "dds/DCPS/SubscriberImpl.h"
+#include "dds/DCPS/ReceivedDataElementList.h"
+#include "dds/DCPS/transport/framework/TransportInterface.h"
+#include "dds/DCPS/Util.h"
+#include "PortTypeSupportImpl.h"
+
+
+namespace
+{
+ using ::OpenDDS::DCPS::DataReaderImpl;
+
+ typedef ::IOTest::PortSeq::PrivateMemberAccess SequenceType;
+
+ struct LoanerGuard
+ {
+ LoanerGuard(SequenceType& seq, DataReaderImpl* dataReader)
+ : seq_(seq)
+ , dataReader_(dataReader)
+ , set_(false)
+ {}
+
+ void set() { set_ = true; }
+
+ ~LoanerGuard()
+ {
+ if(set_) seq_.set_loaner(dataReader_);
+ }
+
+ SequenceType& seq_;
+ DataReaderImpl* dataReader_;
+ bool set_;
+ };
+}
+
+
+namespace IOTest {
+
+
+// VC6 can not understand the baseclass calling syntax
+typedef OpenDDS::DCPS::DataWriterImpl OPENDDS_DCPS_DataWriterImpl;
+typedef OpenDDS::DCPS::DataReaderImpl OPENDDS_DCPS_DataReaderImpl;
+
+// Implementation skeleton constructor
+PortTypeSupportImpl::PortTypeSupportImpl (void)
+{
+}
+
+// Implementation skeleton destructor
+PortTypeSupportImpl::~PortTypeSupportImpl (void)
+{
+}
+
+DDS::ReturnCode_t
+PortTypeSupportImpl::register_type (
+ ::DDS::DomainParticipant_ptr participant,
+ const char * type_name
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ if (type_name == 0 || type_name[0] == '\0')
+ this->type_name_ = this->get_type_name();
+ else
+ this->type_name_ = CORBA::string_dup (type_name);
+
+ return ::OpenDDS::DCPS::Registered_Data_Types->register_type(participant,
+ this->type_name_.in (),
+ this);
+}
+
+
+char *
+PortTypeSupportImpl::get_type_name (
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ if (this->type_name_ == NULL)
+ return CORBA::string_dup (this->_interface_repository_id());
+ else
+ return CORBA::string_dup (this->type_name_.in ());
+}
+
+
+::DDS::DataWriter_ptr
+PortTypeSupportImpl::create_datawriter (
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ PortDataWriterImpl* writer_impl;
+ ACE_NEW_RETURN(writer_impl,
+ PortDataWriterImpl(),
+ ::DDS::DataWriter::_nil());
+
+
+ ::DDS::DataWriter_ptr writer_obj
+ = ::OpenDDS::DCPS::servant_to_reference (writer_impl);
+
+ return writer_obj;
+}
+
+::DDS::DataReader_ptr
+PortTypeSupportImpl::create_datareader (
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ PortDataReaderImpl* reader_impl = 0;
+ ACE_NEW_RETURN(reader_impl,
+ PortDataReaderImpl(),
+ ::DDS::DataReader::_nil());
+
+
+ ::DDS::DataReader_ptr reader_obj
+ = ::OpenDDS::DCPS::servant_to_reference (reader_impl);
+
+ return reader_obj;
+}
+
+}; // IOTest
+
+
+namespace IOTest {
+
+
+// Implementation skeleton constructor
+PortDataWriterImpl::PortDataWriterImpl (void)
+: marshaled_size_ (0),
+ db_lock_pool_(0),
+ data_allocator_ (0),
+ mb_allocator_ (0),
+ db_allocator_ (0)
+{
+}
+
+// Implementation skeleton destructor
+PortDataWriterImpl::~PortDataWriterImpl (void)
+{
+ delete data_allocator_;
+ delete mb_allocator_;
+ delete db_allocator_;
+ delete db_lock_pool_;
+}
+
+DDS::InstanceHandle_t
+PortDataWriterImpl::_cxx_register (
+ const ::IOTest::Port & instance_data
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ::DDS::Time_t source_timestamp
+ = ::OpenDDS::DCPS::time_value_to_time (ACE_OS::gettimeofday ());
+ return register_w_timestamp (instance_data,
+ ::OpenDDS::DCPS::HANDLE_NIL,
+ source_timestamp);
+}
+
+DDS::InstanceHandle_t
+PortDataWriterImpl::register_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle,
+ const ::DDS::Time_t & source_timestamp
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ACE_UNUSED_ARG (handle);
+ ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex,
+ guard,
+ get_lock (),
+ ::DDS::RETCODE_ERROR);
+ ::DDS::InstanceHandle_t registered_handle;
+ ::DDS::ReturnCode_t ret
+ = this->get_or_create_instance_handle(registered_handle,
+ instance_data,
+ source_timestamp);
+ if (ret != ::DDS::RETCODE_OK)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT("(%P|%t) ")
+ ACE_TEXT("PortDataWriterImpl::register_w_timestamp, ")
+ ACE_TEXT("register failed error=%d.\n"),
+ ret));
+ }
+
+ return registered_handle;
+}
+
+
+DDS::ReturnCode_t
+PortDataWriterImpl::unregister (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ::DDS::Time_t source_timestamp
+ = ::OpenDDS::DCPS::time_value_to_time (ACE_OS::gettimeofday ());
+ return unregister_w_timestamp (instance_data,
+ handle,
+ source_timestamp);
+}
+
+DDS::ReturnCode_t
+PortDataWriterImpl::unregister_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle,
+ const ::DDS::Time_t & source_timestamp
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex,
+ guard,
+ get_lock (),
+ ::DDS::RETCODE_ERROR);
+ ::DDS::InstanceHandle_t registered_handle
+ = this->get_instance_handle(instance_data);
+
+ if(registered_handle == ::OpenDDS::DCPS::HANDLE_NIL)
+ {
+ // This case could be the instance is not registered yet or
+ // already unregistered.
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT("(%P|%t) ")
+ ACE_TEXT("PortDataWriterImpl::unregister, ")
+ ACE_TEXT("The instance is not registered.\n")),
+ ::DDS::RETCODE_ERROR);
+ }
+ else if (handle != ::OpenDDS::DCPS::HANDLE_NIL && handle != registered_handle)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT("(%P|%t) ")
+ ACE_TEXT("PortDataWriterImpl::unregister, ")
+ ACE_TEXT("The given handle=%X is different from "
+ "registered handle=%X.\n"),
+ handle, registered_handle),
+ ::DDS::RETCODE_ERROR);
+ }
+
+ // DataWriterImpl::unregister will call back to inform the PortDataWriter
+ // that the instance handle is removed from there and hence PortDataWriter
+ // can remove the instance here.
+ return this->OPENDDS_DCPS_DataWriterImpl::unregister(handle, source_timestamp);
+}
+
+DDS::ReturnCode_t
+PortDataWriterImpl::write (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ::DDS::Time_t source_timestamp
+ = ::OpenDDS::DCPS::time_value_to_time (ACE_OS::gettimeofday ());
+ return write_w_timestamp (instance_data,
+ handle,
+ source_timestamp);
+}
+
+DDS::ReturnCode_t
+PortDataWriterImpl::write_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle,
+ const ::DDS::Time_t & source_timestamp
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ // A lock is obtained on entering this method to serialize access to
+ // the contained data storage and interfaces. This lock protects the
+ // marshaled data buffers as well as the instance data containers.
+
+ // This operation assumes the provided handle is valid. The handle
+ // provided will not be verified.
+
+ ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex,
+ guard,
+ get_lock (),
+ ::DDS::RETCODE_ERROR);
+
+ ACE_Message_Block* marshalled = 0;
+
+ if (handle == ::DDS::HANDLE_NIL)
+ {
+ ::DDS::InstanceHandle_t registered_handle = ::DDS::HANDLE_NIL;
+ ::DDS::ReturnCode_t ret
+ = this->get_or_create_instance_handle(registered_handle,
+ instance_data,
+ source_timestamp);
+ if (ret != ::DDS::RETCODE_OK)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT("(%P|%t) ")
+ ACE_TEXT("PortDataWriterImpl::write, ")
+ ACE_TEXT("register failed err=%d.\n"),
+ ret), ret);
+ }
+
+ handle = registered_handle;
+ }
+
+ marshalled = dds_marshal (instance_data); // FOR_WRITE - using cached allocators
+ return this->OPENDDS_DCPS_DataWriterImpl::write(marshalled, handle, source_timestamp);
+}
+
+DDS::ReturnCode_t
+PortDataWriterImpl::dispose (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t instance_handle
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ::DDS::Time_t source_timestamp
+ = ::OpenDDS::DCPS::time_value_to_time (ACE_OS::gettimeofday ());
+ return dispose_w_timestamp (instance_data,
+ instance_handle,
+ source_timestamp);
+}
+
+DDS::ReturnCode_t
+PortDataWriterImpl::dispose_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t instance_handle,
+ const ::DDS::Time_t & source_timestamp
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex,
+ guard,
+ get_lock (),
+ ::DDS::RETCODE_ERROR);
+
+ if(instance_handle == ::OpenDDS::DCPS::HANDLE_NIL)
+ {
+ instance_handle = this->get_instance_handle(instance_data);
+ if (instance_handle == ::OpenDDS::DCPS::HANDLE_NIL)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT("(%P|%t) ")
+ ACE_TEXT("PortDataWriterImpl::dispose, ")
+ ACE_TEXT("The instance sample is not registered.\n")),
+ ::DDS::RETCODE_ERROR);
+ }
+ }
+
+ return this->OPENDDS_DCPS_DataWriterImpl::dispose(instance_handle, source_timestamp);
+}
+
+DDS::ReturnCode_t
+PortDataWriterImpl::get_key_value (
+ ::IOTest::Port & key_holder,
+ ::DDS::InstanceHandle_t handle
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex,
+ guard,
+ get_lock (),
+ ::DDS::RETCODE_ERROR);
+ InstanceMap::iterator it;
+ for (it = instance_map_.begin ();
+ it != instance_map_.end ();
+ it ++)
+ {
+ if (it->second == handle)
+ {
+ key_holder = it->first;
+ return ::DDS::RETCODE_OK;
+ }
+ }
+
+ return ::DDS::RETCODE_ERROR;
+}
+
+
+void
+PortDataWriterImpl::init (
+ ::DDS::Topic_ptr topic,
+ OpenDDS::DCPS::TopicImpl *topic_servant,
+ const ::DDS::DataWriterQos & qos,
+ ::DDS::DataWriterListener_ptr a_listener,
+ OpenDDS::DCPS::DomainParticipantImpl* participant_servant,
+ ::DDS::Publisher_ptr publisher,
+ OpenDDS::DCPS::PublisherImpl* publisher_servant,
+ ::DDS::DataWriter_ptr dw_objref,
+ ::OpenDDS::DCPS::DataWriterRemote_ptr dw_remote_objref
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ this->OPENDDS_DCPS_DataWriterImpl::init (topic,
+ topic_servant,
+ qos,
+ a_listener,
+ participant_servant,
+ publisher,
+ publisher_servant,
+ dw_objref,
+ dw_remote_objref);
+
+ ::IOTest::Port data;
+ if (_tao_is_bounded_size (data))
+ {
+ marshaled_size_ = _dcps_max_marshaled_size (data);
+ }
+ else
+ {
+ marshaled_size_ = 0;// should use _dcps_find_size when marshaling
+ }
+}
+
+
+::DDS::ReturnCode_t
+PortDataWriterImpl::enable_specific (
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ::IOTest::Port data;
+ if (_tao_is_bounded_size (data))
+ {
+ data_allocator_ = new DataAllocator (n_chunks_, marshaled_size_);
+ if (::OpenDDS::DCPS::DCPS_debug_level >= 2)
+ ACE_DEBUG((LM_DEBUG,"(%P|%t) PortDataWriterImpl::enable_specific-data"
+ " Dynamic_Cached_Allocator_With_Overflow %x with %d chunks\n",
+ data_allocator_, n_chunks_));
+ }
+ else
+ {
+ if (::OpenDDS::DCPS::DCPS_debug_level >= 2)
+ ACE_DEBUG((LM_DEBUG,"(%P|%t) PortDataWriterImpl::enable_specific"
+ " is unbounded data - allocate from heap\n"));
+ }
+
+ mb_allocator_ =
+ new ::OpenDDS::DCPS::MessageBlockAllocator (n_chunks_ * association_chunk_multiplier_);
+ db_allocator_ = new ::OpenDDS::DCPS::DataBlockAllocator (n_chunks_);
+
+ if (::OpenDDS::DCPS::DCPS_debug_level >= 2)
+ {
+ ACE_DEBUG((LM_DEBUG,"(%P|%t) PortDataWriterImpl::enable_specific-mb"
+ " Cached_Allocator_With_Overflow %x with %d chunks\n",
+ mb_allocator_, n_chunks_ * association_chunk_multiplier_));
+ ACE_DEBUG((LM_DEBUG,"(%P|%t) PortDataWriterImpl::enable_specific-db"
+ " Cached_Allocator_With_Overflow %x with %d chunks\n",
+ db_allocator_, n_chunks_));
+ }
+
+
+ db_lock_pool_ = new DataBlockLockPool(n_chunks_);
+
+ return ::DDS::RETCODE_OK;
+}
+
+// Note: The PortDataWriter gives ownership of the marshalled data
+// to the WriteDataContainer.
+ACE_Message_Block*
+ PortDataWriterImpl::dds_marshal(
+ const ::IOTest::Port& instance_data,
+ int for_write)
+{
+ ACE_Message_Block* mb;
+ if (for_write)
+ {
+ ACE_NEW_MALLOC_RETURN (mb,
+ static_cast<ACE_Message_Block*> (
+ mb_allocator_->malloc (
+ sizeof (ACE_Message_Block))),
+ ACE_Message_Block(
+ marshaled_size_ ? marshaled_size_ :
+ _dcps_find_size(instance_data),
+ ACE_Message_Block::MB_DATA,
+ 0, //cont
+ 0, //data
+ data_allocator_, //allocator_strategy
+ db_lock_pool_->get_lock(), //data block locking_strategy
+ ACE_DEFAULT_MESSAGE_BLOCK_PRIORITY,
+ ACE_Time_Value::zero,
+ ACE_Time_Value::max_time,
+ db_allocator_,
+ mb_allocator_),
+ 0);
+ }
+ else
+ { // Don't use the cached allocator for the registered sample message
+ // block.
+
+ ACE_NEW_RETURN (mb,
+ ACE_Message_Block(
+ marshaled_size_ ? marshaled_size_ :
+ _dcps_find_size(instance_data) ),
+ 0);
+ }
+
+ ::TAO::DCPS::Serializer serializer (mb,
+ this->get_publisher_servant()->swap_bytes());
+ serializer << instance_data;
+
+ return mb;
+}
+
+::DDS::ReturnCode_t
+ PortDataWriterImpl::get_or_create_instance_handle(
+ DDS::InstanceHandle_t& handle,
+ const ::IOTest::Port& instance_data,
+ const ::DDS::Time_t & source_timestamp)
+{
+ handle = ::OpenDDS::DCPS::HANDLE_NIL;
+ InstanceMap::const_iterator it = instance_map_.find(instance_data);
+
+ int needs_creation = 1;
+ int needs_registration = 1;
+
+ if (it != instance_map_.end())
+ {
+ needs_creation = 0;
+
+ handle = it->second;
+ OpenDDS::DCPS::PublicationInstance* instance =
+ this->OPENDDS_DCPS_DataWriterImpl::get_handle_instance(handle);
+
+ if (instance->unregistered_ == false)
+ {
+ needs_registration = 0;
+ }
+ // else: The instance is unregistered and now register again.
+ }
+
+ if (needs_registration)
+ {
+ // don't use fast allocator for registration.
+ ACE_Message_Block* marshalled = this->dds_marshal(instance_data, 0); //NOT_FOR_WRITE
+
+ // tell DataWriterLocal and Publisher about the instance.
+ ::DDS::ReturnCode_t ret = register_instance(handle, marshalled, source_timestamp);
+ // note: the WriteDataContainer/PublicationInstance maintains ownership
+ // of the marshalled sample.
+
+ if (ret != ::DDS::RETCODE_OK)
+ {
+ marshalled->release ();
+ return ret;
+ }
+
+ if (needs_creation)
+ {
+ std::pair<InstanceMap::iterator, bool> pair
+ = instance_map_.insert(InstanceMap::value_type(instance_data, handle));
+ if (pair.second == false)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT("(%P|%t) "
+ "PortDataWriterImpl::get_or_create_instance_handle, ")
+ ACE_TEXT("insert IOTest::Port failed. \n")),
+ ::DDS::RETCODE_ERROR);
+ }
+ } // end of if (needs_creation)
+ } // end of if (needs_registration)
+
+ return ::DDS::RETCODE_OK;
+}
+
+::DDS::InstanceHandle_t
+ PortDataWriterImpl::get_instance_handle(
+ ::IOTest::Port instance_data)
+{
+ InstanceMap::const_iterator it = instance_map_.find(instance_data);
+
+ if (it == instance_map_.end())
+ {
+ return ::OpenDDS::DCPS::HANDLE_NIL;
+ }
+ else
+ {
+ return it->second;
+ }
+}
+
+
+void
+PortDataWriterImpl::unregistered(::DDS::InstanceHandle_t instance_handle)
+{
+ // Previously this method removed the instance from the instance_map_.
+ // The instance handle will not be removed from the
+ // map so the instance for re-registration after unregistered
+ // will use the old handle.
+ ACE_UNUSED_ARG (instance_handle);
+}
+
+}; // IOTest
+
+
+namespace IOTest {
+
+
+// Implementation skeleton constructor
+PortDataReaderImpl::PortDataReaderImpl (void)
+{
+
+}
+
+void
+PortDataReaderImpl::init (
+ OpenDDS::DCPS::TopicImpl* a_topic,
+ const ::DDS::DataReaderQos & qos,
+ ::DDS::DataReaderListener_ptr a_listener,
+ OpenDDS::DCPS::DomainParticipantImpl* participant,
+ OpenDDS::DCPS::SubscriberImpl* subscriber,
+ ::DDS::Subscriber_ptr subscriber_objref,
+ ::DDS::DataReader_ptr dr_objerf,
+ OpenDDS::DCPS::DataReaderRemote_ptr dr_remote_objref
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ this->OPENDDS_DCPS_DataReaderImpl::init(a_topic,
+ qos,
+ a_listener,
+ participant,
+ subscriber,
+ subscriber_objref,
+ dr_objerf,
+ dr_remote_objref) ;
+
+}
+
+::DDS::ReturnCode_t
+PortDataReaderImpl::enable_specific (
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ data_allocator_ = new DataAllocator(get_n_chunks ()) ;
+ if (::OpenDDS::DCPS::DCPS_debug_level >= 2)
+ ACE_DEBUG((LM_DEBUG,"PortDataReaderImpl::enable_specific-data"
+ " Cached_Allocator_With_Overflow %x with %d chunks\n",
+ data_allocator_, this->get_n_chunks () ));
+
+ return ::DDS::RETCODE_OK;
+}
+
+// Implementation skeleton destructor
+PortDataReaderImpl::~PortDataReaderImpl (void)
+{
+ InstanceMap::iterator it;
+ for (it = instance_map_.begin ();
+ it != instance_map_.end ();
+ it ++)
+ {
+ ::DDS::InstanceHandle_t handle = it->second;
+ OpenDDS::DCPS::SubscriptionInstance *ptr =
+ this->OPENDDS_DCPS_DataReaderImpl::get_handle_instance (handle) ;
+
+ while (ptr->rcvd_sample_.size_)
+ {
+ OpenDDS::DCPS::ReceivedDataElement *head_ptr = ptr->rcvd_sample_.head_ ;
+ ptr->rcvd_sample_.remove(head_ptr) ;
+ dec_ref_data_element(head_ptr);
+ }
+
+ delete ptr ;
+ }
+
+ delete data_allocator_ ;
+ //X SHH release the data samples in the instance_map_.
+}
+
+
+DDS::ReturnCode_t
+PortDataReaderImpl::delete_contained_entities (
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ return this->delete_contained_entities() ;
+}
+
+
+// ::IOTest:: IOTest::
+DDS::ReturnCode_t
+PortDataReaderImpl::read (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ DDS::ReturnCode_t precond = check_inputs("read", received_data, info_seq, max_samples);
+ if (::DDS::RETCODE_OK != precond)
+ {
+ return precond;
+ }
+
+ ::IOTest::PortSeq::PrivateMemberAccess received_data_p (received_data);
+
+ ::CORBA::Long count(0);
+
+ ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex,
+ guard,
+ this->sample_lock_,
+ ::DDS::RETCODE_ERROR);
+
+ LoanerGuard loanerGuard(received_data_p, this);
+
+ InstanceMap::iterator it;
+ for (it = instance_map_.begin ();
+ it != instance_map_.end ();
+ it ++)
+ {
+ ::CORBA::Long start_samples_in_instance(count) ;
+ ::CORBA::Long samples_in_instance_count(0) ;
+ ::DDS::InstanceHandle_t handle = it->second;
+
+ OpenDDS::DCPS::SubscriptionInstance *ptr =
+ this->OPENDDS_DCPS_DataReaderImpl::get_handle_instance (handle) ;
+
+ bool mrg = false; //most_recent_generation
+
+ if ((ptr->instance_state_.view_state() & view_states) &&
+ (ptr->instance_state_.instance_state() & instance_states))
+ {
+
+ for (OpenDDS::DCPS::ReceivedDataElement *item = ptr->rcvd_sample_.head_ ;
+ item != 0 ; item = item->next_data_sample_)
+ {
+ if (item->sample_state_ & sample_states)
+ {
+ // Increase sequence length before adding new element to sequence.
+ received_data_p.internal_set_length (count + 1);
+ if (received_data.maximum() != 0)
+ {
+ received_data_p.assign_sample(count,
+ *(::IOTest::Port *)item->registered_data_) ;
+ }
+ else
+ {
+ received_data_p.assign_ptr(count, item);
+ loanerGuard.set();
+ }
+ // Increase sequence length before adding new element to sequence.
+ info_seq.length (count + 1);
+ ptr->instance_state_.sample_info(info_seq[count], item) ;
+
+ item->sample_state_ = ::DDS::READ_SAMPLE_STATE ;
+
+ if (! mrg)
+ mrg = ptr->instance_state_.most_recent_generation(item);
+
+ count++ ;
+ samples_in_instance_count++ ;
+ }
+ if (count == max_samples)
+ {
+ break ;
+ }
+ } // end matches sample state
+ } // end matches view and instance state
+
+
+ if (samples_in_instance_count)
+ {
+ if (mrg)
+ ptr->instance_state_.accessed() ;
+
+ //
+ // Get the sample_ranks, generation_ranks, and
+ // absolute_generation_ranks for this info_seq
+ //
+ sample_info(info_seq, start_samples_in_instance,
+ samples_in_instance_count,
+ ptr->rcvd_sample_.tail_) ;
+ }
+
+ if (count == max_samples)
+ {
+ break ;
+ }
+ }
+
+ if (count)
+ {
+ return ::DDS::RETCODE_OK;
+ }
+ else
+ {
+ return ::DDS::RETCODE_NO_DATA ;
+ }
+}
+
+DDS::ReturnCode_t
+PortDataReaderImpl::take (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ DDS::ReturnCode_t precond = check_inputs("take", received_data, info_seq, max_samples);
+ if (::DDS::RETCODE_OK != precond)
+ {
+ return precond;
+ }
+
+ ::IOTest::PortSeq::PrivateMemberAccess received_data_p (received_data);
+
+ ::CORBA::Long count(0) ;
+
+ ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex,
+ guard,
+ this->sample_lock_,
+ ::DDS::RETCODE_ERROR);
+
+ LoanerGuard loanerGuard(received_data_p, this);
+
+ InstanceMap::iterator it;
+ for (it = instance_map_.begin ();
+ it != instance_map_.end ();
+ it ++)
+ {
+ ::CORBA::Long start_samples_in_instance(count) ;
+ ::CORBA::Long samples_in_instance_count(0) ;
+ ::DDS::InstanceHandle_t handle = it->second;
+ OpenDDS::DCPS::SubscriptionInstance *ptr =
+ this->OPENDDS_DCPS_DataReaderImpl::get_handle_instance (handle) ;
+
+ bool mrg = false; //most_recent_generation
+
+ OpenDDS::DCPS::ReceivedDataElement *tail = 0 ;
+ if ((ptr->instance_state_.view_state() & view_states) &&
+ (ptr->instance_state_.instance_state() & instance_states))
+ {
+
+ OpenDDS::DCPS::ReceivedDataElement *next ;
+ tail = 0 ;
+ OpenDDS::DCPS::ReceivedDataElement *item = ptr->rcvd_sample_.head_ ;
+ while (item)
+ {
+ if (item->sample_state_ & sample_states)
+ {
+ // Increase sequence length before adding new element to sequence.
+ received_data_p.internal_set_length (count + 1);
+ if (received_data.maximum() != 0)
+ {
+ received_data_p.assign_sample(count,
+ *(::IOTest::Port *)item->registered_data_) ;
+ }
+ else
+ {
+ received_data_p.assign_ptr(count, item);
+ loanerGuard.set();
+ }
+ // Increase sequence length before adding new element to sequence.
+ info_seq.length (count + 1);
+ ptr->instance_state_.sample_info(info_seq[count], item) ;
+
+ item->sample_state_ = ::DDS::READ_SAMPLE_STATE ;
+
+ if (! mrg)
+ mrg = ptr->instance_state_.most_recent_generation(item);
+ if (item == ptr->rcvd_sample_.tail_)
+ {
+ tail = ptr->rcvd_sample_.tail_ ;
+ item = item->next_data_sample_ ;
+ }
+ else
+ {
+ next = item->next_data_sample_ ;
+
+ ptr->rcvd_sample_.remove(item) ;
+ dec_ref_data_element(item);
+
+ item = next ;
+ }
+
+ samples_in_instance_count++ ;
+ count++ ;
+ }
+ if (count == max_samples)
+ {
+ break ;
+ }
+ }
+ }
+
+ if (samples_in_instance_count)
+ {
+ if (mrg)
+ ptr->instance_state_.accessed() ;
+
+ //
+ // Get the sample_ranks, generation_ranks, and
+ // absolute_generation_ranks for this info_seq
+ //
+ if (tail)
+ {
+ sample_info(info_seq, start_samples_in_instance,
+ samples_in_instance_count,
+ tail) ;
+
+ ptr->rcvd_sample_.remove(tail) ;
+ dec_ref_data_element(tail);
+
+ }
+ else
+ {
+ sample_info(info_seq, start_samples_in_instance,
+ samples_in_instance_count,
+ ptr->rcvd_sample_.tail_) ;
+ }
+ }
+ if (count == max_samples)
+ {
+ break ;
+ }
+ }
+
+ if (count)
+ {
+ return ::DDS::RETCODE_OK;
+ }
+ else
+ {
+ return ::DDS::RETCODE_NO_DATA ;
+ }
+}
+
+DDS::ReturnCode_t
+PortDataReaderImpl::read_next_sample (
+ ::IOTest::Port & received_data,
+ ::DDS::SampleInfo & sample_info
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+
+ bool found_data = false;
+
+ ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex,
+ guard,
+ this->sample_lock_,
+ ::DDS::RETCODE_ERROR);
+
+ InstanceMap::iterator it;
+ for (it = instance_map_.begin ();
+ it != instance_map_.end ();
+ it ++)
+ {
+ ::DDS::InstanceHandle_t handle = it->second;
+ OpenDDS::DCPS::SubscriptionInstance *ptr =
+ this->OPENDDS_DCPS_DataReaderImpl::get_handle_instance (handle) ;
+
+ bool mrg = false; //most_recent_generation
+
+ if ((ptr->instance_state_.view_state() & ::DDS::ANY_VIEW_STATE) &&
+ (ptr->instance_state_.instance_state() & ::DDS::ANY_INSTANCE_STATE))
+ {
+ for (OpenDDS::DCPS::ReceivedDataElement *item = ptr->rcvd_sample_.head_ ;
+ item != 0 ; item = item->next_data_sample_)
+ {
+ if (item->sample_state_ & ::DDS::NOT_READ_SAMPLE_STATE)
+ {
+ received_data =
+ *((::IOTest::Port *)item->registered_data_) ;
+ ptr->instance_state_.sample_info(sample_info, item) ;
+
+ item->sample_state_ = ::DDS::READ_SAMPLE_STATE ;
+
+
+ if (! mrg)
+ mrg = ptr->instance_state_.most_recent_generation(item);
+
+ found_data = true ;
+ }
+ if (found_data)
+ {
+ break ;
+ }
+ }
+ }
+
+ if (found_data)
+ {
+ if (mrg)
+ ptr->instance_state_.accessed() ;
+
+ //
+ // Get the sample_ranks, generation_ranks, and
+ // absolute_generation_ranks for this info_seq
+ //
+ this->sample_info(sample_info, ptr->rcvd_sample_.tail_) ;
+
+ break ;
+ }
+ }
+
+ if (found_data)
+ {
+ return ::DDS::RETCODE_OK;
+ }
+
+ return ::DDS::RETCODE_NO_DATA ;
+}
+
+DDS::ReturnCode_t
+PortDataReaderImpl::take_next_sample (
+ ::IOTest::Port & received_data,
+ ::DDS::SampleInfo & sample_info
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ bool found_data = false;
+
+
+ ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex,
+ guard,
+ this->sample_lock_,
+ ::DDS::RETCODE_ERROR);
+
+ InstanceMap::iterator it;
+ for (it = instance_map_.begin ();
+ it != instance_map_.end ();
+ it ++)
+ {
+ ::DDS::InstanceHandle_t handle = it->second;
+ OpenDDS::DCPS::SubscriptionInstance *ptr =
+ this->OPENDDS_DCPS_DataReaderImpl::get_handle_instance (handle) ;
+
+ bool mrg = false; //most_recent_generation
+
+ OpenDDS::DCPS::ReceivedDataElement *tail = 0 ;
+ if ((ptr->instance_state_.view_state() & ::DDS::ANY_VIEW_STATE) &&
+ (ptr->instance_state_.instance_state() & ::DDS::ANY_INSTANCE_STATE))
+ {
+
+ OpenDDS::DCPS::ReceivedDataElement *next ;
+ tail = 0 ;
+ OpenDDS::DCPS::ReceivedDataElement *item = ptr->rcvd_sample_.head_ ;
+ while (item)
+ {
+ if (item->sample_state_ & ::DDS::NOT_READ_SAMPLE_STATE)
+ {
+ received_data =
+ *((::IOTest::Port *)item->registered_data_) ;
+ ptr->instance_state_.sample_info(sample_info, item) ;
+
+ item->sample_state_ = ::DDS::READ_SAMPLE_STATE ;
+
+ if (! mrg)
+ mrg = ptr->instance_state_.most_recent_generation(item);
+
+ if (item == ptr->rcvd_sample_.tail_)
+ {
+ tail = ptr->rcvd_sample_.tail_ ;
+ item = item->next_data_sample_ ;
+ }
+ else
+ {
+ next = item->next_data_sample_ ;
+
+ ptr->rcvd_sample_.remove(item) ;
+ dec_ref_data_element(item);
+
+ item = next ;
+ }
+
+ found_data = true;
+ }
+ if (found_data)
+ {
+ break ;
+ }
+ }
+ }
+
+ if (found_data)
+ {
+ if (mrg)
+ ptr->instance_state_.accessed() ;
+
+ //
+ // Get the sample_ranks, generation_ranks, and
+ // absolute_generation_ranks for this info_seq
+ //
+ if (tail)
+ {
+ this->sample_info(sample_info, tail) ;
+
+ ptr->rcvd_sample_.remove(tail) ;
+ dec_ref_data_element(tail);
+ }
+ else
+ {
+ this->sample_info(sample_info, ptr->rcvd_sample_.tail_) ;
+ }
+
+ break ;
+ }
+ }
+
+
+
+ if (found_data)
+ {
+ return ::DDS::RETCODE_OK;
+ }
+ else
+ {
+ return ::DDS::RETCODE_NO_DATA ;
+ }
+}
+
+DDS::ReturnCode_t
+PortDataReaderImpl::read_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ DDS::ReturnCode_t precond = check_inputs("read_instance", received_data, info_seq, max_samples);
+ if (::DDS::RETCODE_OK != precond)
+ {
+ return precond;
+ }
+
+ ::IOTest::PortSeq::PrivateMemberAccess received_data_p (received_data);
+
+ ::CORBA::Long count(0) ;
+
+ ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex,
+ guard,
+ this->sample_lock_,
+ ::DDS::RETCODE_ERROR);
+
+ LoanerGuard loanerGuard(received_data_p, this);
+
+ OpenDDS::DCPS::SubscriptionInstance * ptr =
+ this->OPENDDS_DCPS_DataReaderImpl::get_handle_instance (a_handle) ;
+
+ bool mrg = false; //most_recent_generation
+
+ if ((ptr->instance_state_.view_state() & view_states) &&
+ (ptr->instance_state_.instance_state() & instance_states))
+ {
+ for (OpenDDS::DCPS::ReceivedDataElement *item = ptr->rcvd_sample_.head_ ;
+ item != 0 ; item = item->next_data_sample_)
+ {
+ if (item->sample_state_ & sample_states)
+ {
+ // Increase sequence length before adding new element to sequence.
+ received_data_p.internal_set_length (count + 1);
+ if (received_data.maximum() != 0)
+ {
+ received_data_p.assign_sample(count,
+ *(::IOTest::Port *)item->registered_data_) ;
+ }
+ else
+ {
+ received_data_p.assign_ptr(count, item);
+ loanerGuard.set();
+ }
+ // Increase sequence length before adding new element to sequence.
+ info_seq.length (count + 1);
+ ptr->instance_state_.sample_info(info_seq[count], item) ;
+
+ item->sample_state_ = ::DDS::READ_SAMPLE_STATE ;
+
+ if (! mrg)
+ mrg = ptr->instance_state_.most_recent_generation(item);
+
+ count++ ;
+ }
+
+ if (count == max_samples)
+ {
+ break ;
+ }
+ }
+ }
+
+ if (count)
+ {
+ if (mrg)
+ ptr->instance_state_.accessed() ;
+
+ //
+ // Get the sample_ranks, generation_ranks, and
+ // absolute_generation_ranks for this info_seq
+ //
+ sample_info(info_seq, 0, count, ptr->rcvd_sample_.tail_) ;
+
+ return ::DDS::RETCODE_OK;
+ }
+ else
+ {
+ return ::DDS::RETCODE_NO_DATA ;
+ }
+}
+
+DDS::ReturnCode_t
+PortDataReaderImpl::take_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ DDS::ReturnCode_t precond = check_inputs("take_instance", received_data, info_seq, max_samples);
+ if (::DDS::RETCODE_OK != precond)
+ {
+ return precond;
+ }
+
+ ::IOTest::PortSeq::PrivateMemberAccess received_data_p (received_data);
+
+ ::CORBA::Long count(0) ;
+
+ ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex,
+ guard,
+ this->sample_lock_,
+ ::DDS::RETCODE_ERROR);
+
+ LoanerGuard loanerGuard(received_data_p, this);
+
+ OpenDDS::DCPS::SubscriptionInstance * ptr =
+ this->OPENDDS_DCPS_DataReaderImpl::get_handle_instance (a_handle) ;
+
+ OpenDDS::DCPS::ReceivedDataElement *tail = 0 ;
+
+ bool mrg = false; //most_recent_generation
+
+ if ((ptr->instance_state_.view_state() & view_states) &&
+ (ptr->instance_state_.instance_state() & instance_states))
+ {
+ OpenDDS::DCPS::ReceivedDataElement *next ;
+ tail = 0 ;
+ OpenDDS::DCPS::ReceivedDataElement *item = ptr->rcvd_sample_.head_ ;
+ while (item)
+ {
+ if (item->sample_state_ & sample_states)
+ {
+ // Increase sequence length before adding new element to sequence.
+ received_data_p.internal_set_length (count + 1);
+ if (received_data.maximum() != 0)
+ {
+ received_data_p.assign_sample(count,
+ *(::IOTest::Port *)item->registered_data_) ;
+ }
+ else
+ {
+ received_data_p.assign_ptr(count, item);
+ loanerGuard.set();
+ }
+
+ // Increase sequence length before adding new element to sequence.
+ info_seq.length (count + 1);
+ ptr->instance_state_.sample_info(info_seq[count], item) ;
+
+ item->sample_state_ = ::DDS::READ_SAMPLE_STATE ;
+
+ if (! mrg)
+ mrg = ptr->instance_state_.most_recent_generation(item);
+ if (item == ptr->rcvd_sample_.tail_)
+ {
+ tail = ptr->rcvd_sample_.tail_ ;
+ item = item->next_data_sample_ ;
+ }
+ else
+ {
+ next = item->next_data_sample_ ;
+
+ ptr->rcvd_sample_.remove(item) ;
+ dec_ref_data_element(item);
+
+ item = next ;
+ }
+
+ count++ ;
+ }
+ if (count == max_samples)
+ {
+ break ;
+ }
+ } // while sample
+ } // if view/instance state
+
+ if (count)
+ {
+ if (mrg)
+ ptr->instance_state_.accessed() ;
+
+ //
+ // Get the sample_ranks, generation_ranks, and
+ // absolute_generation_ranks for this info_seq
+ //
+ if (tail)
+ {
+ sample_info(info_seq, 0,
+ count,
+ tail) ;
+
+ ptr->rcvd_sample_.remove(tail) ;
+ dec_ref_data_element(tail);
+ }
+ else
+ {
+ sample_info(info_seq, 0,
+ count,
+ ptr->rcvd_sample_.tail_) ;
+ }
+ }
+
+ if (count)
+ {
+ return ::DDS::RETCODE_OK;
+ }
+ else
+ {
+ return ::DDS::RETCODE_NO_DATA ;
+ }
+}
+
+DDS::ReturnCode_t
+PortDataReaderImpl::read_next_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ::DDS::InstanceHandle_t handle(::OpenDDS::DCPS::HANDLE_NIL) ;
+
+ ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex,
+ guard,
+ this->sample_lock_,
+ ::DDS::RETCODE_ERROR);
+
+ InstanceMap::iterator it;
+ if (a_handle == ::OpenDDS::DCPS::HANDLE_NIL)
+ {
+ it = instance_map_.begin () ;
+ }
+ else
+ {
+ for (it = instance_map_.begin () ; it != instance_map_.end ();
+ it ++)
+ {
+ if (a_handle == it->second)
+ {
+ it++ ;
+ break ;
+ }
+ }
+ }
+
+ DDS::ReturnCode_t status ;
+
+ for (; it != instance_map_.end () ; it++)
+ {
+ handle = it->second ;
+ status = read_instance(received_data, info_seq, max_samples,
+ handle, sample_states, view_states,
+ instance_states) ;
+ if (status != ::DDS::RETCODE_NO_DATA)
+ {
+ return status ;
+ }
+ }
+
+ return ::DDS::RETCODE_NO_DATA ;
+}
+
+DDS::ReturnCode_t
+PortDataReaderImpl::take_next_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ::DDS::InstanceHandle_t handle(::OpenDDS::DCPS::HANDLE_NIL) ;
+
+ ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex,
+ guard,
+ this->sample_lock_,
+ ::DDS::RETCODE_ERROR);
+
+ InstanceMap::iterator it;
+ if (a_handle == ::OpenDDS::DCPS::HANDLE_NIL)
+ {
+ it = instance_map_.begin () ;
+ }
+ else
+ {
+ for (it = instance_map_.begin () ; it != instance_map_.end ();
+ it ++)
+ {
+ if (a_handle == it->second)
+ {
+ it++ ;
+ break ;
+ }
+ }
+ }
+
+ DDS::ReturnCode_t status ;
+
+ for (; it != instance_map_.end () ; it++)
+ {
+ handle = it->second ;
+ status = take_instance(received_data, info_seq, max_samples,
+ handle, sample_states, view_states,
+ instance_states) ;
+ if (status != ::DDS::RETCODE_NO_DATA)
+ {
+ total_samples() ; // see if we are empty
+ return status ;
+ }
+ }
+
+ return ::DDS::RETCODE_NO_DATA ;
+}
+
+
+void
+PortDataReaderImpl::release_loan (
+ ::IOTest::PortSeq & received_data
+ )
+{
+ received_data.length(0);
+}
+
+
+void
+PortDataReaderImpl::dec_ref_data_element(
+ ::OpenDDS::DCPS::ReceivedDataElement* item
+ )
+{
+ if (0 == item->dec_ref())
+ {
+ ::IOTest::Port* ptr = static_cast< ::IOTest::Port* >(item->registered_data_);
+ ACE_DES_FREE (ptr,
+ data_allocator_->free,
+ Port );
+
+ ACE_DES_FREE (item,
+ rd_allocator_->free,
+ ReceivedDataElement);
+ }
+}
+
+
+DDS::ReturnCode_t
+PortDataReaderImpl::return_loan (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ // some incomplete tests to see that the data and info are from the same read.
+ if (received_data.length() != info_seq.length())
+ {
+ return ::DDS::RETCODE_PRECONDITION_NOT_MET;
+ }
+
+ if (received_data.release())
+ {
+ // nothing to do because this is not zero-copy data
+ return ::DDS::RETCODE_OK;
+ }
+ else
+ {
+ info_seq.length(0);
+ received_data.length(0);
+ }
+ return ::DDS::RETCODE_OK;
+}
+
+DDS::ReturnCode_t
+PortDataReaderImpl::get_key_value (
+ ::IOTest::Port & key_holder,
+ ::DDS::InstanceHandle_t handle
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex,
+ guard,
+ this->sample_lock_,
+ ::DDS::RETCODE_ERROR);
+
+ InstanceMap::iterator it;
+ for (it = instance_map_.begin ();
+ it != instance_map_.end ();
+ it ++)
+ {
+ if (it->second == handle)
+ {
+ key_holder = it->first;
+ return ::DDS::RETCODE_OK;
+ }
+ }
+
+ return ::DDS::RETCODE_ERROR;
+}
+
+void
+PortDataReaderImpl::dds_demarshal(const OpenDDS::DCPS::ReceivedDataSample& sample)
+{
+ ::IOTest::Port *data /* = new ::IOTest::Port(instance_data) */ ;
+
+ ACE_NEW_MALLOC_NORETURN (data,
+ static_cast< ::IOTest::Port *> (
+ data_allocator_->malloc (
+ sizeof (::IOTest::Port))),
+ ::IOTest::Port) ;
+
+ TAO::DCPS::Serializer ser(sample.sample_, sample.header_.byte_order_ != TAO_ENCAP_BYTE_ORDER) ;
+ ser >> *data ;
+
+ store_instance_data(data, sample.header_) ;
+}
+
+::DDS::ReturnCode_t
+PortDataReaderImpl::store_instance_data(
+ ::IOTest::Port *instance_data,
+ const OpenDDS::DCPS::DataSampleHeader& header )
+{
+ DDS::InstanceHandle_t handle(::OpenDDS::DCPS::HANDLE_NIL) ;
+
+ //!!! caller should already have the sample_lock_
+
+ InstanceMap::const_iterator it = instance_map_.find(*instance_data);
+
+ if (it == instance_map_.end())
+ {
+ OpenDDS::DCPS::SubscriptionInstance* instance = 0;
+ handle = this->OPENDDS_DCPS_DataReaderImpl::get_next_handle ();
+ ACE_NEW_RETURN (instance,
+ OpenDDS::DCPS::SubscriptionInstance(this, handle),
+ ::DDS::RETCODE_ERROR);
+
+ instance->instance_handle_ = handle;
+ int ret = bind(instances_, handle, instance);
+
+ if (ret != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT("(%P|%t) "
+ "PortDataReaderImpl::store_instance_data, ")
+ ACE_TEXT("insert handle failed. \n")),
+ ::DDS::RETCODE_ERROR);
+ return ::DDS::RETCODE_ERROR;
+ }
+
+ std::pair<InstanceMap::iterator, bool> bpair
+ = instance_map_.insert(InstanceMap::value_type(*instance_data,
+ handle));
+ if (bpair.second == false)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT("(%P|%t) "
+ "PortDataReaderImpl::store_instance_data, ")
+ ACE_TEXT("insert ::IOTest::Port failed. \n")),
+ ::DDS::RETCODE_ERROR);
+ }
+ }
+ else
+ {
+ handle = it->second;
+ }
+
+ if (header.message_id_ != OpenDDS::DCPS::INSTANCE_REGISTRATION)
+ {
+ OpenDDS::DCPS::SubscriptionInstance* instance_ptr =
+ this->OPENDDS_DCPS_DataReaderImpl::get_handle_instance (handle) ;
+
+ // TBD - we also need to reject for > RESOURCE_LIMITS.max_samples
+ // and RESOURCE_LIMITS.max_instances.
+ if ((this->qos_.resource_limits.max_samples_per_instance !=
+ ::DDS::LENGTH_UNLIMITED) &&
+ (instance_ptr->rcvd_sample_.size_ >=
+ this->qos_.resource_limits.max_samples_per_instance))
+ {
+ if (instance_ptr->rcvd_sample_.head_->sample_state_
+ == ::DDS::NOT_READ_SAMPLE_STATE)
+ {
+ // for now the implemented QoS means that if the head sample
+ // is NOT_READ then none are read.
+ // TBD - in future we will reads may not read in order so
+ // just looking at the head will not be enough.
+ ::DDS::DataReaderListener* listener
+ = listener_for (::DDS::SAMPLE_REJECTED_STATUS);
+
+ sample_rejected_status_.last_reason =
+ ::DDS::REJECTED_BY_INSTANCE_LIMIT ;
+ sample_rejected_status_.total_count++ ;
+ sample_rejected_status_.total_count_change++ ;
+ sample_rejected_status_.last_instance_handle = handle ;
+
+ if (listener != 0)
+ {
+ ::DDS::DataReader_var dr = get_dr_obj_ref();
+ listener->on_sample_rejected(dr.in (),
+ sample_rejected_status_);
+ } // do we want to do something if listener is nil???
+
+ ACE_DES_FREE (instance_data,
+ data_allocator_->free,
+ Port );
+
+ return ::DDS::RETCODE_OK ; //OK?
+ }
+ else
+ {
+ // Discard the oldest previously-read sample
+ OpenDDS::DCPS::ReceivedDataElement *item = instance_ptr->rcvd_sample_.head_;
+ instance_ptr->rcvd_sample_.remove(item) ;
+ dec_ref_data_element(item);
+ }
+ }
+
+ OpenDDS::DCPS::ReceivedDataElement *ptr /* = new OpenDDS::DCPS::ReceivedDataElement(data) */ ;
+ ACE_NEW_MALLOC_RETURN (ptr,
+ static_cast<OpenDDS::DCPS::ReceivedDataElement *> (
+ rd_allocator_->malloc (
+ sizeof (OpenDDS::DCPS::ReceivedDataElement))),
+ OpenDDS::DCPS::ReceivedDataElement(instance_data),
+ ::DDS::RETCODE_ERROR);
+
+ instance_ptr->instance_state_.data_was_received() ;
+
+ ptr->source_timestamp_.sec = header.source_timestamp_sec_ ;
+ ptr->source_timestamp_.nanosec = header.source_timestamp_nanosec_ ;
+ ptr->disposed_generation_count_ =
+ instance_ptr->instance_state_.disposed_generation_count() ;
+ ptr->no_writers_generation_count_ =
+ instance_ptr->instance_state_.no_writers_generation_count() ;
+
+ ptr->sequence_ = header.sequence_ ;
+ instance_ptr->last_sequence_ = header.sequence_ ;
+
+ instance_ptr->rcvd_sample_.add(ptr) ;
+ ptr->inc_ref() ;
+
+ if (instance_ptr->rcvd_sample_.size_ > get_depth())
+ {
+ OpenDDS::DCPS::ReceivedDataElement *head_ptr =
+ instance_ptr->rcvd_sample_.head_ ;
+
+ instance_ptr->rcvd_sample_.remove(head_ptr) ;
+
+ if (head_ptr->sample_state_ == ::DDS::NOT_READ_SAMPLE_STATE)
+ {
+ ::DDS::DataReaderListener* listener
+ = listener_for (::DDS::SAMPLE_LOST_STATUS);
+
+ sample_lost_status_.total_count++ ;
+ sample_lost_status_.total_count_change++ ;
+
+ if (listener)
+ {
+ ::DDS::DataReader_var dr = get_dr_obj_ref();
+ listener->on_sample_lost(dr.in (), sample_lost_status_);
+ }
+ }
+
+ dec_ref_data_element(head_ptr);
+ }
+
+ OpenDDS::DCPS::SubscriberImpl* sub = get_subscriber_servant () ;
+ ::DDS::SubscriberListener* sub_listener =
+ sub->listener_for(::DDS::DATA_ON_READERS_STATUS) ;
+ if (sub_listener != 0)
+ {
+ sub_listener->on_data_on_readers(get_subscriber()) ;
+ }
+ else
+ {
+ ::DDS::DataReaderListener* listener
+ = listener_for (::DDS::DATA_AVAILABLE_STATUS);
+
+ if (listener != 0)
+ {
+ ::DDS::DataReader_var dr = get_dr_obj_ref();
+ listener->on_data_available(dr.in ());
+ }
+ }
+ }
+ else
+ {
+ OpenDDS::DCPS::SubscriptionInstance *instance_ptr =
+ this->OPENDDS_DCPS_DataReaderImpl::get_handle_instance (handle) ;
+ instance_ptr->instance_state_.lively(header.publication_id_) ;
+ ACE_DES_FREE (instance_data,
+ data_allocator_->free,
+ Port );
+ }
+
+ return ::DDS::RETCODE_OK;
+}
+
+void
+PortDataReaderImpl::dispose(const OpenDDS::DCPS::ReceivedDataSample& sample)
+{
+ //!!! caller should already have the sample_lock_
+
+ ::IOTest::Port *data /* = new ::IOTest::Port(instance_data) */ ;
+ ACE_NEW_MALLOC_NORETURN (data,
+ static_cast< ::IOTest::Port *> (
+ data_allocator_->malloc (
+ sizeof (::IOTest::Port))),
+ ::IOTest::Port) ;
+
+ TAO::DCPS::Serializer ser(sample.sample_, sample.header_.byte_order_ != TAO_ENCAP_BYTE_ORDER) ;
+ ser >> *data ;
+
+ DDS::InstanceHandle_t handle(::OpenDDS::DCPS::HANDLE_NIL) ;
+
+ InstanceMap::const_iterator it = instance_map_.find(*data);
+
+ if (it != instance_map_.end())
+ {
+ handle = it->second;
+ OpenDDS::DCPS::SubscriptionInstance* instance_ptr =
+ this->OPENDDS_DCPS_DataReaderImpl::get_handle_instance (handle) ;
+ instance_ptr->instance_state_.dispose_was_received() ;
+ }
+ else if (! this->is_bit ())
+ {
+ ACE_ERROR((LM_ERROR,
+ ACE_TEXT("(%P|%t) ")
+ ACE_TEXT("PortDataReaderImpl::disposed, ")
+ ACE_TEXT("The instance is not registered.\n")));
+ }
+
+ ACE_DES_FREE (data,
+ data_allocator_->free,
+ Port );
+}
+
+DDS::ReturnCode_t
+PortDataReaderImpl::auto_return_loan(void* seq)
+{
+ ::IOTest::PortSeq& received_data = *(::IOTest::PortSeq*)seq;
+
+ if (!received_data.release())
+ {
+ // this->release_loan(received_data);
+ received_data.length(0);
+ }
+ return ::DDS::RETCODE_OK;
+}
+
+DDS::ReturnCode_t
+PortDataReaderImpl::check_inputs (
+ const char* method_name,
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long& max_samples
+ )
+{
+ ::IOTest::PortSeq::PrivateMemberAccess received_data_p (received_data);
+
+ //---- start of preconditions common to read and take -----
+ //SPEC ref v1.2 7.1.2.5.3.8 #1
+ //NOTE: we can't check maximum() or release() here since those are
+ //implementation details of the sequences. In general, the info_seq will
+ //have release() == true and maximum() == 0. If we're in zero-copy mode, the
+ //received_data will have release() == false and maximum() == 0. If it's not
+ //zero-copy then received_data will have release == true() and maximum() ==
+ //anything.
+ if (received_data.length() != info_seq.length())
+ {
+ ACE_DEBUG((LM_DEBUG,"PortDataReaderImpl::%s PRECONDITION_NOT_MET sample and info input sequences do not match.\n",
+ method_name ));
+ return ::DDS::RETCODE_PRECONDITION_NOT_MET;
+ }
+
+ //SPEC ref v1.2 7.1.2.5.3.8 #4
+ if ((received_data.maximum() > 0) && (received_data.release() == false))
+ {
+ ACE_DEBUG((LM_DEBUG,"PortDataReaderImpl::%s PRECONDITION_NOT_MET mismatch of maximum %d and owns %d\n",
+ method_name, received_data.maximum(), received_data.release() ));
+ return ::DDS::RETCODE_PRECONDITION_NOT_MET;
+ }
+
+ if (received_data.maximum() == 0)
+ {
+ // not in SPEC but needed.
+ if (max_samples == ::DDS::LENGTH_UNLIMITED)
+ {
+ max_samples = (::CORBA::Long)received_data_p.max_slots();
+ }
+ }
+ else
+ {
+ if (max_samples == ::DDS::LENGTH_UNLIMITED)
+ {
+ //SPEC ref v1.2 7.1.2.5.3.8 #5a
+ max_samples = received_data.maximum();
+ }
+ else if (max_samples > (::CORBA::Long)received_data.maximum())
+ {
+ //SPEC ref v1.2 7.1.2.5.3.8 #5c
+ ACE_DEBUG((LM_DEBUG,"PortDataReaderImpl::read PRECONDITION_NOT_MET max_samples %d > maximum %d\n",
+ method_name, max_samples, received_data.maximum() ));
+ return ::DDS::RETCODE_PRECONDITION_NOT_MET;
+
+ }
+ //else
+ //SPEC ref v1.2 7.1.2.5.3.8 #5b - is true by impl below.
+ }
+
+ // The spec does not say what to do in this case but it appears to be a good thing.
+ // Note: max_slots is the greater of the sequence's maximum and init_size.
+ if ((::CORBA::Long)received_data_p.max_slots() < max_samples)
+ {
+ max_samples = (::CORBA::Long)received_data_p.max_slots();
+ }
+ //---- end of preconditions common to read and take -----
+
+ return ::DDS::RETCODE_OK;
+}
+
+void
+PortDataReaderImpl::release_instance_i (::DDS::InstanceHandle_t handle)
+{
+ InstanceMap::iterator it;
+ for (it = instance_map_.begin ();
+ it != instance_map_.end ();
+ it ++)
+ {
+ if (it->second == handle)
+ break;
+ }
+
+ if (it != instance_map_.end ())
+ {
+ instance_map_.erase (it);
+ }
+}
+
+
+//OpenDDS::DCPS::DataReaderRemote_ptr
+//PortDataReaderImpl::get_datareaderremote_obj_ref ()
+//{
+// ::OpenDDS::DCPS::DataReaderRemote_ptr reader_obj
+// = ::OpenDDS::DCPS::servant_to_reference
+// (this);
+// ACE_CHECK_RETURN (::OpenDDS::DCPS::DataReaderRemote::_nil());
+//
+// // servant_to_reference does not duplicate when the object is already active
+// return OpenDDS::DCPS::DataReaderRemote::_duplicate(reader_obj);
+//}
+}; // IOTest
+
+
+
diff --git a/dds_io_pub/PortTypeSupportImpl.h b/dds_io_pub/PortTypeSupportImpl.h
new file mode 100644
index 0000000..70c72c3
--- /dev/null
+++ b/dds_io_pub/PortTypeSupportImpl.h
@@ -0,0 +1,493 @@
+// -*- C++ -*-
+//
+// $Id: HTemplate.pm 899 2007-07-05 16:36:52Z mitza $
+
+// Generated by dcps_ts.pl
+
+#ifndef PORTTYPESUPPORTI_H_
+#define PORTTYPESUPPORTI_H_
+
+#include "PortTypeSupportS.h"
+#include "dds/DCPS/DataWriterImpl.h"
+#include "dds/DCPS/DataReaderImpl.h"
+#include "dds/DCPS/Dynamic_Cached_Allocator_With_Overflow_T.h"
+#include "dds/DCPS/DataBlockLockPool.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace IOTest {
+
+/** Servant for TypeSuport interface of Port data type.
+ *
+ * See the DDS specification, OMG formal/04-12-02, for a description of
+ * this interface.
+ *
+ */
+class PortTypeSupportImpl
+ : public virtual OpenDDS::DCPS::LocalObject<PortTypeSupport>
+{
+public:
+
+ //Constructor
+ PortTypeSupportImpl (void);
+
+ //Destructor
+ virtual ~PortTypeSupportImpl (void);
+
+ virtual
+ DDS::ReturnCode_t register_type (
+ ::DDS::DomainParticipant_ptr participant,
+ const char * type_name
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ char * get_type_name (
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ ::DDS::DataWriter_ptr create_datawriter (
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ ::DDS::DataReader_ptr create_datareader (
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ private:
+ CORBA::String_var type_name_;
+};
+}; // IOTest
+
+
+namespace IOTest {
+
+
+/** Servant for DataWriter interface of the Port data type.
+ *
+ * See the DDS specification, OMG formal/04-12-02, for a description of
+ * this interface.
+ */
+class PortDataWriterImpl
+ : public virtual OpenDDS::DCPS::LocalObject<PortDataWriter>,
+ public virtual OpenDDS::DCPS::DataWriterImpl
+{
+public:
+
+ typedef std::map<IOTest::Port, DDS::InstanceHandle_t,
+ PortKeyLessThan> InstanceMap;
+ typedef ::OpenDDS::DCPS::Dynamic_Cached_Allocator_With_Overflow<ACE_Null_Mutex> DataAllocator;
+
+ //Constructor
+ PortDataWriterImpl (void);
+
+ //Destructor
+ virtual ~PortDataWriterImpl (void);
+
+ virtual
+ DDS::InstanceHandle_t _cxx_register (
+ const ::IOTest::Port & instance_data
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ DDS::InstanceHandle_t register_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle,
+ const ::DDS::Time_t & source_timestamp
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ DDS::ReturnCode_t unregister (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ DDS::ReturnCode_t unregister_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle,
+ const ::DDS::Time_t & source_timestamp
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ //WARNING: If the handle is non-nil and the instance is not registered
+ // then this operation may cause an access violation.
+ // This lack of safety helps performance.
+ virtual
+ DDS::ReturnCode_t write (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ //WARNING: If the handle is non-nil and the instance is not registered
+ // then this operation may cause an access violation.
+ // This lack of safety helps performance.
+ virtual
+ DDS::ReturnCode_t write_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t handle,
+ const ::DDS::Time_t & source_timestamp
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ DDS::ReturnCode_t dispose (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t instance_handle
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ DDS::ReturnCode_t dispose_w_timestamp (
+ const ::IOTest::Port & instance_data,
+ ::DDS::InstanceHandle_t instance_handle,
+ const ::DDS::Time_t & source_timestamp
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ DDS::ReturnCode_t get_key_value (
+ ::IOTest::Port & key_holder,
+ ::DDS::InstanceHandle_t handle
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+
+ /**
+ * Initialize the DataWriter object.
+ * Called as part of create_datawriter.
+ */
+ virtual void init (
+ ::DDS::Topic_ptr topic,
+ OpenDDS::DCPS::TopicImpl *topic_servant,
+ const ::DDS::DataWriterQos & qos,
+ ::DDS::DataWriterListener_ptr a_listener,
+ OpenDDS::DCPS::DomainParticipantImpl* participant_servant,
+ ::DDS::Publisher_ptr publisher,
+ OpenDDS::DCPS::PublisherImpl* publisher_servant,
+ ::DDS::DataWriter_ptr dw_objref,
+ ::OpenDDS::DCPS::DataWriterRemote_ptr dw_remote_objref
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ /**
+ * Do parts of enable specific to the datatype.
+ * Called by DataWriterImpl::enable().
+ */
+ virtual ::DDS::ReturnCode_t enable_specific (
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ /**
+ * The framework has completed its part of unregistering the
+ * given instance.
+ */
+ virtual void unregistered(::DDS::InstanceHandle_t instance_handle);
+
+ /**
+ * Accessor to the marshalled data sample allocator.
+ */
+ ACE_INLINE
+ DataAllocator* data_allocator () const {
+ return data_allocator_;
+ }
+
+private:
+
+ /**
+ * Serialize the instance data.
+ *
+ * @param instance_data The data to serialize.
+ * @param for_write If 1 use the fast allocator; otherwise use the heap.
+ * @return returns the serialized data.
+ */
+ ACE_Message_Block* dds_marshal(
+ const ::IOTest::Port& instance_data,
+ int for_write = 1);
+
+ /**
+ * Find the instance handle for the given instance_data using
+ * the data type's key(s). If the instance does not already exist
+ * create a new instance handle for it.
+ */
+ ::DDS::ReturnCode_t get_or_create_instance_handle(
+ DDS::InstanceHandle_t& handle,
+ const ::IOTest::Port& instance_data,
+ const ::DDS::Time_t & source_timestamp);
+
+ /**
+ * Get the InstanceHanle for the given data.
+ */
+ ::DDS::InstanceHandle_t get_instance_handle(
+ ::IOTest::Port instance_data);
+
+ InstanceMap instance_map_;
+ size_t marshaled_size_;
+ // The lock pool will be thread safe because
+ // only one write call is allowed at a time.
+ DataBlockLockPool* db_lock_pool_;
+ DataAllocator* data_allocator_;
+ ::OpenDDS::DCPS::MessageBlockAllocator* mb_allocator_;
+ ::OpenDDS::DCPS::DataBlockAllocator* db_allocator_;
+};
+}; // IOTest
+
+
+namespace IOTest {
+
+/** Servant for DataReader interface of Port data type.
+ *
+ * See the DDS specification, OMG formal/04-12-02, for a description of
+ * this interface.
+ *
+ */
+class PortDataReaderImpl
+ : public virtual OpenDDS::DCPS::LocalObject<PortDataReader>,
+ public virtual OpenDDS::DCPS::DataReaderImpl
+{
+public:
+
+ typedef std::map<IOTest::Port, DDS::InstanceHandle_t,
+ PortKeyLessThan> InstanceMap;
+ typedef ::OpenDDS::DCPS::Cached_Allocator_With_Overflow<IOTest::Port, ACE_Null_Mutex> DataAllocator;
+
+ //Constructor
+ PortDataReaderImpl (void);
+
+ //Destructor
+ virtual ~PortDataReaderImpl (void);
+
+ virtual
+ DDS::ReturnCode_t delete_contained_entities (
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ /**
+ * Initialize the DataReader object.
+ * Called as part of create_datareader.
+ */
+ virtual
+ void init (
+ OpenDDS::DCPS::TopicImpl* a_topic,
+ const ::DDS::DataReaderQos & qos,
+ ::DDS::DataReaderListener_ptr a_listener,
+ OpenDDS::DCPS::DomainParticipantImpl* participant,
+ OpenDDS::DCPS::SubscriberImpl* subscriber,
+ ::DDS::Subscriber_ptr subscriber_objref,
+ ::DDS::DataReader_ptr dr_objerf,
+ OpenDDS::DCPS::DataReaderRemote_ptr dr_remote_objref
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ /**
+ * Do parts of enable specific to the datatype.
+ * Called by DataReaderImpl::enable().
+ */
+ virtual ::DDS::ReturnCode_t enable_specific (
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ DDS::ReturnCode_t read (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ DDS::ReturnCode_t take (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ DDS::ReturnCode_t read_next_sample (
+ ::IOTest::Port & received_data,
+ ::DDS::SampleInfo & sample_info
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ DDS::ReturnCode_t take_next_sample (
+ ::IOTest::Port & received_data,
+ ::DDS::SampleInfo & sample_info
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ DDS::ReturnCode_t read_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ DDS::ReturnCode_t take_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ DDS::ReturnCode_t read_next_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ DDS::ReturnCode_t take_next_instance (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long max_samples,
+ ::DDS::InstanceHandle_t a_handle,
+ ::DDS::SampleStateMask sample_states,
+ ::DDS::ViewStateMask view_states,
+ ::DDS::InstanceStateMask instance_states
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ DDS::ReturnCode_t return_loan (
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ DDS::ReturnCode_t get_key_value (
+ ::IOTest::Port & key_holder,
+ ::DDS::InstanceHandle_t handle
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ DDS::ReturnCode_t auto_return_loan(void* seq);
+
+ void release_loan (::IOTest::PortSeq & received_data);
+
+ void dec_ref_data_element(::OpenDDS::DCPS::ReceivedDataElement* r);
+
+ protected:
+
+ virtual void dds_demarshal(const OpenDDS::DCPS::ReceivedDataSample& sample) ;
+
+ virtual void dispose(const OpenDDS::DCPS::ReceivedDataSample& sample) ;
+
+ //virtual OpenDDS::DCPS::DataReaderRemote_ptr get_datareaderremote_obj_ref ();
+
+ virtual void release_instance_i (::DDS::InstanceHandle_t handle);
+
+
+ private:
+ ::DDS::ReturnCode_t store_instance_data(
+ ::IOTest::Port *instance_data,
+ const OpenDDS::DCPS::DataSampleHeader& header
+ ) ;
+
+ /// common input read* & take* input processing and precondition checks
+ ::DDS::ReturnCode_t check_inputs (
+ const char* method_name,
+ ::IOTest::PortSeq & received_data,
+ ::DDS::SampleInfoSeq & info_seq,
+ ::CORBA::Long& max_samples
+ ) ;
+
+ InstanceMap instance_map_;
+ DataAllocator* data_allocator_;
+};
+
+}; // IOTest
+
+
+#endif /* PORTTYPESUPPORTI_H_ */
+
+
diff --git a/dds_io_pub/PortTypeSupportS.cpp b/dds_io_pub/PortTypeSupportS.cpp
new file mode 100644
index 0000000..239b5bb
--- /dev/null
+++ b/dds_io_pub/PortTypeSupportS.cpp
@@ -0,0 +1,73 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler ****
+// TAO and the TAO IDL Compiler have been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// and
+// Distributed Object Computing Laboratory
+// University of California at Irvine
+// Irvine, CA
+// USA
+// http://doc.ece.uci.edu/
+// and
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about TAO is available at:
+// http://www.cs.wustl.edu/~schmidt/TAO.html
+
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:703
+
+#ifndef _TAO_IDL_PORTTYPESUPPORTS_CPP_
+#define _TAO_IDL_PORTTYPESUPPORTS_CPP_
+
+
+#include "PortTypeSupportS.h"
+
+#if !defined (__ACE_INLINE__)
+#include "PortTypeSupportS.inl"
+#endif /* !defined INLINE */
+
+// TAO_IDL - Generated from
+// be/be_visitor_arg_traits.cpp:72
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+
+// Arg traits specializations.
+namespace TAO
+{
+}
+
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_arg_traits.cpp:72
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+
+// Arg traits specializations.
+namespace TAO
+{
+}
+
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+
+
+#endif /* ifndef */
+
diff --git a/dds_io_pub/PortTypeSupportS.h b/dds_io_pub/PortTypeSupportS.h
new file mode 100644
index 0000000..5c70e37
--- /dev/null
+++ b/dds_io_pub/PortTypeSupportS.h
@@ -0,0 +1,64 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler ****
+// TAO and the TAO IDL Compiler have been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// and
+// Distributed Object Computing Laboratory
+// University of California at Irvine
+// Irvine, CA
+// USA
+// http://doc.ece.uci.edu/
+// and
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about TAO is available at:
+// http://www.cs.wustl.edu/~schmidt/TAO.html
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:487
+
+#ifndef _TAO_IDL_PORTTYPESUPPORTS_H_
+#define _TAO_IDL_PORTTYPESUPPORTS_H_
+
+
+#include "PortTypeSupportC.h"
+#include "IOTestS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_module/module_sh.cpp:49
+
+namespace POA_IOTest
+{
+
+
+// TAO_IDL - Generated from
+// be/be_visitor_module/module_sh.cpp:80
+
+} // module IOTest
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:1281
+
+
+#if defined (__ACE_INLINE__)
+#include "PortTypeSupportS.inl"
+#endif /* defined INLINE */
+
+#endif /* ifndef */
+
diff --git a/dds_io_pub/PortTypeSupportS.inl b/dds_io_pub/PortTypeSupportS.inl
new file mode 100644
index 0000000..38aa325
--- /dev/null
+++ b/dds_io_pub/PortTypeSupportS.inl
@@ -0,0 +1,28 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// **** Code generated by the The ACE ORB (TAO) IDL Compiler ****
+// TAO and the TAO IDL Compiler have been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// and
+// Distributed Object Computing Laboratory
+// University of California at Irvine
+// Irvine, CA
+// USA
+// http://doc.ece.uci.edu/
+// and
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about TAO is available at:
+// http://www.cs.wustl.edu/~schmidt/TAO.html
+
+
diff --git a/dds_io_pub/Writer.cpp b/dds_io_pub/Writer.cpp
new file mode 100644
index 0000000..82d5173
--- /dev/null
+++ b/dds_io_pub/Writer.cpp
@@ -0,0 +1,146 @@
+// -*- C++ -*-
+//
+// $Id: Writer.cpp 784 2007-05-30 19:26:41Z harriss $
+#include "Writer.h"
+#include "PortTypeSupportC.h"
+#include <ace/OS_NS_unistd.h>
+#include <ace/streams.h>
+#include <time.h>
+
+using namespace IOTest;
+
+const int num_instances_per_writer = 1;
+const int num_messages = 10;
+
+Writer::Writer(::DDS::DataWriter_ptr writer)
+: writer_ (::DDS::DataWriter::_duplicate (writer)),
+ finished_instances_ (0),
+ timeout_writes_ (0)
+{
+ cout<<"Writer instanced\n";
+}
+
+void
+Writer::start ()
+{
+ ACE_DEBUG((LM_DEBUG, ACE_TEXT("(%P|%t) Writer::start \n")));
+ // Lanuch num_instances_per_writer threads.
+ // Each thread writes one instance which uses the thread id as the
+ // key value.
+ if (activate (THR_NEW_LWP | THR_JOINABLE, num_instances_per_writer) == -1) {
+ cerr << "Writer::start(): activate failed" << endl;
+ exit(1);
+ }
+}
+
+void
+Writer::end ()
+{
+ ACE_DEBUG((LM_DEBUG,
+ ACE_TEXT("(%P|%t) Writer::end \n")));
+ wait ();
+}
+
+
+int
+Writer::svc ()
+{
+ ACE_DEBUG((LM_DEBUG,
+ ACE_TEXT("(%P|%t) Writer::svc begins.\n")));
+
+ ::DDS::InstanceHandleSeq handles;
+ try {
+
+ cout<<"Writer thread waiting for subscription\n";
+
+ while (1)
+ {
+ writer_->get_matched_subscriptions(handles);
+ if (handles.length() > 0)
+ break;
+ else
+ ACE_OS::sleep(ACE_Time_Value(0,200000));
+
+ cout<<"%\n";
+ }
+
+ cout<<"Writer thread got subscriptions\n";
+
+ ::IOTest::PortDataWriter_var port_dw
+ = ::IOTest::PortDataWriter::_narrow(writer_.in());
+ if (CORBA::is_nil (port_dw.in ())) {
+ cerr << "Data Writer could not be narrowed"<< endl;
+ exit(1);
+ }
+
+ cout<<"Writer thread, DataWriter Cast ok\n";
+
+ struct timespec t_sleep;
+ t_sleep.tv_sec = 1;
+ t_sleep.tv_nsec = 500000;
+
+ IOTest::Port port_obj;
+ ::DDS::InstanceHandle_t handle = port_dw->_cxx_register (port_obj);
+
+ port_obj.no = 1;
+ port_obj.value = 0xff;
+
+ ACE_DEBUG((LM_DEBUG,
+ ACE_TEXT("%T (%P|%t) Writer::svc starting to write.\n")));
+ while(1) {
+ ::DDS::ReturnCode_t ret = port_dw->write(port_obj, handle);
+
+ if (ret != ::DDS::RETCODE_OK) {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT("(%P|%t)ERROR Writer::svc, ")
+ ACE_TEXT ("write() returned %d.\n"),
+ ret));
+ if (ret == ::DDS::RETCODE_TIMEOUT) {
+ timeout_writes_ ++;
+ }
+ cout<<"?\n";
+ }
+
+ if( port_obj.value == 0xff )
+ port_obj.value = 0x00;
+ else
+ port_obj.value = 0xff;
+
+ nanosleep(&t_sleep, NULL);
+
+ cout<<".\n";
+
+ }
+ } catch (CORBA::Exception& e) {
+ cerr << "Exception caught in svc:" << endl
+ << e << endl;
+ }
+
+ while (1)
+ {
+ writer_->get_matched_subscriptions(handles);
+ if (handles.length() == 0)
+ break;
+ else
+ ACE_OS::sleep(1);
+ cout<<"!\n";
+ }
+ ACE_DEBUG((LM_DEBUG, ACE_TEXT("(%P|%t) Writer::svc finished.\n")));
+
+ finished_instances_ ++;
+
+ return 0;
+}
+
+
+bool
+Writer::is_finished () const
+{
+ return finished_instances_ == num_instances_per_writer;
+}
+
+int
+Writer::get_timeout_writes () const
+{
+ return timeout_writes_.value ();
+}
diff --git a/dds_io_pub/Writer.h b/dds_io_pub/Writer.h
new file mode 100644
index 0000000..030211d
--- /dev/null
+++ b/dds_io_pub/Writer.h
@@ -0,0 +1,36 @@
+// -*- C++ -*-
+//
+// $Id: Writer.h 29 2005-07-18 18:21:16Z calabrese_p $
+#ifndef WRITER_H
+#define WRITER_H
+
+#include <dds/DdsDcpsPublicationC.h>
+#include <ace/Task.h>
+
+
+class Writer : public ACE_Task_Base
+{
+public:
+
+ Writer (::DDS::DataWriter_ptr writer);
+
+ void start ();
+
+ void end ();
+
+ /** Lanch a thread to write. **/
+ virtual int svc ();
+
+ bool is_finished () const;
+
+ int get_timeout_writes () const;
+
+
+private:
+
+ ::DDS::DataWriter_var writer_;
+ ACE_Atomic_Op<ACE_SYNCH_MUTEX, int> finished_instances_;
+ ACE_Atomic_Op<ACE_SYNCH_MUTEX, int> timeout_writes_;
+};
+
+#endif /* WRITER_H */
diff --git a/dds_io_pub/dds_io_pub.cpp b/dds_io_pub/dds_io_pub.cpp
new file mode 100644
index 0000000..acb67f9
--- /dev/null
+++ b/dds_io_pub/dds_io_pub.cpp
@@ -0,0 +1,218 @@
+//============================================================================
+// Name : dds_publisher.cpp
+// Author :
+// Version :
+// Copyright : Your copyright notice
+// Description : Hello World in C++, Ansi-style
+//============================================================================
+
+#include <iostream>
+using namespace std;
+
+#include "PortTypeSupportImpl.h"
+#include "Writer.h"
+
+#include <dds/DCPS/Service_Participant.h>
+#include <dds/DCPS/Marked_Default_Qos.h>
+#include <dds/DCPS/PublisherImpl.h>
+#include <dds/DCPS/transport/framework/TheTransportFactory.h>
+#include <dds/DCPS/transport/simpleTCP/SimpleTcpConfiguration.h>
+#ifdef ACE_AS_STATIC_LIBS
+#include <dds/DCPS/transport/simpleTCP/SimpleTcp.h>
+#include <dds/DCPS/transport/simpleUnreliableDgram/SimpleUnreliableDgram.h>
+#include <dds/DCPS/transport/ReliableMulticast/ReliableMulticast.h>
+#endif
+
+#include <ace/streams.h>
+#include "ace/Get_Opt.h"
+
+using namespace IOTest;
+
+OpenDDS::DCPS::TransportIdType transport_impl_id = 1;
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "t:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ {
+ switch (c)
+ {
+ case 't':
+ if (ACE_OS::strcmp (get_opts.opt_arg (), "udp") == 0) {
+ transport_impl_id = 2;
+ }
+ else if (ACE_OS::strcmp (get_opts.opt_arg (), "mcast") == 0) {
+ transport_impl_id = 3;
+ }
+ else if (ACE_OS::strcmp (get_opts.opt_arg (), "reliable_mcast") == 0) {
+ transport_impl_id = 4;
+ }
+ // test with DEFAULT_SIMPLE_TCP_ID.
+ else if (ACE_OS::strcmp (get_opts.opt_arg (), "default_tcp") == 0) {
+ transport_impl_id = OpenDDS::DCPS::DEFAULT_SIMPLE_TCP_ID;
+ }
+ // test with DEFAULT_SIMPLE_UDP_ID.
+ else if (ACE_OS::strcmp (get_opts.opt_arg (), "default_udp") == 0) {
+ transport_impl_id = OpenDDS::DCPS::DEFAULT_SIMPLE_UDP_ID;
+ }
+ else if (ACE_OS::strcmp (get_opts.opt_arg (), "default_mcast_pub") == 0) {
+ transport_impl_id = OpenDDS::DCPS::DEFAULT_SIMPLE_MCAST_PUB_ID;
+ }
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-t <tcp/udp/default> "
+ "\n",
+ argv [0]),
+ -1);
+ }
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+
+
+int main(int argc, char** argv) {
+
+ try
+ {
+ DDS::DomainParticipantFactory_var dpf =
+ TheParticipantFactoryWithArgs(argc, argv);
+
+ cout<<"DomainParticpantFactory ok\n";
+
+ DDS::DomainParticipant_var participant =
+ dpf->create_participant(411,
+ PARTICIPANT_QOS_DEFAULT,
+ DDS::DomainParticipantListener::_nil());
+
+ if (CORBA::is_nil (participant.in ())) {
+ cerr << "create_participant failed." << endl;
+ return 1;
+ }
+
+ cout<<"DomainParticpant ok\n";
+
+ if (parse_args (argc, argv) == -1) {
+ return -1;
+ }
+
+ PortTypeSupport_var pts = new PortTypeSupportImpl();
+
+ if (DDS::RETCODE_OK != pts->register_type(participant.in (), "")) {
+ cerr << "register_type failed." << endl;
+ exit(1);
+ }
+
+ cout<<"PortTypeSupport registered\n";
+
+ CORBA::String_var type_name = pts->get_type_name ();
+
+ DDS::TopicQos topic_qos;
+ participant->get_default_topic_qos(topic_qos);
+ DDS::Topic_var topic =
+ participant->create_topic ("IOTest",
+ type_name.in (),
+ topic_qos,
+ DDS::TopicListener::_nil());
+ if (CORBA::is_nil (topic.in ())) {
+ cerr << "create_topic failed." << endl;
+ exit(1);
+ }
+
+ cout<<"Topic created\n";
+
+ OpenDDS::DCPS::TransportImpl_rch tcp_impl =
+ TheTransportFactory->create_transport_impl (transport_impl_id,
+ ::OpenDDS::DCPS::AUTO_CONFIG);
+
+ cout<<"Transport ok\n";
+
+ DDS::Publisher_var pub =
+ participant->create_publisher(PUBLISHER_QOS_DEFAULT,
+ DDS::PublisherListener::_nil());
+ if (CORBA::is_nil (pub.in ())) {
+ cerr << "create_publisher failed." << endl;
+ exit(1);
+ }
+
+ cout<<"Publisher created\n";
+
+ // Attach the publisher to the transport.
+ OpenDDS::DCPS::PublisherImpl* pub_impl =
+ OpenDDS::DCPS::reference_to_servant<OpenDDS::DCPS::PublisherImpl> (pub.in ());
+ if (0 == pub_impl) {
+ cerr << "Failed to obtain publisher servant" << endl;
+ exit(1);
+ }
+
+ cout<<"Servant obtained\n";
+
+ OpenDDS::DCPS::AttachStatus status = pub_impl->attach_transport(tcp_impl.in());
+ if (status != OpenDDS::DCPS::ATTACH_OK) {
+ std::string status_str;
+ switch (status) {
+ case OpenDDS::DCPS::ATTACH_BAD_TRANSPORT:
+ status_str = "ATTACH_BAD_TRANSPORT";
+ break;
+ case OpenDDS::DCPS::ATTACH_ERROR:
+ status_str = "ATTACH_ERROR";
+ break;
+ case OpenDDS::DCPS::ATTACH_INCOMPATIBLE_QOS:
+ status_str = "ATTACH_INCOMPATIBLE_QOS";
+ break;
+ default:
+ status_str = "Unknown Status";
+ break;
+ }
+ cerr << "Failed to attach to the transport. Status == "
+ << status_str.c_str() << endl;
+ exit(1);
+ }
+
+ cout<<"Status ok\n";
+
+ // Create the datawriter
+ DDS::DataWriterQos dw_qos;
+ pub->get_default_datawriter_qos (dw_qos);
+ DDS::DataWriter_var dw =
+ pub->create_datawriter(topic.in (),
+ dw_qos,
+ DDS::DataWriterListener::_nil());
+ if (CORBA::is_nil (dw.in ())) {
+ cerr << "create_datawriter failed." << endl;
+ exit(1);
+ }
+ Writer* writer = new Writer(dw.in());
+
+ cout<<"starting Datawriter...\n";
+
+ writer->start ();
+ while ( !writer->is_finished()) {
+ ACE_Time_Value small(0,250000);
+ ACE_OS::sleep (small);
+ }
+
+ // Cleanup
+ writer->end ();
+ delete writer;
+ participant->delete_contained_entities();
+ dpf->delete_participant(participant.in ());
+ TheTransportFactory->release();
+ TheServiceParticipant->shutdown ();
+ }
+ catch (CORBA::Exception& e)
+ {
+ cerr << "PUB: Exception caught in main.cpp:" << endl
+ << e << endl;
+ exit(1);
+ }
+
+ return 0;
+}
diff --git a/dds_io_pub/pub.ini b/dds_io_pub/pub.ini
new file mode 100644
index 0000000..f185c06
--- /dev/null
+++ b/dds_io_pub/pub.ini
@@ -0,0 +1,107 @@
+# Note:
+# 1) The configuration defaults to not configure via file. The configuration file name
+# should be specified via command line option -DCPSConfigFile.
+# 2) Use # or ; for comments
+# 3) The command line option can overwrite the configuration value specified in this
+# file.
+# 4) Run application with -DCPSDebugLevel [>0] to help debugging dds configuration.
+
+# This "common" section configures the data in Service_Participant.
+[common]
+# DCPS specific debug level.
+DCPSDebugLevel=0
+# DCPS repository ior file name.
+DCPSInfoRepo=file://repo.ior
+# Number of chunks that the DataWriter's cached allocator can allocate when the resource
+# limits are infinite.
+DCPSChunks=20
+# maximum number of expected associations for publishers and subscribers. This is used
+# to pre allocate enough memory and reduce heap allocations.
+DCPSChunkAssociationMutltiplier=10
+# The propagation delay factor.
+DCPSLivelinessFactor=80
+# The port number for the builtin topic.
+#DCPSBitTransportPort=
+# The timeout for lookup data from the builtin topic datareader (in milliseconds).
+#DCPSBitLookupDurationMsec=
+
+
+# Configuration for a specific TransportImpl object. The section name has the "transport_impl_"
+# as prefix and appeneds with the transport id which is an integer.
+[transport_impl_1]
+# This transport_type should match the "type" argument in the svc.conf or be the
+# SimpleTcp which is part of the DDSdcps lib.
+transport_type=SimpleTcp
+# The local endpoint.
+local_address=10.0.3.222:4444
+#transport configuration
+swap_bytes=
+# Number of pre-created link (list) objects per pool for the
+# "send queue" of each DataLink. Each link references a sample
+# or framework control message.
+queue_messages_per_pool=
+# Initial number of pre-allocated pools of link (list) objects
+# for the "send queue" of each DataLink.
+queue_initial_pools=
+#Max size (in bytes) of a packet (packet header + sample(s))
+max_packet_size=
+# Max number of samples that should ever be in a single packet.
+max_samples_per_packet=
+# Optimum size (in bytes) of a packet (packet header + sample(s)).
+optimum_packet_size=
+# This is just for SimpleTcp transport.
+enable_nagle_algorithm=
+
+###=== Configurations for connector side during reconnecting===
+
+# The initial retry delay in milliseconds.
+# The first connection retry will be when the loss of connection
+# is detected. The second try will be after this delay.
+# The default is 500 miliseconds.
+conn_retry_initial_delay=
+
+# The backoff multiplier for reconnection strategy.
+# The third and so on reconnect will be this value * the previous delay.
+# Hence with conn_retry_initial_delay=500 and conn_retry_backoff_multiplier=1.5
+# the second reconnect attempt will be at 0.5 seconds after first retry connect
+# fails; the third attempt will be 0.75 seconds after the second retry connect
+# fails; the fourth attempt will be 1.125 seconds after the third retry connect
+# fails.
+# The default value is 2.0.
+conn_retry_backoff_multiplier=
+
+# Number of attemps to reconnect before giving up and calling
+# on_publication_lost() and on_subscription_lost() callbacks.
+# The default is 3.
+conn_retry_attempts=
+
+# Maximum period (in milliseconds) of not being able to send queued
+# messages. If there are samples queued and no output for longer
+# than this period then the connection will be closed and on_*_lost()
+# callbacks will be called. If the value is zero, the default, then
+# this check will not be made.
+max_output_pause_period=
+
+# Determine if the transport needs create a new thread for a
+# datalink/connection to send samples under normal traffic (no backpressure).
+# If thread_per_connection is 1, the publisher creates a seperate thread
+# for each datalink/connection to send samples instead of using the same
+# thread to send to different datalinks/connections sequentially.
+# The default value is 0 (using same thread send to all datalinks)
+thread_per_connection=
+
+# Flag to indicate if the data link should be maintained when all associations
+# are removed. The default value (0) means the link will be released as the
+# last association is removed from the link.
+keep_link=
+
+
+###=== Configurations for acceptor side during reconnecting===
+
+# The time period in milliseconds for the acceptor side
+# of a connection to wait for the connection to be reconnected.
+# If not reconnected within this period then
+# on_publication_lost() and on_subscription_lost() callbacks
+# will be called.
+# The default is 2 seconds (2000 millseconds).
+passive_reconnect_duration=
diff --git a/dds_io_pub/pub_start.sh b/dds_io_pub/pub_start.sh
new file mode 100644
index 0000000..8205fe3
--- /dev/null
+++ b/dds_io_pub/pub_start.sh
@@ -0,0 +1 @@
+./dds_io_pub -ORBSvcConf ../tcp.conf -DCPSInfoRepo corbaloc:iiop:tc4200:4456/DCPSInfoRepo -DCPSConfigFile ../pub.ini
diff --git a/dds_io_pub/tcp.conf b/dds_io_pub/tcp.conf
new file mode 100644
index 0000000..7084cc8
--- /dev/null
+++ b/dds_io_pub/tcp.conf
@@ -0,0 +1 @@
+dynamic DCPS_SimpleTcpLoader Service_Object * SimpleTcp:_make_DCPS_SimpleTcpLoader() "-type SimpleTcp"