--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+<storageModule moduleId="org.eclipse.cdt.core.settings">
+<cconfiguration id="cdt.managedbuild.toolchain.gnu.cross.base.1196063785">
+<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.cross.base.1196063785" moduleId="org.eclipse.cdt.core.settings" name="Cross GCC">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+<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="libplpbus2" buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.cross.base.1196063785" name="Cross GCC" parent="org.eclipse.cdt.build.core.emptycfg">
+<folderInfo id="cdt.managedbuild.toolchain.gnu.cross.base.1196063785.592276132" name="/" resourcePath="">
+<toolChain id="cdt.managedbuild.toolchain.gnu.cross.base.256416209" name="cdt.managedbuild.toolchain.gnu.cross.base" superClass="cdt.managedbuild.toolchain.gnu.cross.base">
+<option id="cdt.managedbuild.option.gnu.cross.prefix.2096487669" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix"/>
+<option id="cdt.managedbuild.option.gnu.cross.path.1988795369" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path"/>
+<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.312022990" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/>
+<builder id="cdt.managedbuild.toolchain.gnu.cross.base.1196063785.1138409088" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
+<tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.934785405" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler">
+<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.113975571" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.1919764139" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker">
+<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.157916714" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+</inputType>
+</tool>
+</toolChain>
+</folderInfo>
+</configuration>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+<storageModule moduleId="scannerConfiguration">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
+<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>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<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.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</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="true" filePath=""/>
+<parser enabled="true"/>
+</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="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.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</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="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.cross.base.1196063785;cdt.managedbuild.toolchain.gnu.cross.base.1196063785.592276132;cdt.managedbuild.tool.gnu.cross.cpp.compiler.934785405;cdt.managedbuild.tool.gnu.cpp.compiler.input.113975571">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+<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>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<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.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</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="true" filePath=""/>
+<parser enabled="true"/>
+</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="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.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</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="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+</storageModule>
+</cconfiguration>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<project id="libplpbus2.null.377175162" name="libplpbus2"/>
+</storageModule>
+</cproject>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>libplpbus</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>?name?</key>
+ <value></value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.append_environment</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.autoBuildTarget</key>
+ <value>all</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.cleanBuildTarget</key>
+ <value>clean</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.enableAutoBuild</key>
+ <value>false</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableFullBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.fullBuildTarget</key>
+ <value>all</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.stopOnError</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</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.core.ccnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+ </natures>
+</projectDescription>
--- /dev/null
+Mika Laitio <lamikr at pilppa dot org>
--- /dev/null
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
--- /dev/null
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved. This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+ Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package. Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below. The lack of an optional feature in a given package is not
+necessarily a bug. More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+ The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system.
+
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package, generally using the just-built uninstalled binaries.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation. When installing into a prefix owned by root, it is
+ recommended that the package be configured and built as a regular
+ user, and only the `make install' phase executed with root
+ privileges.
+
+ 5. Optionally, type `make installcheck' to repeat any self-tests, but
+ this time using the binaries in their final installed location.
+ This target does not install anything. Running this target as a
+ regular user, particularly if the prior `make install' required
+ root privileges, verifies that the installation completed
+ correctly.
+
+ 6. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+ 7. Often, you can also type `make uninstall' to remove the installed
+ files again. In practice, not all packages have tested that
+ uninstallation works correctly, even though it is required by the
+ GNU Coding Standards.
+
+ 8. Some packages, particularly those that use Automake, provide `make
+ distcheck', which can by used by developers to test that all other
+ targets like `make install' and `make uninstall' work correctly.
+ This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you can use GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'. This
+is known as a "VPATH" build.
+
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+ On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor. Like
+this:
+
+ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CPP="gcc -E" CXXCPP="g++ -E"
+
+ This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+ By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them. In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+ The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+ The first method involves providing an override variable for each
+affected directory. For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'. Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated. The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+ The second method involves providing the `DESTDIR' variable. For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names. The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters. On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+ Some packages offer the ability to configure how verbose the
+execution of `make' will be. For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+ ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file. The option `-nodtk' can be used as
+a workaround. If GNU CC is not installed, it is therefore recommended
+to try
+
+ ./configure CC="cc"
+
+and if that doesn't work, try
+
+ ./configure CC="cc -nodtk"
+
+ On Solaris, don't put `/usr/ucb' early in your `PATH'. This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+ On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'. It is recommended to use the following options:
+
+ ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS
+ KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+ Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
+
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+ Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+ Print a summary of the options unique to this package's
+ `configure', and exit. The `short' variant lists options used
+ only in the top level, while the `recursive' variant lists options
+ also present in any nested packages.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+ Use DIR as the installation prefix. *note Installation Names::
+ for more details, including other options available for fine-tuning
+ the installation locations.
+
+`--no-create'
+`-n'
+ Run the configure checks, but stop before creating any output
+ files.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
--- /dev/null
+libplpbus is library for communication between processes in one or many different devices
+Copyright (C) 2010 Mika Laitio <lamikr@pilppa.org>
+You can redistribute it and/or modify it under either the terms of the LGPL version 3
+(see COPYING.txt file), or by obtaining the license from the author.
+
--- /dev/null
+SUBDIRS = src \
+ src_test
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libplpbus.pc
+EXTRA_DIST = libplpbus.pc.in
+DISTCLEANFILES = \
+ aclocal.m4 \
+ config.h \
+ config.h.in \
+ config.log \
+ config.status \
+ config.cache \
+ config.guess \
+ config.sub \
+ configure \
+ depcomp \
+ install-sh \
+ libtool \
+ ltmain.sh \
+ Makefile.in \
+ Makefile \
+ missing \
+ stamp-h \
+ stamp-h1 \
+ compile \
+ autom4te.cache \
+ $(pkgconfig_DATA)
\ No newline at end of file
--- /dev/null
+License
+-------
+GNU LESSER GENERAL PUBLIC LICENSE (lgpl) version 3, for details see the COPYING file
+
+Requirements
+------------
+- install omniORB and omniORB development libraries (version 4.1.4 used while developing the initial version)
+- start omniNames name server (if problems try to edit /etc/omniorb/omniORB.cfg
+
+Build, install and clean
+------------------------
+- build with command: ./autobuild.sh (generates required autoconf files)
+- install with command: make install
+- clean source code from generated build files: make distclean
+
+howto run test application
+--------------------------
+1) start omniOrb name service
+ #omniNames &
+2) run server
+ src_test/test_server <server_name>
+2) run client
+ src_test/test_client <server_name> <message to send>
+
+howto build new version from idl
+--------------------------------
+#cd src/idl
+#omniidl -bcxx -Wba -Wbtp RequestResponseBus.idl
+#copy generated files to src/plpbus directory
+
--- /dev/null
+#!/bin/sh
+
+if ! [ -e Makefile ] ;
+then
+ echo "No Makefile available, generating it."
+ libtoolize --automake --force --copy
+ autoreconf --force --install
+ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/usr/local
+else
+ echo "Makefile found, no need to generate it."
+fi
+make
--- /dev/null
+AC_INIT(src/plpbus/BusServer.cc)
+AM_CONFIG_HEADER(config.h)
+AC_CONFIG_MACRO_DIR([m4])
+
+PACKAGE=libplpbus
+VERSION=1.0.0
+
+CFLAGS="$CFLAGS -g -Wall -Werror"
+LDFLAGS="$LDFLAGS"
+AC_SUBST(CFLAGS)
+AC_SUBST(LDFLAGS)
+AC_MSG_NOTICE([objective c Makefile])
+
+AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
+
+AC_PROG_CXX
+AC_STDC_HEADERS
+AC_PROG_LIBTOOL
+AC_PROG_INSTALL
+AM_PROG_CC_C_O
+
+PKG_PROG_PKG_CONFIG()
+
+PKG_CHECK_MODULES(SRC, omniDynamic4)
+AC_SUBST(SRC_CFLAGS)
+AC_SUBST(SRC_LIBS)
+
+AC_OUTPUT([
+libplpbus.pc
+Makefile
+src/Makefile
+src_test/Makefile
+])
--- /dev/null
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: libplpbus
+Description: pilppa communication bus library
+Version: @VERSION@
+Requires:
+Cflags: -I${includedir} -I${includedir}/libplpbus
+Libs: -L${libdir}
--- /dev/null
+lib_LTLIBRARIES = libplpbus.la
+libplpbus_la_SOURCES = \
+ idl/RequestResponseBusSK.cc idl/RequestResponseBus.hh \
+ plpbus/BusMessage.cc plpbus/BusMessage.hh \
+ plpbus/BusMessageInternal.cc plpbus/BusMessageInternal.hh \
+ plpbus/ServerEventThread.cc plpbus/ServerEventThread.hh \
+ plpbus/OrbServerImpl.cc plpbus/OrbServerImpl.hh \
+ plpbus/BusServer.cc plpbus/BusServer.hh \
+ plpbus/BusClient.cc plpbus/BusClient.hh \
+ plpbus/IClientListener.hh \
+ plpbus/IServerListener.hh
+libplpbus_la_LDFLAGS = $(SRC_LIBS) $(all_libraries) -version-info 1:0:0 -no-undefined
+AM_CPPFLAGS = $(SRC_CFLAGS)
+
+DISTCLEANFILES = Makefile.in
--- /dev/null
+// This file is generated by omniidl (C++ backend)- omniORB_4_1. Do not edit.
+#ifndef __RequestResponseBus_hh__
+#define __RequestResponseBus_hh__
+
+#ifndef __CORBA_H_EXTERNAL_GUARD__
+#include <omniORB4/CORBA.h>
+#endif
+
+#ifndef USE_stub_in_nt_dll
+# define USE_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+#endif
+#ifndef USE_core_stub_in_nt_dll
+# define USE_core_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+#endif
+#ifndef USE_dyn_stub_in_nt_dll
+# define USE_dyn_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+#endif
+
+
+
+
+
+
+#ifdef USE_stub_in_nt_dll
+# ifndef USE_core_stub_in_nt_dll
+# define USE_core_stub_in_nt_dll
+# endif
+# ifndef USE_dyn_stub_in_nt_dll
+# define USE_dyn_stub_in_nt_dll
+# endif
+#endif
+
+#ifdef _core_attr
+# error "A local CPP macro _core_attr has already been defined."
+#else
+# ifdef USE_core_stub_in_nt_dll
+# define _core_attr _OMNIORB_NTDLL_IMPORT
+# else
+# define _core_attr
+# endif
+#endif
+
+#ifdef _dyn_attr
+# error "A local CPP macro _dyn_attr has already been defined."
+#else
+# ifdef USE_dyn_stub_in_nt_dll
+# define _dyn_attr _OMNIORB_NTDLL_IMPORT
+# else
+# define _dyn_attr
+# endif
+#endif
+
+
+
+
+
+_CORBA_MODULE plpbus_orb
+
+_CORBA_MODULE_BEG
+
+ struct DataItem {
+ typedef _CORBA_ConstrType_Variable_Var<DataItem> _var_type;
+
+
+ ::CORBA::String_member name;
+
+ ::CORBA::Any value;
+
+
+
+ void operator>>= (cdrStream &) const;
+ void operator<<= (cdrStream &);
+ };
+
+ typedef DataItem::_var_type DataItem_var;
+
+ typedef _CORBA_ConstrType_Variable_OUT_arg< DataItem,DataItem_var > DataItem_out;
+
+ _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_DataItem;
+
+ _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_DataItemSequence;
+
+ class DataItemSequence_var;
+
+ class DataItemSequence : public _CORBA_Unbounded_Sequence< DataItem > {
+ public:
+ typedef DataItemSequence_var _var_type;
+ inline DataItemSequence() {}
+ inline DataItemSequence(const DataItemSequence& _s)
+ : _CORBA_Unbounded_Sequence< DataItem > (_s) {}
+
+ inline DataItemSequence(_CORBA_ULong _max)
+ : _CORBA_Unbounded_Sequence< DataItem > (_max) {}
+ inline DataItemSequence(_CORBA_ULong _max, _CORBA_ULong _len, DataItem* _val, _CORBA_Boolean _rel=0)
+ : _CORBA_Unbounded_Sequence< DataItem > (_max, _len, _val, _rel) {}
+
+
+
+ inline DataItemSequence& operator = (const DataItemSequence& _s) {
+ _CORBA_Unbounded_Sequence< DataItem > ::operator=(_s);
+ return *this;
+ }
+ };
+
+ class DataItemSequence_out;
+
+ class DataItemSequence_var {
+ public:
+ inline DataItemSequence_var() : _pd_seq(0) {}
+ inline DataItemSequence_var(DataItemSequence* _s) : _pd_seq(_s) {}
+ inline DataItemSequence_var(const DataItemSequence_var& _s) {
+ if( _s._pd_seq ) _pd_seq = new DataItemSequence(*_s._pd_seq);
+ else _pd_seq = 0;
+ }
+ inline ~DataItemSequence_var() { if( _pd_seq ) delete _pd_seq; }
+
+ inline DataItemSequence_var& operator = (DataItemSequence* _s) {
+ if( _pd_seq ) delete _pd_seq;
+ _pd_seq = _s;
+ return *this;
+ }
+ inline DataItemSequence_var& operator = (const DataItemSequence_var& _s) {
+ if( _s._pd_seq ) {
+ if( !_pd_seq ) _pd_seq = new DataItemSequence;
+ *_pd_seq = *_s._pd_seq;
+ } else if( _pd_seq ) {
+ delete _pd_seq;
+ _pd_seq = 0;
+ }
+ return *this;
+ }
+ inline DataItem& operator [] (_CORBA_ULong _s) {
+ return (*_pd_seq)[_s];
+ }
+
+
+
+ inline DataItemSequence* operator -> () { return _pd_seq; }
+ inline const DataItemSequence* operator -> () const { return _pd_seq; }
+#if defined(__GNUG__)
+ inline operator DataItemSequence& () const { return *_pd_seq; }
+#else
+ inline operator const DataItemSequence& () const { return *_pd_seq; }
+ inline operator DataItemSequence& () { return *_pd_seq; }
+#endif
+
+ inline const DataItemSequence& in() const { return *_pd_seq; }
+ inline DataItemSequence& inout() { return *_pd_seq; }
+ inline DataItemSequence*& out() {
+ if( _pd_seq ) { delete _pd_seq; _pd_seq = 0; }
+ return _pd_seq;
+ }
+ inline DataItemSequence* _retn() { DataItemSequence* tmp = _pd_seq; _pd_seq = 0; return tmp; }
+
+ friend class DataItemSequence_out;
+
+ private:
+ DataItemSequence* _pd_seq;
+ };
+
+ class DataItemSequence_out {
+ public:
+ inline DataItemSequence_out(DataItemSequence*& _s) : _data(_s) { _data = 0; }
+ inline DataItemSequence_out(DataItemSequence_var& _s)
+ : _data(_s._pd_seq) { _s = (DataItemSequence*) 0; }
+ inline DataItemSequence_out(const DataItemSequence_out& _s) : _data(_s._data) {}
+ inline DataItemSequence_out& operator = (const DataItemSequence_out& _s) {
+ _data = _s._data;
+ return *this;
+ }
+ inline DataItemSequence_out& operator = (DataItemSequence* _s) {
+ _data = _s;
+ return *this;
+ }
+ inline operator DataItemSequence*&() { return _data; }
+ inline DataItemSequence*& ptr() { return _data; }
+ inline DataItemSequence* operator->() { return _data; }
+
+ inline DataItem& operator [] (_CORBA_ULong _i) {
+ return (*_data)[_i];
+ }
+
+
+
+ DataItemSequence*& _data;
+
+ private:
+ DataItemSequence_out();
+ DataItemSequence_out& operator=(const DataItemSequence_var&);
+ };
+
+#ifndef __plpbus__orb_mOrbClient__
+#define __plpbus__orb_mOrbClient__
+
+ class OrbClient;
+ class _objref_OrbClient;
+ class _impl_OrbClient;
+
+ typedef _objref_OrbClient* OrbClient_ptr;
+ typedef OrbClient_ptr OrbClientRef;
+
+ class OrbClient_Helper {
+ public:
+ typedef OrbClient_ptr _ptr_type;
+
+ static _ptr_type _nil();
+ static _CORBA_Boolean is_nil(_ptr_type);
+ static void release(_ptr_type);
+ static void duplicate(_ptr_type);
+ static void marshalObjRef(_ptr_type, cdrStream&);
+ static _ptr_type unmarshalObjRef(cdrStream&);
+ };
+
+ typedef _CORBA_ObjRef_Var<_objref_OrbClient, OrbClient_Helper> OrbClient_var;
+ typedef _CORBA_ObjRef_OUT_arg<_objref_OrbClient,OrbClient_Helper > OrbClient_out;
+
+#endif
+
+ // interface OrbClient
+ class OrbClient {
+ public:
+ // Declarations for this interface type.
+ typedef OrbClient_ptr _ptr_type;
+ typedef OrbClient_var _var_type;
+
+ static _ptr_type _duplicate(_ptr_type);
+ static _ptr_type _narrow(::CORBA::Object_ptr);
+ static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
+
+ static _ptr_type _nil();
+
+ static inline void _marshalObjRef(_ptr_type, cdrStream&);
+
+ static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
+ omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
+ if (o)
+ return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
+ else
+ return _nil();
+ }
+
+ static _core_attr const char* _PD_repoId;
+
+ // Other IDL defined within this scope.
+
+ };
+
+ class _objref_OrbClient :
+ public virtual ::CORBA::Object,
+ public virtual omniObjRef
+ {
+ public:
+ void receive_event_message(const char* event_param);
+ void receive_event_dataitem_sequence(const ::plpbus_orb::DataItemSequence& event_param);
+ void receive_response_message(const char* msg_rsp_param);
+ void receive_response_dataitem_sequence(const ::plpbus_orb::DataItemSequence& msg_rsp_param);
+
+ inline _objref_OrbClient() { _PR_setobj(0); } // nil
+ _objref_OrbClient(omniIOR*, omniIdentity*);
+
+ protected:
+ virtual ~_objref_OrbClient();
+
+
+ private:
+ virtual void* _ptrToObjRef(const char*);
+
+ _objref_OrbClient(const _objref_OrbClient&);
+ _objref_OrbClient& operator = (const _objref_OrbClient&);
+ // not implemented
+
+ friend class OrbClient;
+ };
+
+ class _pof_OrbClient : public _OMNI_NS(proxyObjectFactory) {
+ public:
+ inline _pof_OrbClient() : _OMNI_NS(proxyObjectFactory)(OrbClient::_PD_repoId) {}
+ virtual ~_pof_OrbClient();
+
+ virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
+ virtual _CORBA_Boolean is_a(const char*) const;
+ };
+
+ class _impl_OrbClient :
+ public virtual omniServant
+ {
+ public:
+ virtual ~_impl_OrbClient();
+
+ virtual void receive_event_message(const char* event_param) = 0;
+ virtual void receive_event_dataitem_sequence(const ::plpbus_orb::DataItemSequence& event_param) = 0;
+ virtual void receive_response_message(const char* msg_rsp_param) = 0;
+ virtual void receive_response_dataitem_sequence(const ::plpbus_orb::DataItemSequence& msg_rsp_param) = 0;
+
+ public: // Really protected, workaround for xlC
+ virtual _CORBA_Boolean _dispatch(omniCallHandle&);
+
+ private:
+ virtual void* _ptrToInterface(const char*);
+ virtual const char* _mostDerivedRepoId();
+
+ };
+
+
+ _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_OrbClient;
+
+#ifndef __plpbus__orb_mOrbServer__
+#define __plpbus__orb_mOrbServer__
+
+ class OrbServer;
+ class _objref_OrbServer;
+ class _impl_OrbServer;
+
+ typedef _objref_OrbServer* OrbServer_ptr;
+ typedef OrbServer_ptr OrbServerRef;
+
+ class OrbServer_Helper {
+ public:
+ typedef OrbServer_ptr _ptr_type;
+
+ static _ptr_type _nil();
+ static _CORBA_Boolean is_nil(_ptr_type);
+ static void release(_ptr_type);
+ static void duplicate(_ptr_type);
+ static void marshalObjRef(_ptr_type, cdrStream&);
+ static _ptr_type unmarshalObjRef(cdrStream&);
+ };
+
+ typedef _CORBA_ObjRef_Var<_objref_OrbServer, OrbServer_Helper> OrbServer_var;
+ typedef _CORBA_ObjRef_OUT_arg<_objref_OrbServer,OrbServer_Helper > OrbServer_out;
+
+#endif
+
+ // interface OrbServer
+ class OrbServer {
+ public:
+ // Declarations for this interface type.
+ typedef OrbServer_ptr _ptr_type;
+ typedef OrbServer_var _var_type;
+
+ static _ptr_type _duplicate(_ptr_type);
+ static _ptr_type _narrow(::CORBA::Object_ptr);
+ static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
+
+ static _ptr_type _nil();
+
+ static inline void _marshalObjRef(_ptr_type, cdrStream&);
+
+ static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
+ omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
+ if (o)
+ return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
+ else
+ return _nil();
+ }
+
+ static _core_attr const char* _PD_repoId;
+
+ // Other IDL defined within this scope.
+
+ };
+
+ class _objref_OrbServer :
+ public virtual ::CORBA::Object,
+ public virtual omniObjRef
+ {
+ public:
+ void send_message_and_request_response(::plpbus_orb::OrbClient_ptr response_listener_param, const char* msg_param);
+ void send_dataitem_message_and_request_response(::plpbus_orb::OrbClient_ptr response_listener_param, const ::plpbus_orb::DataItemSequence& req_seq_param);
+ char* send_message_and_wait_response(const char* msg_req_param, ::CORBA::Long& err_flg);
+ ::CORBA::Long send_dataitem_message_and_wait_response(const ::plpbus_orb::DataItemSequence& req_seq_param, ::plpbus_orb::DataItemSequence_out rsp_seq_param);
+ void add_event_listener(::plpbus_orb::OrbClient_ptr callback_client_param, const char* msg_param, ::CORBA::UShort period_secs);
+ void shutdown();
+
+ inline _objref_OrbServer() { _PR_setobj(0); } // nil
+ _objref_OrbServer(omniIOR*, omniIdentity*);
+
+ protected:
+ virtual ~_objref_OrbServer();
+
+
+ private:
+ virtual void* _ptrToObjRef(const char*);
+
+ _objref_OrbServer(const _objref_OrbServer&);
+ _objref_OrbServer& operator = (const _objref_OrbServer&);
+ // not implemented
+
+ friend class OrbServer;
+ };
+
+ class _pof_OrbServer : public _OMNI_NS(proxyObjectFactory) {
+ public:
+ inline _pof_OrbServer() : _OMNI_NS(proxyObjectFactory)(OrbServer::_PD_repoId) {}
+ virtual ~_pof_OrbServer();
+
+ virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
+ virtual _CORBA_Boolean is_a(const char*) const;
+ };
+
+ class _impl_OrbServer :
+ public virtual omniServant
+ {
+ public:
+ virtual ~_impl_OrbServer();
+
+ virtual void send_message_and_request_response(::plpbus_orb::OrbClient_ptr response_listener_param, const char* msg_param) = 0;
+ virtual void send_dataitem_message_and_request_response(::plpbus_orb::OrbClient_ptr response_listener_param, const ::plpbus_orb::DataItemSequence& req_seq_param) = 0;
+ virtual char* send_message_and_wait_response(const char* msg_req_param, ::CORBA::Long& err_flg) = 0;
+ virtual ::CORBA::Long send_dataitem_message_and_wait_response(const ::plpbus_orb::DataItemSequence& req_seq_param, ::plpbus_orb::DataItemSequence_out rsp_seq_param) = 0;
+ virtual void add_event_listener(::plpbus_orb::OrbClient_ptr callback_client_param, const char* msg_param, ::CORBA::UShort period_secs) = 0;
+ virtual void shutdown() = 0;
+
+ public: // Really protected, workaround for xlC
+ virtual _CORBA_Boolean _dispatch(omniCallHandle&);
+
+ private:
+ virtual void* _ptrToInterface(const char*);
+ virtual const char* _mostDerivedRepoId();
+
+ };
+
+
+ _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_OrbServer;
+
+_CORBA_MODULE_END
+
+
+
+_CORBA_MODULE POA_plpbus_orb
+_CORBA_MODULE_BEG
+
+ class OrbClient :
+ public virtual plpbus_orb::_impl_OrbClient,
+ public virtual ::PortableServer::ServantBase
+ {
+ public:
+ virtual ~OrbClient();
+
+ inline ::plpbus_orb::OrbClient_ptr _this() {
+ return (::plpbus_orb::OrbClient_ptr) _do_this(::plpbus_orb::OrbClient::_PD_repoId);
+ }
+ };
+
+ template <class _omniT>
+ class OrbClient_tie : public virtual OrbClient
+ {
+ public:
+ OrbClient_tie(_omniT& t)
+ : pd_obj(&t), pd_poa(0), pd_rel(0) {}
+ OrbClient_tie(_omniT& t, ::PortableServer::POA_ptr p)
+ : pd_obj(&t), pd_poa(p), pd_rel(0) {}
+ OrbClient_tie(_omniT* t, _CORBA_Boolean r=1)
+ : pd_obj(t), pd_poa(0), pd_rel(r) {}
+ OrbClient_tie(_omniT* t, ::PortableServer::POA_ptr p,_CORBA_Boolean r=1)
+ : pd_obj(t), pd_poa(p), pd_rel(r) {}
+ ~OrbClient_tie() {
+ if( pd_poa ) ::CORBA::release(pd_poa);
+ if( pd_rel ) delete pd_obj;
+ }
+
+ _omniT* _tied_object() { return pd_obj; }
+
+ void _tied_object(_omniT& t) {
+ if( pd_rel ) delete pd_obj;
+ pd_obj = &t;
+ pd_rel = 0;
+ }
+
+ void _tied_object(_omniT* t, _CORBA_Boolean r=1) {
+ if( pd_rel ) delete pd_obj;
+ pd_obj = t;
+ pd_rel = r;
+ }
+
+ _CORBA_Boolean _is_owner() { return pd_rel; }
+ void _is_owner(_CORBA_Boolean io) { pd_rel = io; }
+
+ ::PortableServer::POA_ptr _default_POA() {
+ if( !pd_poa ) return ::PortableServer::POA::_the_root_poa();
+ else return ::PortableServer::POA::_duplicate(pd_poa);
+ }
+
+ void receive_event_message(const char* event_param) { pd_obj->receive_event_message(event_param); }
+ void receive_event_dataitem_sequence(const plpbus_orb::DataItemSequence& event_param) { pd_obj->receive_event_dataitem_sequence(event_param); }
+ void receive_response_message(const char* msg_rsp_param) { pd_obj->receive_response_message(msg_rsp_param); }
+ void receive_response_dataitem_sequence(const plpbus_orb::DataItemSequence& msg_rsp_param) { pd_obj->receive_response_dataitem_sequence(msg_rsp_param); }
+
+
+ private:
+ _omniT* pd_obj;
+ ::PortableServer::POA_ptr pd_poa;
+ _CORBA_Boolean pd_rel;
+ };
+
+ class OrbServer :
+ public virtual plpbus_orb::_impl_OrbServer,
+ public virtual ::PortableServer::ServantBase
+ {
+ public:
+ virtual ~OrbServer();
+
+ inline ::plpbus_orb::OrbServer_ptr _this() {
+ return (::plpbus_orb::OrbServer_ptr) _do_this(::plpbus_orb::OrbServer::_PD_repoId);
+ }
+ };
+
+ template <class _omniT>
+ class OrbServer_tie : public virtual OrbServer
+ {
+ public:
+ OrbServer_tie(_omniT& t)
+ : pd_obj(&t), pd_poa(0), pd_rel(0) {}
+ OrbServer_tie(_omniT& t, ::PortableServer::POA_ptr p)
+ : pd_obj(&t), pd_poa(p), pd_rel(0) {}
+ OrbServer_tie(_omniT* t, _CORBA_Boolean r=1)
+ : pd_obj(t), pd_poa(0), pd_rel(r) {}
+ OrbServer_tie(_omniT* t, ::PortableServer::POA_ptr p,_CORBA_Boolean r=1)
+ : pd_obj(t), pd_poa(p), pd_rel(r) {}
+ ~OrbServer_tie() {
+ if( pd_poa ) ::CORBA::release(pd_poa);
+ if( pd_rel ) delete pd_obj;
+ }
+
+ _omniT* _tied_object() { return pd_obj; }
+
+ void _tied_object(_omniT& t) {
+ if( pd_rel ) delete pd_obj;
+ pd_obj = &t;
+ pd_rel = 0;
+ }
+
+ void _tied_object(_omniT* t, _CORBA_Boolean r=1) {
+ if( pd_rel ) delete pd_obj;
+ pd_obj = t;
+ pd_rel = r;
+ }
+
+ _CORBA_Boolean _is_owner() { return pd_rel; }
+ void _is_owner(_CORBA_Boolean io) { pd_rel = io; }
+
+ ::PortableServer::POA_ptr _default_POA() {
+ if( !pd_poa ) return ::PortableServer::POA::_the_root_poa();
+ else return ::PortableServer::POA::_duplicate(pd_poa);
+ }
+
+ void send_message_and_request_response(plpbus_orb::OrbClient_ptr response_listener_param, const char* msg_param) { pd_obj->send_message_and_request_response(response_listener_param, msg_param); }
+ void send_dataitem_message_and_request_response(plpbus_orb::OrbClient_ptr response_listener_param, const plpbus_orb::DataItemSequence& req_seq_param) { pd_obj->send_dataitem_message_and_request_response(response_listener_param, req_seq_param); }
+ char* send_message_and_wait_response(const char* msg_req_param, ::CORBA::Long& err_flg) { return pd_obj->send_message_and_wait_response(msg_req_param, err_flg); }
+ ::CORBA::Long send_dataitem_message_and_wait_response(const plpbus_orb::DataItemSequence& req_seq_param, plpbus_orb::DataItemSequence_out rsp_seq_param) { return pd_obj->send_dataitem_message_and_wait_response(req_seq_param, rsp_seq_param); }
+ void add_event_listener(plpbus_orb::OrbClient_ptr callback_client_param, const char* msg_param, ::CORBA::UShort period_secs) { pd_obj->add_event_listener(callback_client_param, msg_param, period_secs); }
+ void shutdown() { pd_obj->shutdown(); }
+
+
+ private:
+ _omniT* pd_obj;
+ ::PortableServer::POA_ptr pd_poa;
+ _CORBA_Boolean pd_rel;
+ };
+
+_CORBA_MODULE_END
+
+
+
+_CORBA_MODULE OBV_plpbus_orb
+_CORBA_MODULE_BEG
+
+_CORBA_MODULE_END
+
+
+
+
+
+#undef _core_attr
+#undef _dyn_attr
+
+extern void operator<<=(::CORBA::Any& _a, const plpbus_orb::DataItem& _s);
+extern void operator<<=(::CORBA::Any& _a, plpbus_orb::DataItem* _sp);
+extern _CORBA_Boolean operator>>=(const ::CORBA::Any& _a, plpbus_orb::DataItem*& _sp);
+extern _CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const plpbus_orb::DataItem*& _sp);
+
+void operator<<=(::CORBA::Any& _a, const plpbus_orb::DataItemSequence& _s);
+void operator<<=(::CORBA::Any& _a, plpbus_orb::DataItemSequence* _sp);
+_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, plpbus_orb::DataItemSequence*& _sp);
+_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const plpbus_orb::DataItemSequence*& _sp);
+
+void operator<<=(::CORBA::Any& _a, plpbus_orb::OrbClient_ptr _s);
+void operator<<=(::CORBA::Any& _a, plpbus_orb::OrbClient_ptr* _s);
+_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, plpbus_orb::OrbClient_ptr& _s);
+
+void operator<<=(::CORBA::Any& _a, plpbus_orb::OrbServer_ptr _s);
+void operator<<=(::CORBA::Any& _a, plpbus_orb::OrbServer_ptr* _s);
+_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, plpbus_orb::OrbServer_ptr& _s);
+
+
+
+inline void
+plpbus_orb::OrbClient::_marshalObjRef(::plpbus_orb::OrbClient_ptr obj, cdrStream& s) {
+ omniObjRef::_marshal(obj->_PR_getobj(),s);
+}
+
+
+inline void
+plpbus_orb::OrbServer::_marshalObjRef(::plpbus_orb::OrbServer_ptr obj, cdrStream& s) {
+ omniObjRef::_marshal(obj->_PR_getobj(),s);
+}
+
+
+
+
+#ifdef USE_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+# undef USE_stub_in_nt_dll
+# undef USE_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+#endif
+#ifdef USE_core_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+# undef USE_core_stub_in_nt_dll
+# undef USE_core_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+#endif
+#ifdef USE_dyn_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+# undef USE_dyn_stub_in_nt_dll
+# undef USE_dyn_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+#endif
+
+#endif // __RequestResponseBus_hh__
+
--- /dev/null
+#ifndef __ECHO_CALLBACK_IDL__
+#define __ECHO_CALLBACK_IDL__
+
+module plpbus_orb {
+ struct DataItem {
+ string name;
+ any value;
+ };
+
+ typedef sequence<DataItem> DataItemSequence;
+
+
+ interface OrbClient {
+ // send event to orb client
+ void receive_event_message(in string event_param);
+ void receive_event_dataitem_sequence(in DataItemSequence event_param);
+ // send message to orb client
+ void receive_response_message(in string msg_rsp_param);
+ void receive_response_dataitem_sequence(in DataItemSequence msg_rsp_param);
+ };
+
+ interface OrbServer {
+ // send message to server and then call back to client
+ void send_message_and_request_response(in OrbClient response_listener_param, in string msg_param);
+ void send_dataitem_message_and_request_response(in OrbClient response_listener_param, in DataItemSequence req_seq_param);
+
+ // send message to server and wait response
+ string send_message_and_wait_response(in string msg_req_param, out long err_flg);
+ long send_dataitem_message_and_wait_response(in DataItemSequence req_seq_param, out DataItemSequence rsp_seq_param);
+
+ // register listening events periodically
+ void add_event_listener(in OrbClient callback_client_param,
+ in string msg_param,
+ in unsigned short period_secs);
+ // send shutdown request to server
+ void shutdown();
+ };
+};
+
+#endif
--- /dev/null
+// This file is generated by omniidl (C++ backend) - omniORB_4_1. Do not edit.
+
+#include "RequestResponseBus.hh"
+
+OMNI_USING_NAMESPACE(omni)
+
+static const char* _0RL_dyn_library_version = omniORB_4_1_dyn;
+
+static ::CORBA::TypeCode::_Tracker _0RL_tcTrack(__FILE__);
+
+static CORBA::PR_structMember _0RL_structmember_plpbus__orb_mDataItem[] = {
+ {"name", CORBA::TypeCode::PR_string_tc(0, &_0RL_tcTrack)},
+ {"value", CORBA::TypeCode::PR_any_tc()}
+};
+
+#ifdef _0RL_tc_plpbus__orb_mDataItem
+# undef _0RL_tc_plpbus__orb_mDataItem
+#endif
+static CORBA::TypeCode_ptr _0RL_tc_plpbus__orb_mDataItem = CORBA::TypeCode::PR_struct_tc("IDL:plpbus_orb/DataItem:1.0", "DataItem", _0RL_structmember_plpbus__orb_mDataItem, 2, &_0RL_tcTrack);
+
+#if defined(HAS_Cplusplus_Namespace) && defined(_MSC_VER)
+// MSVC++ does not give the constant external linkage otherwise.
+namespace plpbus_orb {
+ const ::CORBA::TypeCode_ptr _tc_DataItem = _0RL_tc_plpbus__orb_mDataItem;
+}
+#else
+const ::CORBA::TypeCode_ptr plpbus_orb::_tc_DataItem = _0RL_tc_plpbus__orb_mDataItem;
+#endif
+
+
+
+
+
+
+static CORBA::TypeCode_ptr _0RL_tc_plpbus__orb_mDataItemSequence = CORBA::TypeCode::PR_alias_tc("IDL:plpbus_orb/DataItemSequence:1.0", "DataItemSequence", CORBA::TypeCode::PR_sequence_tc(0, _0RL_tc_plpbus__orb_mDataItem, &_0RL_tcTrack), &_0RL_tcTrack);
+
+
+#if defined(HAS_Cplusplus_Namespace) && defined(_MSC_VER)
+// MSVC++ does not give the constant external linkage otherwise.
+namespace plpbus_orb {
+ const ::CORBA::TypeCode_ptr _tc_DataItemSequence = _0RL_tc_plpbus__orb_mDataItemSequence;
+}
+#else
+const ::CORBA::TypeCode_ptr plpbus_orb::_tc_DataItemSequence = _0RL_tc_plpbus__orb_mDataItemSequence;
+#endif
+
+#if defined(HAS_Cplusplus_Namespace) && defined(_MSC_VER)
+// MSVC++ does not give the constant external linkage otherwise.
+namespace plpbus_orb {
+ const ::CORBA::TypeCode_ptr _tc_OrbClient = CORBA::TypeCode::PR_interface_tc("IDL:plpbus_orb/OrbClient:1.0", "OrbClient", &_0RL_tcTrack);
+}
+#else
+const ::CORBA::TypeCode_ptr plpbus_orb::_tc_OrbClient = CORBA::TypeCode::PR_interface_tc("IDL:plpbus_orb/OrbClient:1.0", "OrbClient", &_0RL_tcTrack);
+#endif
+
+#if defined(HAS_Cplusplus_Namespace) && defined(_MSC_VER)
+// MSVC++ does not give the constant external linkage otherwise.
+namespace plpbus_orb {
+ const ::CORBA::TypeCode_ptr _tc_OrbServer = CORBA::TypeCode::PR_interface_tc("IDL:plpbus_orb/OrbServer:1.0", "OrbServer", &_0RL_tcTrack);
+}
+#else
+const ::CORBA::TypeCode_ptr plpbus_orb::_tc_OrbServer = CORBA::TypeCode::PR_interface_tc("IDL:plpbus_orb/OrbServer:1.0", "OrbServer", &_0RL_tcTrack);
+#endif
+
+static void _0RL_plpbus__orb_mDataItem_marshal_fn(cdrStream& _s, void* _v)
+{
+ plpbus_orb::DataItem* _p = (plpbus_orb::DataItem*)_v;
+ *_p >>= _s;
+}
+static void _0RL_plpbus__orb_mDataItem_unmarshal_fn(cdrStream& _s, void*& _v)
+{
+ plpbus_orb::DataItem* _p = new plpbus_orb::DataItem;
+ *_p <<= _s;
+ _v = _p;
+}
+static void _0RL_plpbus__orb_mDataItem_destructor_fn(void* _v)
+{
+ plpbus_orb::DataItem* _p = (plpbus_orb::DataItem*)_v;
+ delete _p;
+}
+
+void operator<<=(::CORBA::Any& _a, const plpbus_orb::DataItem& _s)
+{
+ plpbus_orb::DataItem* _p = new plpbus_orb::DataItem(_s);
+ _a.PR_insert(_0RL_tc_plpbus__orb_mDataItem,
+ _0RL_plpbus__orb_mDataItem_marshal_fn,
+ _0RL_plpbus__orb_mDataItem_destructor_fn,
+ _p);
+}
+void operator<<=(::CORBA::Any& _a, plpbus_orb::DataItem* _sp)
+{
+ _a.PR_insert(_0RL_tc_plpbus__orb_mDataItem,
+ _0RL_plpbus__orb_mDataItem_marshal_fn,
+ _0RL_plpbus__orb_mDataItem_destructor_fn,
+ _sp);
+}
+
+::CORBA::Boolean operator>>=(const ::CORBA::Any& _a, plpbus_orb::DataItem*& _sp)
+{
+ return _a >>= (const plpbus_orb::DataItem*&) _sp;
+}
+::CORBA::Boolean operator>>=(const ::CORBA::Any& _a, const plpbus_orb::DataItem*& _sp)
+{
+ void* _v;
+ if (_a.PR_extract(_0RL_tc_plpbus__orb_mDataItem,
+ _0RL_plpbus__orb_mDataItem_unmarshal_fn,
+ _0RL_plpbus__orb_mDataItem_marshal_fn,
+ _0RL_plpbus__orb_mDataItem_destructor_fn,
+ _v)) {
+ _sp = (const plpbus_orb::DataItem*)_v;
+ return 1;
+ }
+ return 0;
+}
+
+static void _0RL_plpbus__orb_mDataItemSequence_marshal_fn(cdrStream& _s, void* _v)
+{
+ plpbus_orb::DataItemSequence* _p = (plpbus_orb::DataItemSequence*)_v;
+ *_p >>= _s;
+}
+static void _0RL_plpbus__orb_mDataItemSequence_unmarshal_fn(cdrStream& _s, void*& _v)
+{
+ plpbus_orb::DataItemSequence* _p = new plpbus_orb::DataItemSequence;
+ *_p <<= _s;
+ _v = _p;
+}
+static void _0RL_plpbus__orb_mDataItemSequence_destructor_fn(void* _v)
+{
+ plpbus_orb::DataItemSequence* _p = (plpbus_orb::DataItemSequence*)_v;
+ delete _p;
+}
+
+void operator<<=(::CORBA::Any& _a, const plpbus_orb::DataItemSequence& _s)
+{
+ plpbus_orb::DataItemSequence* _p = new plpbus_orb::DataItemSequence(_s);
+ _a.PR_insert(_0RL_tc_plpbus__orb_mDataItemSequence,
+ _0RL_plpbus__orb_mDataItemSequence_marshal_fn,
+ _0RL_plpbus__orb_mDataItemSequence_destructor_fn,
+ _p);
+}
+void operator<<=(::CORBA::Any& _a, plpbus_orb::DataItemSequence* _sp)
+{
+ _a.PR_insert(_0RL_tc_plpbus__orb_mDataItemSequence,
+ _0RL_plpbus__orb_mDataItemSequence_marshal_fn,
+ _0RL_plpbus__orb_mDataItemSequence_destructor_fn,
+ _sp);
+}
+
+::CORBA::Boolean operator>>=(const ::CORBA::Any& _a, plpbus_orb::DataItemSequence*& _sp)
+{
+ return _a >>= (const plpbus_orb::DataItemSequence*&) _sp;
+}
+::CORBA::Boolean operator>>=(const ::CORBA::Any& _a, const plpbus_orb::DataItemSequence*& _sp)
+{
+ void* _v;
+ if (_a.PR_extract(_0RL_tc_plpbus__orb_mDataItemSequence,
+ _0RL_plpbus__orb_mDataItemSequence_unmarshal_fn,
+ _0RL_plpbus__orb_mDataItemSequence_marshal_fn,
+ _0RL_plpbus__orb_mDataItemSequence_destructor_fn,
+ _v)) {
+ _sp = (const plpbus_orb::DataItemSequence*)_v;
+ return 1;
+ }
+ return 0;
+}
+
+static void _0RL_plpbus__orb_mOrbClient_marshal_fn(cdrStream& _s, void* _v)
+{
+ omniObjRef* _o = (omniObjRef*)_v;
+ omniObjRef::_marshal(_o, _s);
+}
+static void _0RL_plpbus__orb_mOrbClient_unmarshal_fn(cdrStream& _s, void*& _v)
+{
+ omniObjRef* _o = omniObjRef::_unMarshal(plpbus_orb::OrbClient::_PD_repoId, _s);
+ _v = _o;
+}
+static void _0RL_plpbus__orb_mOrbClient_destructor_fn(void* _v)
+{
+ omniObjRef* _o = (omniObjRef*)_v;
+ if (_o)
+ omni::releaseObjRef(_o);
+}
+
+void operator<<=(::CORBA::Any& _a, plpbus_orb::OrbClient_ptr _o)
+{
+ plpbus_orb::OrbClient_ptr _no = plpbus_orb::OrbClient::_duplicate(_o);
+ _a.PR_insert(plpbus_orb::_tc_OrbClient,
+ _0RL_plpbus__orb_mOrbClient_marshal_fn,
+ _0RL_plpbus__orb_mOrbClient_destructor_fn,
+ _no->_PR_getobj());
+}
+void operator<<=(::CORBA::Any& _a, plpbus_orb::OrbClient_ptr* _op)
+{
+ _a.PR_insert(plpbus_orb::_tc_OrbClient,
+ _0RL_plpbus__orb_mOrbClient_marshal_fn,
+ _0RL_plpbus__orb_mOrbClient_destructor_fn,
+ (*_op)->_PR_getobj());
+ *_op = plpbus_orb::OrbClient::_nil();
+}
+
+::CORBA::Boolean operator>>=(const ::CORBA::Any& _a, plpbus_orb::OrbClient_ptr& _o)
+{
+ void* _v;
+ if (_a.PR_extract(plpbus_orb::_tc_OrbClient,
+ _0RL_plpbus__orb_mOrbClient_unmarshal_fn,
+ _0RL_plpbus__orb_mOrbClient_marshal_fn,
+ _0RL_plpbus__orb_mOrbClient_destructor_fn,
+ _v)) {
+ omniObjRef* _r = (omniObjRef*)_v;
+ if (_r)
+ _o = (plpbus_orb::OrbClient_ptr)_r->_ptrToObjRef(plpbus_orb::OrbClient::_PD_repoId);
+ else
+ _o = plpbus_orb::OrbClient::_nil();
+ return 1;
+ }
+ return 0;
+}
+
+static void _0RL_plpbus__orb_mOrbServer_marshal_fn(cdrStream& _s, void* _v)
+{
+ omniObjRef* _o = (omniObjRef*)_v;
+ omniObjRef::_marshal(_o, _s);
+}
+static void _0RL_plpbus__orb_mOrbServer_unmarshal_fn(cdrStream& _s, void*& _v)
+{
+ omniObjRef* _o = omniObjRef::_unMarshal(plpbus_orb::OrbServer::_PD_repoId, _s);
+ _v = _o;
+}
+static void _0RL_plpbus__orb_mOrbServer_destructor_fn(void* _v)
+{
+ omniObjRef* _o = (omniObjRef*)_v;
+ if (_o)
+ omni::releaseObjRef(_o);
+}
+
+void operator<<=(::CORBA::Any& _a, plpbus_orb::OrbServer_ptr _o)
+{
+ plpbus_orb::OrbServer_ptr _no = plpbus_orb::OrbServer::_duplicate(_o);
+ _a.PR_insert(plpbus_orb::_tc_OrbServer,
+ _0RL_plpbus__orb_mOrbServer_marshal_fn,
+ _0RL_plpbus__orb_mOrbServer_destructor_fn,
+ _no->_PR_getobj());
+}
+void operator<<=(::CORBA::Any& _a, plpbus_orb::OrbServer_ptr* _op)
+{
+ _a.PR_insert(plpbus_orb::_tc_OrbServer,
+ _0RL_plpbus__orb_mOrbServer_marshal_fn,
+ _0RL_plpbus__orb_mOrbServer_destructor_fn,
+ (*_op)->_PR_getobj());
+ *_op = plpbus_orb::OrbServer::_nil();
+}
+
+::CORBA::Boolean operator>>=(const ::CORBA::Any& _a, plpbus_orb::OrbServer_ptr& _o)
+{
+ void* _v;
+ if (_a.PR_extract(plpbus_orb::_tc_OrbServer,
+ _0RL_plpbus__orb_mOrbServer_unmarshal_fn,
+ _0RL_plpbus__orb_mOrbServer_marshal_fn,
+ _0RL_plpbus__orb_mOrbServer_destructor_fn,
+ _v)) {
+ omniObjRef* _r = (omniObjRef*)_v;
+ if (_r)
+ _o = (plpbus_orb::OrbServer_ptr)_r->_ptrToObjRef(plpbus_orb::OrbServer::_PD_repoId);
+ else
+ _o = plpbus_orb::OrbServer::_nil();
+ return 1;
+ }
+ return 0;
+}
+
--- /dev/null
+// This file is generated by omniidl (C++ backend)- omniORB_4_1. Do not edit.
+
+#include "RequestResponseBus.hh"
+#include <omniORB4/IOP_S.h>
+#include <omniORB4/IOP_C.h>
+#include <omniORB4/callDescriptor.h>
+#include <omniORB4/callHandle.h>
+#include <omniORB4/objTracker.h>
+
+
+OMNI_USING_NAMESPACE(omni)
+
+static const char* _0RL_library_version = omniORB_4_1;
+
+
+
+void
+plpbus_orb::DataItem::operator>>= (cdrStream &_n) const
+{
+ _n.marshalString(name,0);
+ (const ::CORBA::Any&) value >>= _n;
+
+}
+
+void
+plpbus_orb::DataItem::operator<<= (cdrStream &_n)
+{
+ name = _n.unmarshalString(0);
+ (::CORBA::Any&)value <<= _n;
+
+}
+
+plpbus_orb::OrbClient_ptr plpbus_orb::OrbClient_Helper::_nil() {
+ return ::plpbus_orb::OrbClient::_nil();
+}
+
+::CORBA::Boolean plpbus_orb::OrbClient_Helper::is_nil(::plpbus_orb::OrbClient_ptr p) {
+ return ::CORBA::is_nil(p);
+
+}
+
+void plpbus_orb::OrbClient_Helper::release(::plpbus_orb::OrbClient_ptr p) {
+ ::CORBA::release(p);
+}
+
+void plpbus_orb::OrbClient_Helper::marshalObjRef(::plpbus_orb::OrbClient_ptr obj, cdrStream& s) {
+ ::plpbus_orb::OrbClient::_marshalObjRef(obj, s);
+}
+
+plpbus_orb::OrbClient_ptr plpbus_orb::OrbClient_Helper::unmarshalObjRef(cdrStream& s) {
+ return ::plpbus_orb::OrbClient::_unmarshalObjRef(s);
+}
+
+void plpbus_orb::OrbClient_Helper::duplicate(::plpbus_orb::OrbClient_ptr obj) {
+ if( obj && !obj->_NP_is_nil() ) omni::duplicateObjRef(obj);
+}
+
+plpbus_orb::OrbClient_ptr
+plpbus_orb::OrbClient::_duplicate(::plpbus_orb::OrbClient_ptr obj)
+{
+ if( obj && !obj->_NP_is_nil() ) omni::duplicateObjRef(obj);
+ return obj;
+}
+
+plpbus_orb::OrbClient_ptr
+plpbus_orb::OrbClient::_narrow(::CORBA::Object_ptr obj)
+{
+ if( !obj || obj->_NP_is_nil() || obj->_NP_is_pseudo() ) return _nil();
+ _ptr_type e = (_ptr_type) obj->_PR_getobj()->_realNarrow(_PD_repoId);
+ return e ? e : _nil();
+}
+
+
+plpbus_orb::OrbClient_ptr
+plpbus_orb::OrbClient::_unchecked_narrow(::CORBA::Object_ptr obj)
+{
+ if( !obj || obj->_NP_is_nil() || obj->_NP_is_pseudo() ) return _nil();
+ _ptr_type e = (_ptr_type) obj->_PR_getobj()->_uncheckedNarrow(_PD_repoId);
+ return e ? e : _nil();
+}
+
+plpbus_orb::OrbClient_ptr
+plpbus_orb::OrbClient::_nil()
+{
+#ifdef OMNI_UNLOADABLE_STUBS
+ static _objref_OrbClient _the_nil_obj;
+ return &_the_nil_obj;
+#else
+ static _objref_OrbClient* _the_nil_ptr = 0;
+ if( !_the_nil_ptr ) {
+ omni::nilRefLock().lock();
+ if( !_the_nil_ptr ) {
+ _the_nil_ptr = new _objref_OrbClient;
+ registerNilCorbaObject(_the_nil_ptr);
+ }
+ omni::nilRefLock().unlock();
+ }
+ return _the_nil_ptr;
+#endif
+}
+
+const char* plpbus_orb::OrbClient::_PD_repoId = "IDL:plpbus_orb/OrbClient:1.0";
+
+
+plpbus_orb::_objref_OrbClient::~_objref_OrbClient() {
+
+}
+
+
+plpbus_orb::_objref_OrbClient::_objref_OrbClient(omniIOR* ior, omniIdentity* id) :
+ omniObjRef(::plpbus_orb::OrbClient::_PD_repoId, ior, id, 1)
+
+
+{
+ _PR_setobj(this);
+}
+
+void*
+plpbus_orb::_objref_OrbClient::_ptrToObjRef(const char* id)
+{
+ if( id == ::plpbus_orb::OrbClient::_PD_repoId )
+ return (::plpbus_orb::OrbClient_ptr) this;
+
+ if( id == ::CORBA::Object::_PD_repoId )
+ return (::CORBA::Object_ptr) this;
+
+ if( omni::strMatch(id, ::plpbus_orb::OrbClient::_PD_repoId) )
+ return (::plpbus_orb::OrbClient_ptr) this;
+
+ if( omni::strMatch(id, ::CORBA::Object::_PD_repoId) )
+ return (::CORBA::Object_ptr) this;
+
+ return 0;
+}
+
+// Proxy call descriptor class. Mangled signature:
+// void_i_cstring
+class _0RL_cd_00d6793dc2c2a80c_00000000
+ : public omniCallDescriptor
+{
+public:
+ inline _0RL_cd_00d6793dc2c2a80c_00000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):
+ omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)
+ {
+
+ }
+
+ void marshalArguments(cdrStream&);
+ void unmarshalArguments(cdrStream&);
+
+
+
+ static const char* const _user_exns[];
+
+ ::CORBA::String_var arg_0_;
+ const char* arg_0;
+};
+
+void _0RL_cd_00d6793dc2c2a80c_00000000::marshalArguments(cdrStream& _n)
+{
+ _n.marshalString(arg_0,0);
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_00000000::unmarshalArguments(cdrStream& _n)
+{
+ arg_0_ = _n.unmarshalString(0);
+ arg_0 = arg_0_.in();
+
+}
+
+const char* const _0RL_cd_00d6793dc2c2a80c_00000000::_user_exns[] = {
+ 0
+};
+
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_10000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_00000000* tcd = (_0RL_cd_00d6793dc2c2a80c_00000000*)cd;
+ plpbus_orb::_impl_OrbClient* impl = (plpbus_orb::_impl_OrbClient*) svnt->_ptrToInterface(plpbus_orb::OrbClient::_PD_repoId);
+ impl->receive_event_message(tcd->arg_0);
+
+
+}
+
+void plpbus_orb::_objref_OrbClient::receive_event_message(const char* event_param)
+{
+ _0RL_cd_00d6793dc2c2a80c_00000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_10000000, "receive_event_message", 22);
+ _call_desc.arg_0 = event_param;
+
+ _invoke(_call_desc);
+
+
+
+}
+// Proxy call descriptor class. Mangled signature:
+// void_i_cplpbus__orb_mDataItemSequence
+class _0RL_cd_00d6793dc2c2a80c_20000000
+ : public omniCallDescriptor
+{
+public:
+ inline _0RL_cd_00d6793dc2c2a80c_20000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):
+ omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)
+ {
+
+ }
+
+ void marshalArguments(cdrStream&);
+ void unmarshalArguments(cdrStream&);
+
+
+
+ static const char* const _user_exns[];
+
+ plpbus_orb::DataItemSequence_var arg_0_;
+ const plpbus_orb::DataItemSequence* arg_0;
+};
+
+void _0RL_cd_00d6793dc2c2a80c_20000000::marshalArguments(cdrStream& _n)
+{
+ (const plpbus_orb::DataItemSequence&) *arg_0 >>= _n;
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_20000000::unmarshalArguments(cdrStream& _n)
+{
+ arg_0_ = new plpbus_orb::DataItemSequence;
+ (plpbus_orb::DataItemSequence&)arg_0_ <<= _n;
+ arg_0 = &arg_0_.in();
+
+}
+
+const char* const _0RL_cd_00d6793dc2c2a80c_20000000::_user_exns[] = {
+ 0
+};
+
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_30000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_20000000* tcd = (_0RL_cd_00d6793dc2c2a80c_20000000*)cd;
+ plpbus_orb::_impl_OrbClient* impl = (plpbus_orb::_impl_OrbClient*) svnt->_ptrToInterface(plpbus_orb::OrbClient::_PD_repoId);
+ impl->receive_event_dataitem_sequence(*tcd->arg_0);
+
+
+}
+
+void plpbus_orb::_objref_OrbClient::receive_event_dataitem_sequence(const ::plpbus_orb::DataItemSequence& event_param)
+{
+ _0RL_cd_00d6793dc2c2a80c_20000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_30000000, "receive_event_dataitem_sequence", 32);
+ _call_desc.arg_0 = &(::plpbus_orb::DataItemSequence&) event_param;
+
+ _invoke(_call_desc);
+
+
+
+}
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_40000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_00000000* tcd = (_0RL_cd_00d6793dc2c2a80c_00000000*)cd;
+ plpbus_orb::_impl_OrbClient* impl = (plpbus_orb::_impl_OrbClient*) svnt->_ptrToInterface(plpbus_orb::OrbClient::_PD_repoId);
+ impl->receive_response_message(tcd->arg_0);
+
+
+}
+
+void plpbus_orb::_objref_OrbClient::receive_response_message(const char* msg_rsp_param)
+{
+ _0RL_cd_00d6793dc2c2a80c_00000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_40000000, "receive_response_message", 25);
+ _call_desc.arg_0 = msg_rsp_param;
+
+ _invoke(_call_desc);
+
+
+
+}
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_50000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_20000000* tcd = (_0RL_cd_00d6793dc2c2a80c_20000000*)cd;
+ plpbus_orb::_impl_OrbClient* impl = (plpbus_orb::_impl_OrbClient*) svnt->_ptrToInterface(plpbus_orb::OrbClient::_PD_repoId);
+ impl->receive_response_dataitem_sequence(*tcd->arg_0);
+
+
+}
+
+void plpbus_orb::_objref_OrbClient::receive_response_dataitem_sequence(const ::plpbus_orb::DataItemSequence& msg_rsp_param)
+{
+ _0RL_cd_00d6793dc2c2a80c_20000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_50000000, "receive_response_dataitem_sequence", 35);
+ _call_desc.arg_0 = &(::plpbus_orb::DataItemSequence&) msg_rsp_param;
+
+ _invoke(_call_desc);
+
+
+
+}
+plpbus_orb::_pof_OrbClient::~_pof_OrbClient() {}
+
+
+omniObjRef*
+plpbus_orb::_pof_OrbClient::newObjRef(omniIOR* ior, omniIdentity* id)
+{
+ return new ::plpbus_orb::_objref_OrbClient(ior, id);
+}
+
+
+::CORBA::Boolean
+plpbus_orb::_pof_OrbClient::is_a(const char* id) const
+{
+ if( omni::ptrStrMatch(id, ::plpbus_orb::OrbClient::_PD_repoId) )
+ return 1;
+
+ return 0;
+}
+
+const plpbus_orb::_pof_OrbClient _the_pof_plpbus__orb_mOrbClient;
+
+plpbus_orb::_impl_OrbClient::~_impl_OrbClient() {}
+
+
+::CORBA::Boolean
+plpbus_orb::_impl_OrbClient::_dispatch(omniCallHandle& _handle)
+{
+ const char* op = _handle.operation_name();
+
+ if( omni::strMatch(op, "receive_event_message") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_00000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_10000000, "receive_event_message", 22, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+ if( omni::strMatch(op, "receive_event_dataitem_sequence") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_20000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_30000000, "receive_event_dataitem_sequence", 32, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+ if( omni::strMatch(op, "receive_response_message") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_00000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_40000000, "receive_response_message", 25, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+ if( omni::strMatch(op, "receive_response_dataitem_sequence") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_20000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_50000000, "receive_response_dataitem_sequence", 35, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+
+ return 0;
+}
+
+void*
+plpbus_orb::_impl_OrbClient::_ptrToInterface(const char* id)
+{
+ if( id == ::plpbus_orb::OrbClient::_PD_repoId )
+ return (::plpbus_orb::_impl_OrbClient*) this;
+
+ if( id == ::CORBA::Object::_PD_repoId )
+ return (void*) 1;
+
+ if( omni::strMatch(id, ::plpbus_orb::OrbClient::_PD_repoId) )
+ return (::plpbus_orb::_impl_OrbClient*) this;
+
+ if( omni::strMatch(id, ::CORBA::Object::_PD_repoId) )
+ return (void*) 1;
+ return 0;
+}
+
+const char*
+plpbus_orb::_impl_OrbClient::_mostDerivedRepoId()
+{
+ return ::plpbus_orb::OrbClient::_PD_repoId;
+}
+
+plpbus_orb::OrbServer_ptr plpbus_orb::OrbServer_Helper::_nil() {
+ return ::plpbus_orb::OrbServer::_nil();
+}
+
+::CORBA::Boolean plpbus_orb::OrbServer_Helper::is_nil(::plpbus_orb::OrbServer_ptr p) {
+ return ::CORBA::is_nil(p);
+
+}
+
+void plpbus_orb::OrbServer_Helper::release(::plpbus_orb::OrbServer_ptr p) {
+ ::CORBA::release(p);
+}
+
+void plpbus_orb::OrbServer_Helper::marshalObjRef(::plpbus_orb::OrbServer_ptr obj, cdrStream& s) {
+ ::plpbus_orb::OrbServer::_marshalObjRef(obj, s);
+}
+
+plpbus_orb::OrbServer_ptr plpbus_orb::OrbServer_Helper::unmarshalObjRef(cdrStream& s) {
+ return ::plpbus_orb::OrbServer::_unmarshalObjRef(s);
+}
+
+void plpbus_orb::OrbServer_Helper::duplicate(::plpbus_orb::OrbServer_ptr obj) {
+ if( obj && !obj->_NP_is_nil() ) omni::duplicateObjRef(obj);
+}
+
+plpbus_orb::OrbServer_ptr
+plpbus_orb::OrbServer::_duplicate(::plpbus_orb::OrbServer_ptr obj)
+{
+ if( obj && !obj->_NP_is_nil() ) omni::duplicateObjRef(obj);
+ return obj;
+}
+
+plpbus_orb::OrbServer_ptr
+plpbus_orb::OrbServer::_narrow(::CORBA::Object_ptr obj)
+{
+ if( !obj || obj->_NP_is_nil() || obj->_NP_is_pseudo() ) return _nil();
+ _ptr_type e = (_ptr_type) obj->_PR_getobj()->_realNarrow(_PD_repoId);
+ return e ? e : _nil();
+}
+
+
+plpbus_orb::OrbServer_ptr
+plpbus_orb::OrbServer::_unchecked_narrow(::CORBA::Object_ptr obj)
+{
+ if( !obj || obj->_NP_is_nil() || obj->_NP_is_pseudo() ) return _nil();
+ _ptr_type e = (_ptr_type) obj->_PR_getobj()->_uncheckedNarrow(_PD_repoId);
+ return e ? e : _nil();
+}
+
+plpbus_orb::OrbServer_ptr
+plpbus_orb::OrbServer::_nil()
+{
+#ifdef OMNI_UNLOADABLE_STUBS
+ static _objref_OrbServer _the_nil_obj;
+ return &_the_nil_obj;
+#else
+ static _objref_OrbServer* _the_nil_ptr = 0;
+ if( !_the_nil_ptr ) {
+ omni::nilRefLock().lock();
+ if( !_the_nil_ptr ) {
+ _the_nil_ptr = new _objref_OrbServer;
+ registerNilCorbaObject(_the_nil_ptr);
+ }
+ omni::nilRefLock().unlock();
+ }
+ return _the_nil_ptr;
+#endif
+}
+
+const char* plpbus_orb::OrbServer::_PD_repoId = "IDL:plpbus_orb/OrbServer:1.0";
+
+
+plpbus_orb::_objref_OrbServer::~_objref_OrbServer() {
+
+}
+
+
+plpbus_orb::_objref_OrbServer::_objref_OrbServer(omniIOR* ior, omniIdentity* id) :
+ omniObjRef(::plpbus_orb::OrbServer::_PD_repoId, ior, id, 1)
+
+
+{
+ _PR_setobj(this);
+}
+
+void*
+plpbus_orb::_objref_OrbServer::_ptrToObjRef(const char* id)
+{
+ if( id == ::plpbus_orb::OrbServer::_PD_repoId )
+ return (::plpbus_orb::OrbServer_ptr) this;
+
+ if( id == ::CORBA::Object::_PD_repoId )
+ return (::CORBA::Object_ptr) this;
+
+ if( omni::strMatch(id, ::plpbus_orb::OrbServer::_PD_repoId) )
+ return (::plpbus_orb::OrbServer_ptr) this;
+
+ if( omni::strMatch(id, ::CORBA::Object::_PD_repoId) )
+ return (::CORBA::Object_ptr) this;
+
+ return 0;
+}
+
+// Proxy call descriptor class. Mangled signature:
+// void_i_cplpbus__orb_mOrbClient_i_cstring
+class _0RL_cd_00d6793dc2c2a80c_60000000
+ : public omniCallDescriptor
+{
+public:
+ inline _0RL_cd_00d6793dc2c2a80c_60000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):
+ omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)
+ {
+
+ }
+
+ void marshalArguments(cdrStream&);
+ void unmarshalArguments(cdrStream&);
+
+
+
+ static const char* const _user_exns[];
+
+ plpbus_orb::OrbClient_var arg_0_;
+ plpbus_orb::OrbClient_ptr arg_0;
+ ::CORBA::String_var arg_1_;
+ const char* arg_1;
+};
+
+void _0RL_cd_00d6793dc2c2a80c_60000000::marshalArguments(cdrStream& _n)
+{
+ plpbus_orb::OrbClient::_marshalObjRef(arg_0,_n);
+ _n.marshalString(arg_1,0);
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_60000000::unmarshalArguments(cdrStream& _n)
+{
+ arg_0_ = plpbus_orb::OrbClient::_unmarshalObjRef(_n);
+ arg_0 = arg_0_.in();
+ arg_1_ = _n.unmarshalString(0);
+ arg_1 = arg_1_.in();
+
+}
+
+const char* const _0RL_cd_00d6793dc2c2a80c_60000000::_user_exns[] = {
+ 0
+};
+
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_70000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_60000000* tcd = (_0RL_cd_00d6793dc2c2a80c_60000000*)cd;
+ plpbus_orb::_impl_OrbServer* impl = (plpbus_orb::_impl_OrbServer*) svnt->_ptrToInterface(plpbus_orb::OrbServer::_PD_repoId);
+ impl->send_message_and_request_response(tcd->arg_0, tcd->arg_1);
+
+
+}
+
+void plpbus_orb::_objref_OrbServer::send_message_and_request_response(::plpbus_orb::OrbClient_ptr response_listener_param, const char* msg_param)
+{
+ _0RL_cd_00d6793dc2c2a80c_60000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_70000000, "send_message_and_request_response", 34);
+ _call_desc.arg_0 = response_listener_param;
+ _call_desc.arg_1 = msg_param;
+
+ _invoke(_call_desc);
+
+
+
+}
+// Proxy call descriptor class. Mangled signature:
+// void_i_cplpbus__orb_mOrbClient_i_cplpbus__orb_mDataItemSequence
+class _0RL_cd_00d6793dc2c2a80c_80000000
+ : public omniCallDescriptor
+{
+public:
+ inline _0RL_cd_00d6793dc2c2a80c_80000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):
+ omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)
+ {
+
+ }
+
+ void marshalArguments(cdrStream&);
+ void unmarshalArguments(cdrStream&);
+
+
+
+ static const char* const _user_exns[];
+
+ plpbus_orb::OrbClient_var arg_0_;
+ plpbus_orb::OrbClient_ptr arg_0;
+ plpbus_orb::DataItemSequence_var arg_1_;
+ const plpbus_orb::DataItemSequence* arg_1;
+};
+
+void _0RL_cd_00d6793dc2c2a80c_80000000::marshalArguments(cdrStream& _n)
+{
+ plpbus_orb::OrbClient::_marshalObjRef(arg_0,_n);
+ (const plpbus_orb::DataItemSequence&) *arg_1 >>= _n;
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_80000000::unmarshalArguments(cdrStream& _n)
+{
+ arg_0_ = plpbus_orb::OrbClient::_unmarshalObjRef(_n);
+ arg_0 = arg_0_.in();
+ arg_1_ = new plpbus_orb::DataItemSequence;
+ (plpbus_orb::DataItemSequence&)arg_1_ <<= _n;
+ arg_1 = &arg_1_.in();
+
+}
+
+const char* const _0RL_cd_00d6793dc2c2a80c_80000000::_user_exns[] = {
+ 0
+};
+
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_90000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_80000000* tcd = (_0RL_cd_00d6793dc2c2a80c_80000000*)cd;
+ plpbus_orb::_impl_OrbServer* impl = (plpbus_orb::_impl_OrbServer*) svnt->_ptrToInterface(plpbus_orb::OrbServer::_PD_repoId);
+ impl->send_dataitem_message_and_request_response(tcd->arg_0, *tcd->arg_1);
+
+
+}
+
+void plpbus_orb::_objref_OrbServer::send_dataitem_message_and_request_response(::plpbus_orb::OrbClient_ptr response_listener_param, const ::plpbus_orb::DataItemSequence& req_seq_param)
+{
+ _0RL_cd_00d6793dc2c2a80c_80000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_90000000, "send_dataitem_message_and_request_response", 43);
+ _call_desc.arg_0 = response_listener_param;
+ _call_desc.arg_1 = &(::plpbus_orb::DataItemSequence&) req_seq_param;
+
+ _invoke(_call_desc);
+
+
+
+}
+// Proxy call descriptor class. Mangled signature:
+// _cstring_i_cstring_o_clong
+class _0RL_cd_00d6793dc2c2a80c_a0000000
+ : public omniCallDescriptor
+{
+public:
+ inline _0RL_cd_00d6793dc2c2a80c_a0000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):
+ omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)
+ {
+
+ }
+
+ void marshalArguments(cdrStream&);
+ void unmarshalArguments(cdrStream&);
+
+ void unmarshalReturnedValues(cdrStream&);
+ void marshalReturnedValues(cdrStream&);
+
+
+ static const char* const _user_exns[];
+
+ ::CORBA::String_var arg_0_;
+ const char* arg_0;
+ ::CORBA::Long arg_1;
+ ::CORBA::String_var result;
+};
+
+void _0RL_cd_00d6793dc2c2a80c_a0000000::marshalArguments(cdrStream& _n)
+{
+ _n.marshalString(arg_0,0);
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_a0000000::unmarshalArguments(cdrStream& _n)
+{
+ arg_0_ = _n.unmarshalString(0);
+ arg_0 = arg_0_.in();
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_a0000000::marshalReturnedValues(cdrStream& _n)
+{
+ _n.marshalString(result,0);
+ arg_1 >>= _n;
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_a0000000::unmarshalReturnedValues(cdrStream& _n)
+{
+ result = _n.unmarshalString(0);
+ (::CORBA::Long&)arg_1 <<= _n;
+
+}
+
+const char* const _0RL_cd_00d6793dc2c2a80c_a0000000::_user_exns[] = {
+ 0
+};
+
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_b0000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_a0000000* tcd = (_0RL_cd_00d6793dc2c2a80c_a0000000*)cd;
+ plpbus_orb::_impl_OrbServer* impl = (plpbus_orb::_impl_OrbServer*) svnt->_ptrToInterface(plpbus_orb::OrbServer::_PD_repoId);
+ tcd->result = impl->send_message_and_wait_response(tcd->arg_0, tcd->arg_1);
+
+
+}
+
+char* plpbus_orb::_objref_OrbServer::send_message_and_wait_response(const char* msg_req_param, ::CORBA::Long& err_flg)
+{
+ _0RL_cd_00d6793dc2c2a80c_a0000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_b0000000, "send_message_and_wait_response", 31);
+ _call_desc.arg_0 = msg_req_param;
+
+ _invoke(_call_desc);
+ err_flg = _call_desc.arg_1;
+ return _call_desc.result._retn();
+
+
+}
+// Proxy call descriptor class. Mangled signature:
+// _clong_i_cplpbus__orb_mDataItemSequence_o_cplpbus__orb_mDataItemSequence
+class _0RL_cd_00d6793dc2c2a80c_c0000000
+ : public omniCallDescriptor
+{
+public:
+ inline _0RL_cd_00d6793dc2c2a80c_c0000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):
+ omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)
+ {
+
+ }
+
+ void marshalArguments(cdrStream&);
+ void unmarshalArguments(cdrStream&);
+
+ void unmarshalReturnedValues(cdrStream&);
+ void marshalReturnedValues(cdrStream&);
+
+
+ static const char* const _user_exns[];
+
+ plpbus_orb::DataItemSequence_var arg_0_;
+ const plpbus_orb::DataItemSequence* arg_0;
+ plpbus_orb::DataItemSequence_var arg_1;
+ ::CORBA::Long result;
+};
+
+void _0RL_cd_00d6793dc2c2a80c_c0000000::marshalArguments(cdrStream& _n)
+{
+ (const plpbus_orb::DataItemSequence&) *arg_0 >>= _n;
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_c0000000::unmarshalArguments(cdrStream& _n)
+{
+ arg_0_ = new plpbus_orb::DataItemSequence;
+ (plpbus_orb::DataItemSequence&)arg_0_ <<= _n;
+ arg_0 = &arg_0_.in();
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_c0000000::marshalReturnedValues(cdrStream& _n)
+{
+ result >>= _n;
+ (const plpbus_orb::DataItemSequence&) arg_1 >>= _n;
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_c0000000::unmarshalReturnedValues(cdrStream& _n)
+{
+ (::CORBA::Long&)result <<= _n;
+ arg_1 = new plpbus_orb::DataItemSequence;
+ (plpbus_orb::DataItemSequence&)arg_1 <<= _n;
+
+}
+
+const char* const _0RL_cd_00d6793dc2c2a80c_c0000000::_user_exns[] = {
+ 0
+};
+
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_d0000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_c0000000* tcd = (_0RL_cd_00d6793dc2c2a80c_c0000000*)cd;
+ plpbus_orb::_impl_OrbServer* impl = (plpbus_orb::_impl_OrbServer*) svnt->_ptrToInterface(plpbus_orb::OrbServer::_PD_repoId);
+ tcd->result = impl->send_dataitem_message_and_wait_response(*tcd->arg_0, tcd->arg_1.out());
+
+
+}
+
+::CORBA::Long plpbus_orb::_objref_OrbServer::send_dataitem_message_and_wait_response(const ::plpbus_orb::DataItemSequence& req_seq_param, ::plpbus_orb::DataItemSequence_out rsp_seq_param)
+{
+ _0RL_cd_00d6793dc2c2a80c_c0000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_d0000000, "send_dataitem_message_and_wait_response", 40);
+ _call_desc.arg_0 = &(::plpbus_orb::DataItemSequence&) req_seq_param;
+
+ _invoke(_call_desc);
+ rsp_seq_param = _call_desc.arg_1._retn();
+ return _call_desc.result;
+
+
+}
+// Proxy call descriptor class. Mangled signature:
+// void_i_cplpbus__orb_mOrbClient_i_cstring_i_cunsigned_pshort
+class _0RL_cd_00d6793dc2c2a80c_e0000000
+ : public omniCallDescriptor
+{
+public:
+ inline _0RL_cd_00d6793dc2c2a80c_e0000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):
+ omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)
+ {
+
+ }
+
+ void marshalArguments(cdrStream&);
+ void unmarshalArguments(cdrStream&);
+
+
+
+ static const char* const _user_exns[];
+
+ plpbus_orb::OrbClient_var arg_0_;
+ plpbus_orb::OrbClient_ptr arg_0;
+ ::CORBA::String_var arg_1_;
+ const char* arg_1;
+ ::CORBA::UShort arg_2;
+};
+
+void _0RL_cd_00d6793dc2c2a80c_e0000000::marshalArguments(cdrStream& _n)
+{
+ plpbus_orb::OrbClient::_marshalObjRef(arg_0,_n);
+ _n.marshalString(arg_1,0);
+ arg_2 >>= _n;
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_e0000000::unmarshalArguments(cdrStream& _n)
+{
+ arg_0_ = plpbus_orb::OrbClient::_unmarshalObjRef(_n);
+ arg_0 = arg_0_.in();
+ arg_1_ = _n.unmarshalString(0);
+ arg_1 = arg_1_.in();
+ (::CORBA::UShort&)arg_2 <<= _n;
+
+}
+
+const char* const _0RL_cd_00d6793dc2c2a80c_e0000000::_user_exns[] = {
+ 0
+};
+
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_f0000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_e0000000* tcd = (_0RL_cd_00d6793dc2c2a80c_e0000000*)cd;
+ plpbus_orb::_impl_OrbServer* impl = (plpbus_orb::_impl_OrbServer*) svnt->_ptrToInterface(plpbus_orb::OrbServer::_PD_repoId);
+ impl->add_event_listener(tcd->arg_0, tcd->arg_1, tcd->arg_2);
+
+
+}
+
+void plpbus_orb::_objref_OrbServer::add_event_listener(::plpbus_orb::OrbClient_ptr callback_client_param, const char* msg_param, ::CORBA::UShort period_secs)
+{
+ _0RL_cd_00d6793dc2c2a80c_e0000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_f0000000, "add_event_listener", 19);
+ _call_desc.arg_0 = callback_client_param;
+ _call_desc.arg_1 = msg_param;
+ _call_desc.arg_2 = period_secs;
+
+ _invoke(_call_desc);
+
+
+
+}
+// Proxy call descriptor class. Mangled signature:
+// void
+class _0RL_cd_00d6793dc2c2a80c_01000000
+ : public omniCallDescriptor
+{
+public:
+ inline _0RL_cd_00d6793dc2c2a80c_01000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):
+ omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)
+ {
+
+ }
+
+
+
+
+ static const char* const _user_exns[];
+
+
+};
+
+const char* const _0RL_cd_00d6793dc2c2a80c_01000000::_user_exns[] = {
+ 0
+};
+
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_11000000(omniCallDescriptor*, omniServant* svnt)
+{
+
+ plpbus_orb::_impl_OrbServer* impl = (plpbus_orb::_impl_OrbServer*) svnt->_ptrToInterface(plpbus_orb::OrbServer::_PD_repoId);
+ impl->shutdown();
+
+
+}
+
+void plpbus_orb::_objref_OrbServer::shutdown()
+{
+ _0RL_cd_00d6793dc2c2a80c_01000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_11000000, "shutdown", 9);
+
+
+ _invoke(_call_desc);
+
+
+
+}
+plpbus_orb::_pof_OrbServer::~_pof_OrbServer() {}
+
+
+omniObjRef*
+plpbus_orb::_pof_OrbServer::newObjRef(omniIOR* ior, omniIdentity* id)
+{
+ return new ::plpbus_orb::_objref_OrbServer(ior, id);
+}
+
+
+::CORBA::Boolean
+plpbus_orb::_pof_OrbServer::is_a(const char* id) const
+{
+ if( omni::ptrStrMatch(id, ::plpbus_orb::OrbServer::_PD_repoId) )
+ return 1;
+
+ return 0;
+}
+
+const plpbus_orb::_pof_OrbServer _the_pof_plpbus__orb_mOrbServer;
+
+plpbus_orb::_impl_OrbServer::~_impl_OrbServer() {}
+
+
+::CORBA::Boolean
+plpbus_orb::_impl_OrbServer::_dispatch(omniCallHandle& _handle)
+{
+ const char* op = _handle.operation_name();
+
+ if( omni::strMatch(op, "send_message_and_request_response") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_60000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_70000000, "send_message_and_request_response", 34, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+ if( omni::strMatch(op, "send_dataitem_message_and_request_response") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_80000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_90000000, "send_dataitem_message_and_request_response", 43, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+ if( omni::strMatch(op, "send_message_and_wait_response") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_a0000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_b0000000, "send_message_and_wait_response", 31, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+ if( omni::strMatch(op, "send_dataitem_message_and_wait_response") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_c0000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_d0000000, "send_dataitem_message_and_wait_response", 40, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+ if( omni::strMatch(op, "add_event_listener") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_e0000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_f0000000, "add_event_listener", 19, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+ if( omni::strMatch(op, "shutdown") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_01000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_11000000, "shutdown", 9, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+
+ return 0;
+}
+
+void*
+plpbus_orb::_impl_OrbServer::_ptrToInterface(const char* id)
+{
+ if( id == ::plpbus_orb::OrbServer::_PD_repoId )
+ return (::plpbus_orb::_impl_OrbServer*) this;
+
+ if( id == ::CORBA::Object::_PD_repoId )
+ return (void*) 1;
+
+ if( omni::strMatch(id, ::plpbus_orb::OrbServer::_PD_repoId) )
+ return (::plpbus_orb::_impl_OrbServer*) this;
+
+ if( omni::strMatch(id, ::CORBA::Object::_PD_repoId) )
+ return (void*) 1;
+ return 0;
+}
+
+const char*
+plpbus_orb::_impl_OrbServer::_mostDerivedRepoId()
+{
+ return ::plpbus_orb::OrbServer::_PD_repoId;
+}
+
+POA_plpbus_orb::OrbClient::~OrbClient() {}
+
+POA_plpbus_orb::OrbServer::~OrbServer() {}
+
--- /dev/null
+/*
+ * BusClient.cc
+ *
+ * Created on: Jun 7, 2010
+ * Author: lamikr
+ */
+
+#include "BusClient.hh"
+#include "BusMessageInternal.hh"
+
+using namespace std;
+using namespace plpbus;
+
+class OrbClientImpl : public virtual POA_plpbus_orb::OrbClient
+{
+ private:
+ IClientListener *listener;
+ public:
+ OrbClientImpl(IClientListener *listener_param) {
+ listener = listener_param;
+ }
+ virtual ~OrbClientImpl() {}
+
+ virtual void receive_event_message(const char *event_param) {
+ if (listener != NULL) {
+ listener->event_received(event_param);
+ }
+ }
+
+ virtual void receive_event_dataitem_sequence(const ::plpbus_orb::DataItemSequence& event_param) {
+ BusMessageInternal *bus_msg;
+
+ if (listener != NULL) {
+ bus_msg = new BusMessageInternal(event_param);
+ listener->event_received(bus_msg);
+ }
+ }
+
+ virtual void receive_response_message(const char *msg_rsp_param) {
+ if (listener != NULL) {
+ listener->response_received(msg_rsp_param);
+ }
+ }
+
+ virtual void receive_response_dataitem_sequence(const ::plpbus_orb::DataItemSequence& msg_rsp_param) {
+ BusMessageInternal *bus_msg;
+
+ if (listener != NULL) {
+ bus_msg = new BusMessageInternal(msg_rsp_param);
+ listener->response_received(bus_msg);
+ }
+ }
+};
+
+BusClient::BusClient()
+{
+ cout << "created" << endl;
+ _orb = NULL;
+ _poa = NULL;
+}
+
+BusClient::~BusClient()
+{
+ if (_orb != NULL) {
+ _orb->destroy();
+ _orb = NULL;
+ }
+ cout << "destroyed" << endl;
+}
+
+int BusClient::init(const char *server_name) {
+ int argc;
+ char **argv;
+ CORBA::Object_var server_obj;
+
+ argc = 0;
+ argv = NULL;
+ cout << "init() started" << endl;
+ _orb = CORBA::ORB_init(argc, argv);
+ if (_orb != NULL) {
+ cout << "ORB_init() done, finding server: " << server_name << endl;
+ server_obj = find_server_object_by_name(_orb,
+ CONST_CONTEXT_NAME__PLPBUS,
+ CONST_CONTEXT_KIND__PLPBUS,
+ server_name,
+ CONST_CONTEXT_NAME__PLPBUS);
+ if (CORBA::is_nil(server_obj) == false) {
+ _server = plpbus_orb::OrbServer::_narrow(server_obj);
+ cout << "Server object found: " << server_name << endl;
+ }
+ else {
+ cerr << "Could not find server object: " << server_name << endl;
+ }
+ }
+ return 0;
+}
+
+int BusClient::add_client_listener(IClientListener *listener_param) {
+ cout << "add_client_listener() started" << endl;
+ if (_poa == NULL) {
+ OrbClientImpl *client_cb;
+ PortableServer::ObjectId_var oid;
+
+ cout << "register_callback() 1" << endl;
+ _poa = create_poa(_orb);
+ client_cb = new OrbClientImpl(listener_param);
+ oid = _poa->activate_object(client_cb);
+ _client = client_cb->_this();
+ client_cb->_remove_ref();
+ _server->add_event_listener(_client, "event_message", CONST_DEFAULT_EVENT_INTERVAL);
+ }
+ cout << "add_client_listener() done" << endl;
+ return 0;
+}
+
+int BusClient::send_message_and_request_response(const char *msg_req_param) {
+ _server->send_message_and_request_response(_client, msg_req_param);
+ return 0;
+}
+
+int BusClient::send_message_and_wait_response(const char *msg_req_param, char **msg_rsp_param) {
+ CORBA::Long ret_val;
+
+ *msg_rsp_param = _server->send_message_and_wait_response(msg_req_param, ret_val);
+ return ret_val;
+}
+
+int BusClient::send_message_and_request_response(BusMessage *msg_req_param) {
+ _server->send_dataitem_message_and_request_response(_client, msg_req_param->_dataItemSeq);
+ return 0;
+}
+
+int BusClient::send_message_and_wait_response(BusMessage *msg_req_param, BusMessage **msg_rsp_param) {
+ plpbus_orb::DataItemSequence *seq_rsp;
+
+ seq_rsp = NULL;
+ _server->send_dataitem_message_and_wait_response(msg_req_param->_dataItemSeq, seq_rsp);
+}
+
+void BusClient::request_shutdown() {
+ if (CORBA::is_nil(_server) == false) {
+ _server->shutdown();
+ }
+}
+
+PortableServer::POA_var BusClient::create_poa(CORBA::ORB_var orb) {
+ PortableServer::POA_var ret_val;
+ CORBA::Object_var poa_obj;
+ CORBA::PolicyList policy_list;
+ CORBA::Any policyVal;
+ PortableServer::POAManager_var poa_man;
+ PortableServer::POA_var rootpoa;
+
+ ret_val = NULL;
+ poa_obj = orb->resolve_initial_references(CONST_ROOT_POA_NAME);
+ if (poa_obj != NULL) {
+ rootpoa = PortableServer::POA::_narrow(poa_obj);
+ if (rootpoa != NULL) {
+ poa_man = rootpoa->the_POAManager();
+ if (poa_man != NULL) {
+ poa_man->activate();
+ // bidirectional policy
+ policy_list.length(1);
+ policyVal <<= BiDirPolicy::BOTH;
+ policy_list[0] = orb->create_policy(BiDirPolicy::BIDIRECTIONAL_POLICY_TYPE, policyVal);
+ ret_val = rootpoa->create_POA(CONST_ROOT_POA_BIDIR_POLICY_NAME,
+ poa_man,
+ policy_list);
+ }
+ }
+ }
+ else {
+ cerr << "Failed to create RootPOA." << endl;
+ }
+ return ret_val;
+}
+
+CosNaming::NamingContext_var BusClient::get_name_service_context(CORBA::ORB_var orb_param) {
+ CORBA::Object_var ns_obj;
+ CosNaming::NamingContext_var ret_val;
+
+ ret_val = NULL;
+ try {
+ ns_obj = orb_param->resolve_initial_references(CONST_NAME_SERVICE_NAME);
+ if (CORBA::is_nil(ns_obj) == false) {
+ // narrow the object reference
+ ret_val = CosNaming::NamingContext::_narrow(ns_obj);
+ }
+ }
+ catch (CORBA::ORB::InvalidName&) {
+ // This should not happen!
+ cerr << "Could not find name service." << endl;
+ }
+ catch(CORBA::TRANSIENT& ex) {
+ cerr << "Could not find name service, verify that name service is running. " << endl;
+ }
+ catch (CORBA::NO_RESOURCES&) {
+ cerr << "Could not find name service, verify that name service is running. " << endl;
+ }
+ catch(CORBA::SystemException& ex) {
+ cerr << "Could not find name service, unknown reason. " << endl;
+ }
+ return ret_val;
+}
+
+CORBA::Object_var BusClient::find_server_object_by_name(CORBA::ORB_var orb_param,
+ const char *leaf_name_param,
+ const char *leaf_kind_param,
+ const char *service_name_param,
+ const char *service_kind_param)
+{
+ CORBA::Object_var ret_val;
+ CosNaming::NamingContext_var ns_root_context;
+ CosNaming::Name service_data;
+
+ ret_val = CORBA::Object::_nil();
+ ns_root_context = get_name_service_context(orb_param);
+ if (CORBA::is_nil(ns_root_context) == false) {
+ // define search criteria
+ service_data.length(2);
+ service_data[0].id = leaf_name_param;
+ service_data[0].kind = leaf_kind_param;
+ service_data[1].id = service_name_param;
+ service_data[1].kind = service_kind_param;
+ try {
+ ret_val = ns_root_context->resolve(service_data);
+ }
+ catch(CosNaming::NamingContext::NotFound& ex) {
+ cerr << "Could not find service from the name server. " << endl;
+ }
+ catch(CORBA::TRANSIENT& ex) {
+ cerr << "Could not find service from the name server. " << endl;
+ }
+ catch(CORBA::SystemException& ex) {
+ cerr << "Could not find service from the name server, unknown error." << endl;
+ }
+ }
+ else {
+ cerr << "Could not find naming service. " << endl;
+ }
+ return ret_val;
+}
--- /dev/null
+/*
+ * BusClient.hh
+ *
+ * Created on: Jun 7, 2010
+ * Author: lamikr
+ */
+
+#ifndef PLPBUS_CLIENT_HH_
+#define PLPBUS_CLIENT_HH_
+
+#include <iostream>
+#include <omniORB4/CORBA.h>
+
+#include "RequestResponseBus.hh"
+#include "IClientListener.hh"
+#include "ClientServerCommon.hh"
+#include "BusMessage.hh"
+
+namespace plpbus {
+ class BusClient {
+ public:
+ BusClient();
+ virtual ~BusClient();
+ virtual int init(const char *server_name);
+ virtual int add_client_listener(IClientListener *listener_param);
+ virtual int send_message_and_request_response(const char *msg_req_param);
+ virtual int send_message_and_wait_response(const char *msg_req_param, char **msg_rsp_param);
+ virtual int send_message_and_request_response(BusMessage *msg_req_param);
+ virtual int send_message_and_wait_response(BusMessage *msg_req_param, BusMessage **msg_rsp_param);
+ virtual void request_shutdown();
+ private:
+ PortableServer::POA_var _poa;
+ CORBA::ORB_var _orb;
+ plpbus_orb::OrbServer_var _server;
+ plpbus_orb::OrbClient_var _client;
+
+ PortableServer::POA_var create_poa(CORBA::ORB_var orb);
+ CosNaming::NamingContext_var get_name_service_context(CORBA::ORB_var orb_param);
+ /**
+ * Finds server object by it's name by using following keywords:
+ * name[0].id = (const char *)CONST_LEAF_CONTEXT_NAME__PLPBUS;
+ * name[0].kind = (const char *)CONST_CONTEXT_KIND__PLPBUS;
+ * name[1].id = server_name;
+ * name[1].kind = (const char *)CONST_CONTEXT_KIND__PLPBUS;
+ */
+ CORBA::Object_var find_server_object_by_name(CORBA::ORB_var orb,
+ const char *leaf_name_param,
+ const char *leaf_kind_param,
+ const char *service_name_param,
+ const char *service_kind_param);
+ };
+}
+
+#endif /* PLPBUS_CLIENT_HH_ */
--- /dev/null
+/*
+ * BusMessage.cpp
+ *
+ * Created on: Aug 17, 2010
+ * Author: lamikr
+ */
+
+#include "BusMessage.hh"
+
+using namespace std;
+using namespace plpbus_orb;
+using namespace plpbus;
+using namespace CORBA;
+
+BusMessage::BusMessage()
+{
+ _dataItemSeq.length(0);
+
+}
+
+BusMessage::BusMessage(const char *name_param, const char *value_param)
+{
+ DataItem *item;
+
+ if (name_param != NULL) {
+ item = new DataItem();
+ item->name = strdup(name_param);
+ item->value <<= strdup(value_param);
+
+ _dataItemSeq.length(1);
+ _dataItemSeq[0] = *item;
+ }
+ else {
+ _dataItemSeq.length(0);
+ }
+
+}
+
+BusMessage::~BusMessage()
+{
+ // TODO Auto-generated destructor stub
+}
+
+int BusMessage::add_string_parameter(const char *name_param, const char *value_param)
+{
+ long length;
+ int ret_val;
+ DataItem *item;
+
+ ret_val = 0;
+ if (name_param != NULL) {
+ length = _dataItemSeq.length();
+ item = new DataItem();
+ item->name = strdup(name_param);
+ if (value_param != NULL) {
+ item->value <<= strdup(value_param);
+ _dataItemSeq.length(length + 1);
+ _dataItemSeq[length] = *item;
+ }
+ }
+ else {
+ _dataItemSeq.length(0);
+ ret_val = -1;
+ }
+ return ret_val;
+}
+
+int BusMessage::add_long_parameter(const char *name_param, long value_param)
+{
+ long length;
+ int ret_val;
+ DataItem *item;
+
+ ret_val = 0;
+ if (name_param != NULL) {
+ length = _dataItemSeq.length();
+ item = new DataItem();
+ item->name = strdup(name_param);
+ item->value <<= value_param;
+
+ _dataItemSeq.length(length + 1);
+ _dataItemSeq[length] = *item;
+ }
+ else {
+ _dataItemSeq.length(0);
+ ret_val = -1;
+ }
+ return ret_val;
+}
+
+int BusMessage::add_int_parameter(const char *name_param, int value_param)
+{
+ long length;
+ int ret_val;
+ DataItem *item;
+
+ ret_val = 0;
+ if (name_param != NULL) {
+ length = _dataItemSeq.length();
+ item = new DataItem();
+ item->name = strdup(name_param);
+ item->value <<= (long)value_param;
+
+ _dataItemSeq.length(length + 1);
+ _dataItemSeq[length] = *item;
+ }
+ else {
+ _dataItemSeq.length(0);
+ ret_val = -1;
+ }
+ return ret_val;
+}
+
+int BusMessage::add_double_parameter(const char *name_param, double value_param)
+{
+ long length;
+ int ret_val;
+ DataItem *item;
+
+ ret_val = 0;
+ if (name_param != NULL) {
+ length = _dataItemSeq.length();
+ item = new DataItem();
+ item->name = strdup(name_param);
+ item->value <<= (long)value_param;
+
+ _dataItemSeq.length(length + 1);
+ _dataItemSeq[length] = *item;
+ }
+ else {
+ _dataItemSeq.length(0);
+ ret_val = -1;
+ }
+ return ret_val;
+}
+
+int BusMessage::add_float_parameter(const char *name_param, float value_param)
+{
+ long length;
+ int ret_val;
+ DataItem *item;
+
+ ret_val = 0;
+ if (name_param != NULL) {
+ length = _dataItemSeq.length();
+ item = new DataItem();
+ item->name = strdup(name_param);
+ item->value <<= (long)value_param;
+
+ _dataItemSeq.length(length + 1);
+ _dataItemSeq[length] = *item;
+ }
+ else {
+ _dataItemSeq.length(0);
+ ret_val = -1;
+ }
+ return ret_val;
+}
+
+void BusMessage::printout_dataitem(long index, plpbus_orb::DataItem *item) {
+ CORBA::TCKind kind;
+
+ if (item != NULL) {
+ if (item->name != NULL) {
+ kind = item->value.type()->kind();
+ switch(kind) {
+ case tk_string:
+ {
+ const char *val;
+
+ item->value >>= val;
+ cout << " [" << index << "] name: " << item->name << ", value: " << val << endl;
+ }
+ break;
+ case tk_long:
+ {
+ long val;
+ item->value >>= val;
+ cout << " [" << index << "] name: " << item->name << ", value: " << val << endl;
+ //val_str = strdup("long");
+ }
+ break;
+ case tk_double:
+ {
+ double val;
+ item->value >>= val;
+ cout << " [" << index << "] name: " << item->name << ", value: " << val << endl;
+ //val_str = strdup("double");
+ }
+ break;
+ case tk_float:
+ {
+ float val;
+ item->value >>= val;
+ cout << " [" << index << "] name: " << item->name << ", value: " << val << endl;
+ //val_str = strdup("float");
+ }
+ break;
+ default:
+ cout << " [" << index << "] name: " << item->name << ", value unknown. " << endl;
+ }
+ }
+ else {
+ cout << " [" << index << "] Invalid dataItem, name or value NULL." << endl;
+ }
+ }
+ else {
+ cout << " [" << index << "] dataItem NULL." << endl;
+ }
+}
+
+void BusMessage::printout() {
+ long int count;
+ DataItem item;
+
+ count = _dataItemSeq.length();
+ cout << "BusMessage.printout(): parameter count: " << count << endl;
+ for (long ii = 0; ii < count; ii++) {
+ item = _dataItemSeq[ii];
+ printout_dataitem(ii, &item);
+ }
+ cout << "BusMessage.printout() done" << endl;
+}
--- /dev/null
+/*
+ * BusMessage.h
+ *
+ * Created on: Aug 17, 2010
+ * Author: lamikr
+ */
+
+#ifndef BUSMESSAGE_H_
+#define BUSMESSAGE_H_
+
+#include <iostream>
+#include <omniORB4/CORBA.h>
+
+#include "RequestResponseBus.hh"
+
+namespace plpbus {
+ class BusMessage
+ {
+ public:
+ plpbus_orb::DataItemSequence _dataItemSeq;
+
+ BusMessage();
+ BusMessage(const char *name_param, const char *string_value_param);
+ virtual ~BusMessage();
+ int add_string_parameter(const char *name_param, const char *string_value_param);
+ int add_long_parameter(const char *name_param, long value_param);
+ int add_int_parameter(const char *name_param, int value_param);
+ int add_double_parameter(const char *name_param, double value_param);
+ int add_float_parameter(const char *name_param, float value_param);
+ void printout();
+ private:
+ void printout_dataitem(long index, plpbus_orb::DataItem *item);
+ };
+}
+
+#endif /* BUSMESSAGE_H_ */
--- /dev/null
+/*
+ * BusMessageInternal.cc
+ *
+ * Created on: Aug 18, 2010
+ * Author: lamikr
+ */
+
+#include "BusMessageInternal.hh"
+
+namespace plpbus {
+ BusMessageInternal::BusMessageInternal(plpbus_orb::DataItemSequence seq_param) {
+ _dataItemSeq = seq_param;
+ }
+
+ BusMessageInternal::~BusMessageInternal()
+ {
+ // TODO Auto-generated destructor stub
+ }
+}
--- /dev/null
+/*
+ * BusMessageInternal.hh
+ *
+ * Created on: Aug 18, 2010
+ * Author: lamikr
+ */
+
+#ifndef BUSMESSAGEINTERNAL_HH_
+#define BUSMESSAGEINTERNAL_HH_
+
+#include "BusMessage.hh"
+
+namespace plpbus {
+ class BusMessageInternal: public plpbus::BusMessage
+ {
+ public:
+ BusMessageInternal(plpbus_orb::DataItemSequence seq_param);
+ virtual ~BusMessageInternal();
+ };
+}
+
+#endif /* BUSMESSAGEINTERNAL_HH_ */
--- /dev/null
+#include "BusServer.hh"
+
+using namespace std;
+using namespace plpbus;
+
+BusServer::BusServer()
+{
+ orbServer = new OrbServerImpl();
+}
+
+BusServer::~BusServer()
+{
+ cout << "BusServer() destroyed." << endl;
+}
+
+int BusServer::init() {
+ int retVal;
+
+ retVal = 0;
+ orbServer->init();
+ return retVal;
+}
+
+int BusServer::launch(const char *server_name)
+{
+ int retVal;
+
+ retVal = orbServer->launch(server_name);
+ return retVal;
+}
+
+int BusServer::add_server_listener(IServerListener *listener_param)
+{
+ int retVal;
+
+ retVal = orbServer->add_server_listener(listener_param);
+ return retVal;
+}
+
+void BusServer::shutdown()
+{
+ orbServer->shutdown();
+}
--- /dev/null
+#ifndef BUSSERVER_HH_
+#define BUSSERVER_HH_
+
+#include <iostream>
+#include <omniORB4/CORBA.h>
+
+#include "RequestResponseBus.hh"
+#include "IServerListener.hh"
+#include "OrbServerImpl.hh"
+
+namespace plpbus {
+ class BusServer {
+ public:
+ BusServer();
+ virtual ~BusServer();
+ virtual int init();
+ virtual int launch(const char *server_name);
+ virtual int add_server_listener(IServerListener *listener_param);
+ virtual void shutdown();
+ private:
+ OrbServerImpl *orbServer;
+ };
+}
+
+#endif // BUSSERVER_HH_
--- /dev/null
+/*
+ * ClientServerCommon.cpp
+ *
+ * Created on: Sep 7, 2010
+ * Author: lamikr
+ */
+
+#include "ClientServerCommon.hh"
+
+using namespace plpbus;
+
+ClientServerCommon::ClientServerCommon()
+{
+ // TODO Auto-generated constructor stub
+
+}
+
+ClientServerCommon::~ClientServerCommon()
+{
+ // TODO Auto-generated destructor stub
+}
--- /dev/null
+/*
+ * ClientServerCommon.h
+ *
+ * Created on: Sep 7, 2010
+ * Author: lamikr
+ */
+
+#ifndef CLIENTSERVERCOMMON_H_
+#define CLIENTSERVERCOMMON_H_
+
+#include <iostream>
+#include <omniORB4/CORBA.h>
+
+#define CONST_NAME_SERVICE_NAME "NameService"
+#define CONST_CONTEXT_NAME__PLPBUS "plpbus"
+#define CONST_CONTEXT_KIND__PLPBUS "plpbus"
+#define CONST_ROOT_POA_NAME "RootPOA"
+#define CONST_ROOT_POA_BIDIR_POLICY_NAME "bidir"
+#define CONST_DEFAULT_EVENT_INTERVAL 5
+
+namespace plpbus {
+ class ClientServerCommon
+ {
+ public:
+ ClientServerCommon();
+ virtual ~ClientServerCommon();
+ };
+}
+
+#endif /* CLIENTSERVERCOMMON_H_ */
--- /dev/null
+/*
+ * plpbus_server_callback.hh
+ *
+ * Created on: Jun 10, 2010
+ * Author: lamikr
+ */
+
+#ifndef CLIENTLISTENER_HH_
+#define CLIENTLISTENER_HH_
+
+#include "BusMessage.hh"
+
+namespace plpbus {
+ class IClientListener {
+ public:
+ virtual int response_received(const char *msg_rsp_param) = 0;
+ virtual int response_received(const BusMessage *msg_rsp_param) = 0;
+ virtual int event_received(const char *event_param) = 0;
+ virtual int event_received(const BusMessage *event_param) = 0;
+ protected:
+ IClientListener() {};
+ virtual ~IClientListener() {};
+ };
+}
+
+#endif /* CLIENTLISTENER_HH_ */
--- /dev/null
+/*
+ * ServerCallbackInterface.hh
+ *
+ * Created on: Jun 16, 2010
+ * Author: lamikr
+ */
+
+#ifndef ISERVERLISTENER_HH_
+#define ISERVERLISTENER_HH_
+
+#include "BusMessage.hh"
+
+namespace plpbus {
+ class IServerListener {
+ public:
+ virtual int request_received(const char *msg_in, char **msg_out) = 0;
+ virtual int request_received(const BusMessage *msg_req, BusMessage **msg_rsp) = 0;
+ protected:
+ IServerListener() {};
+ virtual ~IServerListener() {};
+ };
+}
+
+#endif /* ISERVERLISTENER_HH_ */
--- /dev/null
+/*
+ * OrbServerImpl.cc
+ *
+ * Created on: Aug 11, 2010
+ * Author: lamikr
+ */
+
+#include "ServerEventThread.hh"
+#include "OrbServerImpl.hh"
+#include "ClientServerCommon.hh"
+#include "BusMessageInternal.hh"
+
+using namespace std;
+using namespace plpbus;
+using namespace plpbus_orb;
+
+static omni_mutex server_thread_mutex;
+static omni_condition server_thread_shutdown_signal(&server_thread_mutex);
+
+OrbServerImpl::OrbServerImpl()
+{
+ _orb = NULL;
+ _poa = NULL;
+ _server_thread_count = 0;
+ _shutdown_pending = 0;
+ _listener = NULL;
+}
+
+OrbServerImpl::~OrbServerImpl()
+{
+ cout << "OrbServerImpl destroyed." << endl;
+}
+
+void OrbServerImpl::send_message_and_request_response(OrbClient_ptr response_listener_param,
+ const char* msg_req)
+{
+ char *msg_rsp;
+
+ msg_rsp = NULL;
+ if (CORBA::is_nil(response_listener_param) == false) {
+ if (_listener != NULL) {
+ cout << "send_message_and_request_response(): " << msg_req << ", server_callback != NULL" << endl;
+ _listener->request_received(msg_req, &msg_rsp);
+ response_listener_param->receive_response_message(msg_rsp);
+ }
+ else {
+ cout << "send_message_and_request_response() error! " << msg_req << ", server_callback == NULL" << endl;
+ }
+ }
+ else {
+ cerr << "invalid callback object received.\n";
+ }
+}
+
+char *OrbServerImpl::send_message_and_wait_response(const char* msg_req_param, ::CORBA::Long& err_flg) {
+ char *msg_rsp;
+ char *ret_val;
+
+ err_flg = 0;
+ msg_rsp = NULL;
+ if (_listener != NULL) {
+ cout << "send_message_and_wait_response(): " << msg_req_param << ", server_callback != NULL" << endl;
+ _listener->request_received(msg_req_param, &msg_rsp);
+ }
+ else {
+ cout << "send_message_and_wait_response() error! " << msg_req_param << ", server_callback == NULL" << endl;
+ msg_rsp = strdup(msg_req_param);
+ err_flg = -1;
+ }
+ ret_val = CORBA::string_dup(msg_rsp);
+ return ret_val;
+}
+
+void OrbServerImpl::send_dataitem_message_and_request_response(OrbClient_ptr response_listener_param,
+ const ::DataItemSequence& msg_req_param) {
+ BusMessage *msg_req;
+ BusMessage *msg_rsp;
+
+ if (CORBA::is_nil(response_listener_param) == false) {
+ if (_listener != NULL) {
+ msg_req = new BusMessageInternal(msg_req_param);
+ cout << "send_dataitem_message_and_request_response(), server_callback != NULL" << endl;
+ cout << "msg_req:" << endl;
+ msg_req->printout();
+ msg_rsp = NULL;
+ _listener->request_received(msg_req, &msg_rsp);
+ cout << "msg_rsp length:" << msg_rsp->_dataItemSeq.length() << endl;
+ msg_rsp->printout();
+ response_listener_param->receive_response_dataitem_sequence(msg_rsp->_dataItemSeq);
+ }
+ else {
+ cout << "send_dataitem_message_and_request_response() error, server_callback == NULL" << endl;
+ }
+ }
+}
+
+CORBA::Long OrbServerImpl::send_dataitem_message_and_wait_response(const DataItemSequence& req_seq_param,
+ DataItemSequence_out rsp_seq_param) {
+ BusMessage *msg_req;
+ BusMessage *msg_rsp;
+
+ msg_req = new BusMessageInternal(req_seq_param);
+ msg_rsp = NULL;
+ _listener->request_received(msg_req, &msg_rsp);
+ //rsp_seq_param = new DataItemSequence_out(msg_rsp._dataItemSeq);
+ rsp_seq_param._data = &(msg_rsp->_dataItemSeq);
+
+ return 0;
+}
+
+void OrbServerImpl::add_event_listener(OrbClient_ptr client_param,
+ const char *msg,
+ CORBA::UShort period_secs)
+{
+ ServerEventThread *srvr_thread;
+
+ if (CORBA::is_nil(client_param) == false) {
+ cout << "add_event_listener()" << endl;
+ server_thread_mutex.lock();
+ _server_thread_count++;
+ server_thread_mutex.unlock();
+ srvr_thread = new ServerEventThread(client_param, msg, period_secs, this);
+ srvr_thread->start();
+ }
+ else {
+ cerr << "Failed to add event listener, listener NULL.\n";
+ }
+}
+
+void OrbServerImpl::shutdown()
+{
+ omni_mutex_lock sync(server_thread_mutex);
+ if (is_shutdown_pending() == 0) {
+ cout << "shutdown request received!" << endl;
+ // Tell the servers to exit, and wait for them to do so.
+ _shutdown_pending = 1;
+ while(_server_thread_count > 0) {
+ server_thread_shutdown_signal.wait();
+ }
+ // Shutdown the ORB (but do not wait for completion). This also
+ // causes the main thread to unblock from CORBA::ORB::run().
+ _orb->shutdown(0);
+ }
+}
+
+int OrbServerImpl::init() {
+ int argc;
+ char **argv;
+ int retVal;
+
+ argc = -1;
+ argv = NULL;
+ retVal = 0;
+ _orb = CORBA::ORB_init(argc, argv);
+ if (_orb != NULL) {
+ _poa = create_poa(_orb);
+ retVal = 0;
+ }
+ else {
+ cout << "init() failed" << endl;
+ }
+ return retVal;
+}
+
+int OrbServerImpl::launch(const char *server_name)
+{
+ CORBA::Object_var server_ref;
+ PortableServer::ObjectId_var server_id;
+ bool ok_flg;
+ int ret_val;
+ CosNaming::NamingContext_var naming_context;
+
+ ret_val = -1;
+ POA_plpbus_orb::OrbServer_tie<OrbServerImpl> server_impl(this);
+ server_id = _poa->activate_object(&server_impl);
+ server_ref = server_impl._this();
+ //this->_remove_ref();
+ naming_context = get_service_naming_context(CONST_CONTEXT_NAME__PLPBUS, CONST_CONTEXT_KIND__PLPBUS);
+ if (naming_context != NULL) {
+ ok_flg = bind_naming_context_and_service(naming_context, server_ref, server_name, CONST_CONTEXT_KIND__PLPBUS);
+ if (ok_flg == true) {
+ cout << "Registered to naming service: " << server_name << endl;
+ _orb->run();
+ ret_val = 0;
+ }
+ else {
+ cout << "Failed to register to naming service: " << server_name << endl;
+ }
+ }
+ return ret_val;
+}
+
+PortableServer::POA_var OrbServerImpl::create_poa(CORBA::ORB_var orb) {
+ PortableServer::POA_var ret_val;
+ CORBA::Object_var poa_obj;
+ CORBA::PolicyList policy_list;
+ CORBA::Any policyVal;
+ PortableServer::POAManager_var poa_man;
+ PortableServer::POA_var rootpoa;
+
+ ret_val = NULL;
+ poa_obj = orb->resolve_initial_references(CONST_ROOT_POA_NAME);
+ if (poa_obj != NULL) {
+ rootpoa = PortableServer::POA::_narrow(poa_obj);
+ if (rootpoa != NULL) {
+ poa_man = rootpoa->the_POAManager();
+ if (poa_man != NULL) {
+ poa_man->activate();
+ // bidirectional policy
+ policy_list.length(1);
+ policyVal <<= BiDirPolicy::BOTH;
+ policy_list[0] = orb->create_policy(BiDirPolicy::BIDIRECTIONAL_POLICY_TYPE, policyVal);
+ ret_val = rootpoa->create_POA(CONST_ROOT_POA_BIDIR_POLICY_NAME,
+ poa_man,
+ policy_list);
+ }
+ }
+ }
+ else {
+ cerr << "Failed to create RootPOA." << endl;
+ }
+ return ret_val;
+}
+
+CosNaming::NamingContext_var OrbServerImpl::get_service_naming_context(const char *service_name_param,
+ const char *service_kind_param)
+{
+ CosNaming::NamingContext_var ret_val;
+ CosNaming::NamingContext_var ns_context;
+ CORBA::Object_var ns_obj;
+ CORBA::Object_var service_obj;
+ CosNaming::Name context_data;
+
+ ret_val = NULL;
+ try {
+ // get nameservice reference
+ ns_obj = _orb->resolve_initial_references(CONST_NAME_SERVICE_NAME);
+ // get nameservice context
+ ns_context = CosNaming::NamingContext::_narrow(ns_obj);
+ if (CORBA::is_nil(ns_context) == false) {
+ context_data.length(1);
+ context_data[0].id = service_name_param;
+ context_data[0].kind = service_kind_param;
+ try {
+ service_obj = ns_context->resolve(context_data);
+ if (CORBA::is_nil(service_obj)) {
+ // not found, try to bind the new context to name service
+ ret_val = ns_context->bind_new_context(context_data);
+ if (CORBA::is_nil(ret_val) ) {
+ cerr << "Failed to create new context to name service for " << service_name_param << "." << endl;
+ }
+ }
+ else {
+ ret_val = CosNaming::NamingContext::_narrow(service_obj);
+ if (CORBA::is_nil(ret_val) ) {
+ cerr << "Failed to get existing context from name service for " << service_name_param << ", narrowing failed." << endl;
+ }
+ }
+ }
+ catch(CosNaming::NamingContext::AlreadyBound& ex) {
+ cerr << "Could not get context from nameservice for " << service_name_param << ". Context with same name already existed."<< endl;
+ }
+ }
+ }
+ catch (CORBA::ORB::InvalidName&) {
+ // This should not happen!
+ cerr << "Could not get context from name service for " << service_name_param << ", name service does not exist." << endl;
+ }
+ catch(CORBA::TRANSIENT& ex) {
+ cerr << "Could not get context from name service for " << service_name_param << ", verify that name service is running. " << service_name_param << endl;
+ }
+ catch (CORBA::NO_RESOURCES&) {
+ cerr << "Could not get context from name service for " << service_name_param << ". Name service is not running or has configuration problem." << endl;
+ }
+ catch(CORBA::SystemException& ex) {
+ cerr << "Could not get context from name service for " << service_name_param << ", could not determine reason." << endl;
+ }
+ return ret_val;
+}
+
+bool OrbServerImpl::bind_naming_context_and_service(CosNaming::NamingContext_var service_context_param,
+ CORBA::Object_ptr service_ref_param,
+ const char *service_name_param,
+ const char *service_kind_param)
+{
+ bool retVal;
+ CosNaming::Name context_data;
+
+ retVal = false;
+ try {
+ context_data.length(1);
+ context_data[0].id = service_name_param;
+ context_data[0].kind = service_kind_param;
+ try {
+ service_context_param->bind(context_data, service_ref_param);
+ retVal = true;
+ }
+ catch(CosNaming::NamingContext::AlreadyBound& ex) {
+ /**
+ * service existed already for the naming context with similar description.
+ * Replace the existing one with a new one.
+ */
+ cout << "service " << service_name_param << " existed, replacing it." << endl;
+ service_context_param->rebind(context_data, service_ref_param);
+ retVal = true;
+ }
+ }
+ catch (CosNaming::NamingContext::InvalidName&) {
+ cerr << "Could not register service to name server, invalid service name." << endl;
+ }
+ catch (CosNaming::NamingContext::NotFound&) {
+ cerr << "Could not register service to name server, service object reference is invalid." << endl;
+ }
+ catch (CosNaming::NamingContext::CannotProceed&) {
+ // This should not happen!
+ cerr << "Could not register service to name server, unknown error." << endl;
+ }
+ catch(CORBA::SystemException& ex) {
+ cerr << "Could not register service to name server, unknown error." << endl;
+ }
+ return retVal;
+}
+
+int OrbServerImpl::add_server_listener(IServerListener *listener_param)
+{
+ int retVal;
+
+ retVal = 0;
+ cout << "register_request_received_callback() started" << endl;
+ _listener = listener_param;
+ cout << "register_callback() done" << endl;
+ return retVal;
+}
+
+int OrbServerImpl::is_shutdown_pending() {
+ return _shutdown_pending;
+}
+
+void OrbServerImpl::server_thread_closed() {
+ bool send_signal = false;
+
+ server_thread_mutex.lock();
+ _server_thread_count--;
+ if (_server_thread_count == 0) {
+ send_signal = true;
+ }
+ server_thread_mutex.unlock();
+ if (send_signal == true) {
+ server_thread_shutdown_signal.signal();
+ }
+}
--- /dev/null
+/*
+ * OrbServerImpl.hh
+ *
+ * Created on: Aug 11, 2010
+ * Author: lamikr
+ */
+
+#ifndef ORBSERVERIMPL_HH_
+#define ORBSERVERIMPL_HH_
+
+#include <iostream>
+#include <omniORB4/CORBA.h>
+
+#include "RequestResponseBus.hh"
+#include "IServerListener.hh"
+
+namespace plpbus {
+ class OrbServerImpl
+ {
+ public:
+ OrbServerImpl();
+ virtual ~OrbServerImpl();
+
+ virtual void send_message_and_request_response(plpbus_orb::OrbClient_ptr response_listener_param, const char* msg_req_param);
+ virtual void send_dataitem_message_and_request_response(plpbus_orb::OrbClient_ptr response_listener_param, const ::plpbus_orb::DataItemSequence& req_seq_param);
+ virtual char *send_message_and_wait_response(const char* msg_req_param, ::CORBA::Long& err_flg);
+ virtual CORBA::Long send_dataitem_message_and_wait_response(const ::plpbus_orb::DataItemSequence& req_seq_param, ::plpbus_orb::DataItemSequence_out rsp_seq_param);
+ virtual void add_event_listener(plpbus_orb::OrbClient_ptr client_param,
+ const char *msg,
+ CORBA::UShort period_secs);
+ virtual void shutdown();
+ virtual int init();
+ virtual int launch(const char *server_name);
+ virtual int is_shutdown_pending();
+ virtual void server_thread_closed();
+ virtual int add_server_listener(IServerListener *listener_param);
+ private:
+ PortableServer::POA_var _poa;
+ CORBA::ORB_var _orb;
+ IServerListener *_listener;
+ int _server_thread_count;
+ int _shutdown_pending;
+ virtual PortableServer::POA_var create_poa(CORBA::ORB_var orb);
+ /**
+ * Gets naming context from the name service. If the naming context does not yet exist, create it.
+ */
+ CosNaming::NamingContext_var get_service_naming_context(const char *leafcontext_name,
+ const char *leafcontext_kind);
+ /**
+ * Bind service to naming context.
+ * If service with same name has already been binded, replace the existing service with the new one.
+ */
+ bool bind_naming_context_and_service(CosNaming::NamingContext_var service_context_param,
+ CORBA::Object_ptr service_ref_param,
+ const char *service_name_param,
+ const char *service_kind_param);
+ };
+}
+
+#endif /* ORBSERVERIMPL_HH_ */
--- /dev/null
+// This file is generated by omniidl (C++ backend)- omniORB_4_1. Do not edit.
+#ifndef __RequestResponseBus_hh__
+#define __RequestResponseBus_hh__
+
+#ifndef __CORBA_H_EXTERNAL_GUARD__
+#include <omniORB4/CORBA.h>
+#endif
+
+#ifndef USE_stub_in_nt_dll
+# define USE_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+#endif
+#ifndef USE_core_stub_in_nt_dll
+# define USE_core_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+#endif
+#ifndef USE_dyn_stub_in_nt_dll
+# define USE_dyn_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+#endif
+
+
+
+
+
+
+#ifdef USE_stub_in_nt_dll
+# ifndef USE_core_stub_in_nt_dll
+# define USE_core_stub_in_nt_dll
+# endif
+# ifndef USE_dyn_stub_in_nt_dll
+# define USE_dyn_stub_in_nt_dll
+# endif
+#endif
+
+#ifdef _core_attr
+# error "A local CPP macro _core_attr has already been defined."
+#else
+# ifdef USE_core_stub_in_nt_dll
+# define _core_attr _OMNIORB_NTDLL_IMPORT
+# else
+# define _core_attr
+# endif
+#endif
+
+#ifdef _dyn_attr
+# error "A local CPP macro _dyn_attr has already been defined."
+#else
+# ifdef USE_dyn_stub_in_nt_dll
+# define _dyn_attr _OMNIORB_NTDLL_IMPORT
+# else
+# define _dyn_attr
+# endif
+#endif
+
+
+
+
+
+_CORBA_MODULE plpbus_orb
+
+_CORBA_MODULE_BEG
+
+ struct DataItem {
+ typedef _CORBA_ConstrType_Variable_Var<DataItem> _var_type;
+
+
+ ::CORBA::String_member name;
+
+ ::CORBA::Any value;
+
+
+
+ void operator>>= (cdrStream &) const;
+ void operator<<= (cdrStream &);
+ };
+
+ typedef DataItem::_var_type DataItem_var;
+
+ typedef _CORBA_ConstrType_Variable_OUT_arg< DataItem,DataItem_var > DataItem_out;
+
+ _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_DataItem;
+
+ _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_DataItemSequence;
+
+ class DataItemSequence_var;
+
+ class DataItemSequence : public _CORBA_Unbounded_Sequence< DataItem > {
+ public:
+ typedef DataItemSequence_var _var_type;
+ inline DataItemSequence() {}
+ inline DataItemSequence(const DataItemSequence& _s)
+ : _CORBA_Unbounded_Sequence< DataItem > (_s) {}
+
+ inline DataItemSequence(_CORBA_ULong _max)
+ : _CORBA_Unbounded_Sequence< DataItem > (_max) {}
+ inline DataItemSequence(_CORBA_ULong _max, _CORBA_ULong _len, DataItem* _val, _CORBA_Boolean _rel=0)
+ : _CORBA_Unbounded_Sequence< DataItem > (_max, _len, _val, _rel) {}
+
+
+
+ inline DataItemSequence& operator = (const DataItemSequence& _s) {
+ _CORBA_Unbounded_Sequence< DataItem > ::operator=(_s);
+ return *this;
+ }
+ };
+
+ class DataItemSequence_out;
+
+ class DataItemSequence_var {
+ public:
+ inline DataItemSequence_var() : _pd_seq(0) {}
+ inline DataItemSequence_var(DataItemSequence* _s) : _pd_seq(_s) {}
+ inline DataItemSequence_var(const DataItemSequence_var& _s) {
+ if( _s._pd_seq ) _pd_seq = new DataItemSequence(*_s._pd_seq);
+ else _pd_seq = 0;
+ }
+ inline ~DataItemSequence_var() { if( _pd_seq ) delete _pd_seq; }
+
+ inline DataItemSequence_var& operator = (DataItemSequence* _s) {
+ if( _pd_seq ) delete _pd_seq;
+ _pd_seq = _s;
+ return *this;
+ }
+ inline DataItemSequence_var& operator = (const DataItemSequence_var& _s) {
+ if( _s._pd_seq ) {
+ if( !_pd_seq ) _pd_seq = new DataItemSequence;
+ *_pd_seq = *_s._pd_seq;
+ } else if( _pd_seq ) {
+ delete _pd_seq;
+ _pd_seq = 0;
+ }
+ return *this;
+ }
+ inline DataItem& operator [] (_CORBA_ULong _s) {
+ return (*_pd_seq)[_s];
+ }
+
+
+
+ inline DataItemSequence* operator -> () { return _pd_seq; }
+ inline const DataItemSequence* operator -> () const { return _pd_seq; }
+#if defined(__GNUG__)
+ inline operator DataItemSequence& () const { return *_pd_seq; }
+#else
+ inline operator const DataItemSequence& () const { return *_pd_seq; }
+ inline operator DataItemSequence& () { return *_pd_seq; }
+#endif
+
+ inline const DataItemSequence& in() const { return *_pd_seq; }
+ inline DataItemSequence& inout() { return *_pd_seq; }
+ inline DataItemSequence*& out() {
+ if( _pd_seq ) { delete _pd_seq; _pd_seq = 0; }
+ return _pd_seq;
+ }
+ inline DataItemSequence* _retn() { DataItemSequence* tmp = _pd_seq; _pd_seq = 0; return tmp; }
+
+ friend class DataItemSequence_out;
+
+ private:
+ DataItemSequence* _pd_seq;
+ };
+
+ class DataItemSequence_out {
+ public:
+ inline DataItemSequence_out(DataItemSequence*& _s) : _data(_s) { _data = 0; }
+ inline DataItemSequence_out(DataItemSequence_var& _s)
+ : _data(_s._pd_seq) { _s = (DataItemSequence*) 0; }
+ inline DataItemSequence_out(const DataItemSequence_out& _s) : _data(_s._data) {}
+ inline DataItemSequence_out& operator = (const DataItemSequence_out& _s) {
+ _data = _s._data;
+ return *this;
+ }
+ inline DataItemSequence_out& operator = (DataItemSequence* _s) {
+ _data = _s;
+ return *this;
+ }
+ inline operator DataItemSequence*&() { return _data; }
+ inline DataItemSequence*& ptr() { return _data; }
+ inline DataItemSequence* operator->() { return _data; }
+
+ inline DataItem& operator [] (_CORBA_ULong _i) {
+ return (*_data)[_i];
+ }
+
+
+
+ DataItemSequence*& _data;
+
+ private:
+ DataItemSequence_out();
+ DataItemSequence_out& operator=(const DataItemSequence_var&);
+ };
+
+#ifndef __plpbus__orb_mOrbClient__
+#define __plpbus__orb_mOrbClient__
+
+ class OrbClient;
+ class _objref_OrbClient;
+ class _impl_OrbClient;
+
+ typedef _objref_OrbClient* OrbClient_ptr;
+ typedef OrbClient_ptr OrbClientRef;
+
+ class OrbClient_Helper {
+ public:
+ typedef OrbClient_ptr _ptr_type;
+
+ static _ptr_type _nil();
+ static _CORBA_Boolean is_nil(_ptr_type);
+ static void release(_ptr_type);
+ static void duplicate(_ptr_type);
+ static void marshalObjRef(_ptr_type, cdrStream&);
+ static _ptr_type unmarshalObjRef(cdrStream&);
+ };
+
+ typedef _CORBA_ObjRef_Var<_objref_OrbClient, OrbClient_Helper> OrbClient_var;
+ typedef _CORBA_ObjRef_OUT_arg<_objref_OrbClient,OrbClient_Helper > OrbClient_out;
+
+#endif
+
+ // interface OrbClient
+ class OrbClient {
+ public:
+ // Declarations for this interface type.
+ typedef OrbClient_ptr _ptr_type;
+ typedef OrbClient_var _var_type;
+
+ static _ptr_type _duplicate(_ptr_type);
+ static _ptr_type _narrow(::CORBA::Object_ptr);
+ static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
+
+ static _ptr_type _nil();
+
+ static inline void _marshalObjRef(_ptr_type, cdrStream&);
+
+ static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
+ omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
+ if (o)
+ return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
+ else
+ return _nil();
+ }
+
+ static _core_attr const char* _PD_repoId;
+
+ // Other IDL defined within this scope.
+
+ };
+
+ class _objref_OrbClient :
+ public virtual ::CORBA::Object,
+ public virtual omniObjRef
+ {
+ public:
+ void receive_event_message(const char* event_param);
+ void receive_event_dataitem_sequence(const ::plpbus_orb::DataItemSequence& event_param);
+ void receive_response_message(const char* msg_rsp_param);
+ void receive_response_dataitem_sequence(const ::plpbus_orb::DataItemSequence& msg_rsp_param);
+
+ inline _objref_OrbClient() { _PR_setobj(0); } // nil
+ _objref_OrbClient(omniIOR*, omniIdentity*);
+
+ protected:
+ virtual ~_objref_OrbClient();
+
+
+ private:
+ virtual void* _ptrToObjRef(const char*);
+
+ _objref_OrbClient(const _objref_OrbClient&);
+ _objref_OrbClient& operator = (const _objref_OrbClient&);
+ // not implemented
+
+ friend class OrbClient;
+ };
+
+ class _pof_OrbClient : public _OMNI_NS(proxyObjectFactory) {
+ public:
+ inline _pof_OrbClient() : _OMNI_NS(proxyObjectFactory)(OrbClient::_PD_repoId) {}
+ virtual ~_pof_OrbClient();
+
+ virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
+ virtual _CORBA_Boolean is_a(const char*) const;
+ };
+
+ class _impl_OrbClient :
+ public virtual omniServant
+ {
+ public:
+ virtual ~_impl_OrbClient();
+
+ virtual void receive_event_message(const char* event_param) = 0;
+ virtual void receive_event_dataitem_sequence(const ::plpbus_orb::DataItemSequence& event_param) = 0;
+ virtual void receive_response_message(const char* msg_rsp_param) = 0;
+ virtual void receive_response_dataitem_sequence(const ::plpbus_orb::DataItemSequence& msg_rsp_param) = 0;
+
+ public: // Really protected, workaround for xlC
+ virtual _CORBA_Boolean _dispatch(omniCallHandle&);
+
+ private:
+ virtual void* _ptrToInterface(const char*);
+ virtual const char* _mostDerivedRepoId();
+
+ };
+
+
+ _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_OrbClient;
+
+#ifndef __plpbus__orb_mOrbServer__
+#define __plpbus__orb_mOrbServer__
+
+ class OrbServer;
+ class _objref_OrbServer;
+ class _impl_OrbServer;
+
+ typedef _objref_OrbServer* OrbServer_ptr;
+ typedef OrbServer_ptr OrbServerRef;
+
+ class OrbServer_Helper {
+ public:
+ typedef OrbServer_ptr _ptr_type;
+
+ static _ptr_type _nil();
+ static _CORBA_Boolean is_nil(_ptr_type);
+ static void release(_ptr_type);
+ static void duplicate(_ptr_type);
+ static void marshalObjRef(_ptr_type, cdrStream&);
+ static _ptr_type unmarshalObjRef(cdrStream&);
+ };
+
+ typedef _CORBA_ObjRef_Var<_objref_OrbServer, OrbServer_Helper> OrbServer_var;
+ typedef _CORBA_ObjRef_OUT_arg<_objref_OrbServer,OrbServer_Helper > OrbServer_out;
+
+#endif
+
+ // interface OrbServer
+ class OrbServer {
+ public:
+ // Declarations for this interface type.
+ typedef OrbServer_ptr _ptr_type;
+ typedef OrbServer_var _var_type;
+
+ static _ptr_type _duplicate(_ptr_type);
+ static _ptr_type _narrow(::CORBA::Object_ptr);
+ static _ptr_type _unchecked_narrow(::CORBA::Object_ptr);
+
+ static _ptr_type _nil();
+
+ static inline void _marshalObjRef(_ptr_type, cdrStream&);
+
+ static inline _ptr_type _unmarshalObjRef(cdrStream& s) {
+ omniObjRef* o = omniObjRef::_unMarshal(_PD_repoId,s);
+ if (o)
+ return (_ptr_type) o->_ptrToObjRef(_PD_repoId);
+ else
+ return _nil();
+ }
+
+ static _core_attr const char* _PD_repoId;
+
+ // Other IDL defined within this scope.
+
+ };
+
+ class _objref_OrbServer :
+ public virtual ::CORBA::Object,
+ public virtual omniObjRef
+ {
+ public:
+ void send_message_and_request_response(::plpbus_orb::OrbClient_ptr response_listener_param, const char* msg_param);
+ void send_dataitem_message_and_request_response(::plpbus_orb::OrbClient_ptr response_listener_param, const ::plpbus_orb::DataItemSequence& req_seq_param);
+ char* send_message_and_wait_response(const char* msg_req_param, ::CORBA::Long& err_flg);
+ ::CORBA::Long send_dataitem_message_and_wait_response(const ::plpbus_orb::DataItemSequence& req_seq_param, ::plpbus_orb::DataItemSequence_out rsp_seq_param);
+ void add_event_listener(::plpbus_orb::OrbClient_ptr callback_client_param, const char* msg_param, ::CORBA::UShort period_secs);
+ void shutdown();
+
+ inline _objref_OrbServer() { _PR_setobj(0); } // nil
+ _objref_OrbServer(omniIOR*, omniIdentity*);
+
+ protected:
+ virtual ~_objref_OrbServer();
+
+
+ private:
+ virtual void* _ptrToObjRef(const char*);
+
+ _objref_OrbServer(const _objref_OrbServer&);
+ _objref_OrbServer& operator = (const _objref_OrbServer&);
+ // not implemented
+
+ friend class OrbServer;
+ };
+
+ class _pof_OrbServer : public _OMNI_NS(proxyObjectFactory) {
+ public:
+ inline _pof_OrbServer() : _OMNI_NS(proxyObjectFactory)(OrbServer::_PD_repoId) {}
+ virtual ~_pof_OrbServer();
+
+ virtual omniObjRef* newObjRef(omniIOR*,omniIdentity*);
+ virtual _CORBA_Boolean is_a(const char*) const;
+ };
+
+ class _impl_OrbServer :
+ public virtual omniServant
+ {
+ public:
+ virtual ~_impl_OrbServer();
+
+ virtual void send_message_and_request_response(::plpbus_orb::OrbClient_ptr response_listener_param, const char* msg_param) = 0;
+ virtual void send_dataitem_message_and_request_response(::plpbus_orb::OrbClient_ptr response_listener_param, const ::plpbus_orb::DataItemSequence& req_seq_param) = 0;
+ virtual char* send_message_and_wait_response(const char* msg_req_param, ::CORBA::Long& err_flg) = 0;
+ virtual ::CORBA::Long send_dataitem_message_and_wait_response(const ::plpbus_orb::DataItemSequence& req_seq_param, ::plpbus_orb::DataItemSequence_out rsp_seq_param) = 0;
+ virtual void add_event_listener(::plpbus_orb::OrbClient_ptr callback_client_param, const char* msg_param, ::CORBA::UShort period_secs) = 0;
+ virtual void shutdown() = 0;
+
+ public: // Really protected, workaround for xlC
+ virtual _CORBA_Boolean _dispatch(omniCallHandle&);
+
+ private:
+ virtual void* _ptrToInterface(const char*);
+ virtual const char* _mostDerivedRepoId();
+
+ };
+
+
+ _CORBA_MODULE_VAR _dyn_attr const ::CORBA::TypeCode_ptr _tc_OrbServer;
+
+_CORBA_MODULE_END
+
+
+
+_CORBA_MODULE POA_plpbus_orb
+_CORBA_MODULE_BEG
+
+ class OrbClient :
+ public virtual plpbus_orb::_impl_OrbClient,
+ public virtual ::PortableServer::ServantBase
+ {
+ public:
+ virtual ~OrbClient();
+
+ inline ::plpbus_orb::OrbClient_ptr _this() {
+ return (::plpbus_orb::OrbClient_ptr) _do_this(::plpbus_orb::OrbClient::_PD_repoId);
+ }
+ };
+
+ template <class _omniT>
+ class OrbClient_tie : public virtual OrbClient
+ {
+ public:
+ OrbClient_tie(_omniT& t)
+ : pd_obj(&t), pd_poa(0), pd_rel(0) {}
+ OrbClient_tie(_omniT& t, ::PortableServer::POA_ptr p)
+ : pd_obj(&t), pd_poa(p), pd_rel(0) {}
+ OrbClient_tie(_omniT* t, _CORBA_Boolean r=1)
+ : pd_obj(t), pd_poa(0), pd_rel(r) {}
+ OrbClient_tie(_omniT* t, ::PortableServer::POA_ptr p,_CORBA_Boolean r=1)
+ : pd_obj(t), pd_poa(p), pd_rel(r) {}
+ ~OrbClient_tie() {
+ if( pd_poa ) ::CORBA::release(pd_poa);
+ if( pd_rel ) delete pd_obj;
+ }
+
+ _omniT* _tied_object() { return pd_obj; }
+
+ void _tied_object(_omniT& t) {
+ if( pd_rel ) delete pd_obj;
+ pd_obj = &t;
+ pd_rel = 0;
+ }
+
+ void _tied_object(_omniT* t, _CORBA_Boolean r=1) {
+ if( pd_rel ) delete pd_obj;
+ pd_obj = t;
+ pd_rel = r;
+ }
+
+ _CORBA_Boolean _is_owner() { return pd_rel; }
+ void _is_owner(_CORBA_Boolean io) { pd_rel = io; }
+
+ ::PortableServer::POA_ptr _default_POA() {
+ if( !pd_poa ) return ::PortableServer::POA::_the_root_poa();
+ else return ::PortableServer::POA::_duplicate(pd_poa);
+ }
+
+ void receive_event_message(const char* event_param) { pd_obj->receive_event_message(event_param); }
+ void receive_event_dataitem_sequence(const plpbus_orb::DataItemSequence& event_param) { pd_obj->receive_event_dataitem_sequence(event_param); }
+ void receive_response_message(const char* msg_rsp_param) { pd_obj->receive_response_message(msg_rsp_param); }
+ void receive_response_dataitem_sequence(const plpbus_orb::DataItemSequence& msg_rsp_param) { pd_obj->receive_response_dataitem_sequence(msg_rsp_param); }
+
+
+ private:
+ _omniT* pd_obj;
+ ::PortableServer::POA_ptr pd_poa;
+ _CORBA_Boolean pd_rel;
+ };
+
+ class OrbServer :
+ public virtual plpbus_orb::_impl_OrbServer,
+ public virtual ::PortableServer::ServantBase
+ {
+ public:
+ virtual ~OrbServer();
+
+ inline ::plpbus_orb::OrbServer_ptr _this() {
+ return (::plpbus_orb::OrbServer_ptr) _do_this(::plpbus_orb::OrbServer::_PD_repoId);
+ }
+ };
+
+ template <class _omniT>
+ class OrbServer_tie : public virtual OrbServer
+ {
+ public:
+ OrbServer_tie(_omniT& t)
+ : pd_obj(&t), pd_poa(0), pd_rel(0) {}
+ OrbServer_tie(_omniT& t, ::PortableServer::POA_ptr p)
+ : pd_obj(&t), pd_poa(p), pd_rel(0) {}
+ OrbServer_tie(_omniT* t, _CORBA_Boolean r=1)
+ : pd_obj(t), pd_poa(0), pd_rel(r) {}
+ OrbServer_tie(_omniT* t, ::PortableServer::POA_ptr p,_CORBA_Boolean r=1)
+ : pd_obj(t), pd_poa(p), pd_rel(r) {}
+ ~OrbServer_tie() {
+ if( pd_poa ) ::CORBA::release(pd_poa);
+ if( pd_rel ) delete pd_obj;
+ }
+
+ _omniT* _tied_object() { return pd_obj; }
+
+ void _tied_object(_omniT& t) {
+ if( pd_rel ) delete pd_obj;
+ pd_obj = &t;
+ pd_rel = 0;
+ }
+
+ void _tied_object(_omniT* t, _CORBA_Boolean r=1) {
+ if( pd_rel ) delete pd_obj;
+ pd_obj = t;
+ pd_rel = r;
+ }
+
+ _CORBA_Boolean _is_owner() { return pd_rel; }
+ void _is_owner(_CORBA_Boolean io) { pd_rel = io; }
+
+ ::PortableServer::POA_ptr _default_POA() {
+ if( !pd_poa ) return ::PortableServer::POA::_the_root_poa();
+ else return ::PortableServer::POA::_duplicate(pd_poa);
+ }
+
+ void send_message_and_request_response(plpbus_orb::OrbClient_ptr response_listener_param, const char* msg_param) { pd_obj->send_message_and_request_response(response_listener_param, msg_param); }
+ void send_dataitem_message_and_request_response(plpbus_orb::OrbClient_ptr response_listener_param, const plpbus_orb::DataItemSequence& req_seq_param) { pd_obj->send_dataitem_message_and_request_response(response_listener_param, req_seq_param); }
+ char* send_message_and_wait_response(const char* msg_req_param, ::CORBA::Long& err_flg) { return pd_obj->send_message_and_wait_response(msg_req_param, err_flg); }
+ ::CORBA::Long send_dataitem_message_and_wait_response(const plpbus_orb::DataItemSequence& req_seq_param, plpbus_orb::DataItemSequence_out rsp_seq_param) { return pd_obj->send_dataitem_message_and_wait_response(req_seq_param, rsp_seq_param); }
+ void add_event_listener(plpbus_orb::OrbClient_ptr callback_client_param, const char* msg_param, ::CORBA::UShort period_secs) { pd_obj->add_event_listener(callback_client_param, msg_param, period_secs); }
+ void shutdown() { pd_obj->shutdown(); }
+
+
+ private:
+ _omniT* pd_obj;
+ ::PortableServer::POA_ptr pd_poa;
+ _CORBA_Boolean pd_rel;
+ };
+
+_CORBA_MODULE_END
+
+
+
+_CORBA_MODULE OBV_plpbus_orb
+_CORBA_MODULE_BEG
+
+_CORBA_MODULE_END
+
+
+
+
+
+#undef _core_attr
+#undef _dyn_attr
+
+extern void operator<<=(::CORBA::Any& _a, const plpbus_orb::DataItem& _s);
+extern void operator<<=(::CORBA::Any& _a, plpbus_orb::DataItem* _sp);
+extern _CORBA_Boolean operator>>=(const ::CORBA::Any& _a, plpbus_orb::DataItem*& _sp);
+extern _CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const plpbus_orb::DataItem*& _sp);
+
+void operator<<=(::CORBA::Any& _a, const plpbus_orb::DataItemSequence& _s);
+void operator<<=(::CORBA::Any& _a, plpbus_orb::DataItemSequence* _sp);
+_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, plpbus_orb::DataItemSequence*& _sp);
+_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, const plpbus_orb::DataItemSequence*& _sp);
+
+void operator<<=(::CORBA::Any& _a, plpbus_orb::OrbClient_ptr _s);
+void operator<<=(::CORBA::Any& _a, plpbus_orb::OrbClient_ptr* _s);
+_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, plpbus_orb::OrbClient_ptr& _s);
+
+void operator<<=(::CORBA::Any& _a, plpbus_orb::OrbServer_ptr _s);
+void operator<<=(::CORBA::Any& _a, plpbus_orb::OrbServer_ptr* _s);
+_CORBA_Boolean operator>>=(const ::CORBA::Any& _a, plpbus_orb::OrbServer_ptr& _s);
+
+
+
+inline void
+plpbus_orb::OrbClient::_marshalObjRef(::plpbus_orb::OrbClient_ptr obj, cdrStream& s) {
+ omniObjRef::_marshal(obj->_PR_getobj(),s);
+}
+
+
+inline void
+plpbus_orb::OrbServer::_marshalObjRef(::plpbus_orb::OrbServer_ptr obj, cdrStream& s) {
+ omniObjRef::_marshal(obj->_PR_getobj(),s);
+}
+
+
+
+
+#ifdef USE_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+# undef USE_stub_in_nt_dll
+# undef USE_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+#endif
+#ifdef USE_core_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+# undef USE_core_stub_in_nt_dll
+# undef USE_core_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+#endif
+#ifdef USE_dyn_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+# undef USE_dyn_stub_in_nt_dll
+# undef USE_dyn_stub_in_nt_dll_NOT_DEFINED_RequestResponseBus
+#endif
+
+#endif // __RequestResponseBus_hh__
+
--- /dev/null
+// This file is generated by omniidl (C++ backend)- omniORB_4_1. Do not edit.
+
+#include "RequestResponseBus.hh"
+#include <omniORB4/IOP_S.h>
+#include <omniORB4/IOP_C.h>
+#include <omniORB4/callDescriptor.h>
+#include <omniORB4/callHandle.h>
+#include <omniORB4/objTracker.h>
+
+
+OMNI_USING_NAMESPACE(omni)
+
+static const char* _0RL_library_version = omniORB_4_1;
+
+
+
+void
+plpbus_orb::DataItem::operator>>= (cdrStream &_n) const
+{
+ _n.marshalString(name,0);
+ (const ::CORBA::Any&) value >>= _n;
+
+}
+
+void
+plpbus_orb::DataItem::operator<<= (cdrStream &_n)
+{
+ name = _n.unmarshalString(0);
+ (::CORBA::Any&)value <<= _n;
+
+}
+
+plpbus_orb::OrbClient_ptr plpbus_orb::OrbClient_Helper::_nil() {
+ return ::plpbus_orb::OrbClient::_nil();
+}
+
+::CORBA::Boolean plpbus_orb::OrbClient_Helper::is_nil(::plpbus_orb::OrbClient_ptr p) {
+ return ::CORBA::is_nil(p);
+
+}
+
+void plpbus_orb::OrbClient_Helper::release(::plpbus_orb::OrbClient_ptr p) {
+ ::CORBA::release(p);
+}
+
+void plpbus_orb::OrbClient_Helper::marshalObjRef(::plpbus_orb::OrbClient_ptr obj, cdrStream& s) {
+ ::plpbus_orb::OrbClient::_marshalObjRef(obj, s);
+}
+
+plpbus_orb::OrbClient_ptr plpbus_orb::OrbClient_Helper::unmarshalObjRef(cdrStream& s) {
+ return ::plpbus_orb::OrbClient::_unmarshalObjRef(s);
+}
+
+void plpbus_orb::OrbClient_Helper::duplicate(::plpbus_orb::OrbClient_ptr obj) {
+ if( obj && !obj->_NP_is_nil() ) omni::duplicateObjRef(obj);
+}
+
+plpbus_orb::OrbClient_ptr
+plpbus_orb::OrbClient::_duplicate(::plpbus_orb::OrbClient_ptr obj)
+{
+ if( obj && !obj->_NP_is_nil() ) omni::duplicateObjRef(obj);
+ return obj;
+}
+
+plpbus_orb::OrbClient_ptr
+plpbus_orb::OrbClient::_narrow(::CORBA::Object_ptr obj)
+{
+ if( !obj || obj->_NP_is_nil() || obj->_NP_is_pseudo() ) return _nil();
+ _ptr_type e = (_ptr_type) obj->_PR_getobj()->_realNarrow(_PD_repoId);
+ return e ? e : _nil();
+}
+
+
+plpbus_orb::OrbClient_ptr
+plpbus_orb::OrbClient::_unchecked_narrow(::CORBA::Object_ptr obj)
+{
+ if( !obj || obj->_NP_is_nil() || obj->_NP_is_pseudo() ) return _nil();
+ _ptr_type e = (_ptr_type) obj->_PR_getobj()->_uncheckedNarrow(_PD_repoId);
+ return e ? e : _nil();
+}
+
+plpbus_orb::OrbClient_ptr
+plpbus_orb::OrbClient::_nil()
+{
+#ifdef OMNI_UNLOADABLE_STUBS
+ static _objref_OrbClient _the_nil_obj;
+ return &_the_nil_obj;
+#else
+ static _objref_OrbClient* _the_nil_ptr = 0;
+ if( !_the_nil_ptr ) {
+ omni::nilRefLock().lock();
+ if( !_the_nil_ptr ) {
+ _the_nil_ptr = new _objref_OrbClient;
+ registerNilCorbaObject(_the_nil_ptr);
+ }
+ omni::nilRefLock().unlock();
+ }
+ return _the_nil_ptr;
+#endif
+}
+
+const char* plpbus_orb::OrbClient::_PD_repoId = "IDL:plpbus_orb/OrbClient:1.0";
+
+
+plpbus_orb::_objref_OrbClient::~_objref_OrbClient() {
+
+}
+
+
+plpbus_orb::_objref_OrbClient::_objref_OrbClient(omniIOR* ior, omniIdentity* id) :
+ omniObjRef(::plpbus_orb::OrbClient::_PD_repoId, ior, id, 1)
+
+
+{
+ _PR_setobj(this);
+}
+
+void*
+plpbus_orb::_objref_OrbClient::_ptrToObjRef(const char* id)
+{
+ if( id == ::plpbus_orb::OrbClient::_PD_repoId )
+ return (::plpbus_orb::OrbClient_ptr) this;
+
+ if( id == ::CORBA::Object::_PD_repoId )
+ return (::CORBA::Object_ptr) this;
+
+ if( omni::strMatch(id, ::plpbus_orb::OrbClient::_PD_repoId) )
+ return (::plpbus_orb::OrbClient_ptr) this;
+
+ if( omni::strMatch(id, ::CORBA::Object::_PD_repoId) )
+ return (::CORBA::Object_ptr) this;
+
+ return 0;
+}
+
+// Proxy call descriptor class. Mangled signature:
+// void_i_cstring
+class _0RL_cd_00d6793dc2c2a80c_00000000
+ : public omniCallDescriptor
+{
+public:
+ inline _0RL_cd_00d6793dc2c2a80c_00000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):
+ omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)
+ {
+
+ }
+
+ void marshalArguments(cdrStream&);
+ void unmarshalArguments(cdrStream&);
+
+
+
+ static const char* const _user_exns[];
+
+ ::CORBA::String_var arg_0_;
+ const char* arg_0;
+};
+
+void _0RL_cd_00d6793dc2c2a80c_00000000::marshalArguments(cdrStream& _n)
+{
+ _n.marshalString(arg_0,0);
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_00000000::unmarshalArguments(cdrStream& _n)
+{
+ arg_0_ = _n.unmarshalString(0);
+ arg_0 = arg_0_.in();
+
+}
+
+const char* const _0RL_cd_00d6793dc2c2a80c_00000000::_user_exns[] = {
+ 0
+};
+
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_10000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_00000000* tcd = (_0RL_cd_00d6793dc2c2a80c_00000000*)cd;
+ plpbus_orb::_impl_OrbClient* impl = (plpbus_orb::_impl_OrbClient*) svnt->_ptrToInterface(plpbus_orb::OrbClient::_PD_repoId);
+ impl->receive_event_message(tcd->arg_0);
+
+
+}
+
+void plpbus_orb::_objref_OrbClient::receive_event_message(const char* event_param)
+{
+ _0RL_cd_00d6793dc2c2a80c_00000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_10000000, "receive_event_message", 22);
+ _call_desc.arg_0 = event_param;
+
+ _invoke(_call_desc);
+
+
+
+}
+// Proxy call descriptor class. Mangled signature:
+// void_i_cplpbus__orb_mDataItemSequence
+class _0RL_cd_00d6793dc2c2a80c_20000000
+ : public omniCallDescriptor
+{
+public:
+ inline _0RL_cd_00d6793dc2c2a80c_20000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):
+ omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)
+ {
+
+ }
+
+ void marshalArguments(cdrStream&);
+ void unmarshalArguments(cdrStream&);
+
+
+
+ static const char* const _user_exns[];
+
+ plpbus_orb::DataItemSequence_var arg_0_;
+ const plpbus_orb::DataItemSequence* arg_0;
+};
+
+void _0RL_cd_00d6793dc2c2a80c_20000000::marshalArguments(cdrStream& _n)
+{
+ (const plpbus_orb::DataItemSequence&) *arg_0 >>= _n;
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_20000000::unmarshalArguments(cdrStream& _n)
+{
+ arg_0_ = new plpbus_orb::DataItemSequence;
+ (plpbus_orb::DataItemSequence&)arg_0_ <<= _n;
+ arg_0 = &arg_0_.in();
+
+}
+
+const char* const _0RL_cd_00d6793dc2c2a80c_20000000::_user_exns[] = {
+ 0
+};
+
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_30000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_20000000* tcd = (_0RL_cd_00d6793dc2c2a80c_20000000*)cd;
+ plpbus_orb::_impl_OrbClient* impl = (plpbus_orb::_impl_OrbClient*) svnt->_ptrToInterface(plpbus_orb::OrbClient::_PD_repoId);
+ impl->receive_event_dataitem_sequence(*tcd->arg_0);
+
+
+}
+
+void plpbus_orb::_objref_OrbClient::receive_event_dataitem_sequence(const ::plpbus_orb::DataItemSequence& event_param)
+{
+ _0RL_cd_00d6793dc2c2a80c_20000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_30000000, "receive_event_dataitem_sequence", 32);
+ _call_desc.arg_0 = &(::plpbus_orb::DataItemSequence&) event_param;
+
+ _invoke(_call_desc);
+
+
+
+}
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_40000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_00000000* tcd = (_0RL_cd_00d6793dc2c2a80c_00000000*)cd;
+ plpbus_orb::_impl_OrbClient* impl = (plpbus_orb::_impl_OrbClient*) svnt->_ptrToInterface(plpbus_orb::OrbClient::_PD_repoId);
+ impl->receive_response_message(tcd->arg_0);
+
+
+}
+
+void plpbus_orb::_objref_OrbClient::receive_response_message(const char* msg_rsp_param)
+{
+ _0RL_cd_00d6793dc2c2a80c_00000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_40000000, "receive_response_message", 25);
+ _call_desc.arg_0 = msg_rsp_param;
+
+ _invoke(_call_desc);
+
+
+
+}
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_50000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_20000000* tcd = (_0RL_cd_00d6793dc2c2a80c_20000000*)cd;
+ plpbus_orb::_impl_OrbClient* impl = (plpbus_orb::_impl_OrbClient*) svnt->_ptrToInterface(plpbus_orb::OrbClient::_PD_repoId);
+ impl->receive_response_dataitem_sequence(*tcd->arg_0);
+
+
+}
+
+void plpbus_orb::_objref_OrbClient::receive_response_dataitem_sequence(const ::plpbus_orb::DataItemSequence& msg_rsp_param)
+{
+ _0RL_cd_00d6793dc2c2a80c_20000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_50000000, "receive_response_dataitem_sequence", 35);
+ _call_desc.arg_0 = &(::plpbus_orb::DataItemSequence&) msg_rsp_param;
+
+ _invoke(_call_desc);
+
+
+
+}
+plpbus_orb::_pof_OrbClient::~_pof_OrbClient() {}
+
+
+omniObjRef*
+plpbus_orb::_pof_OrbClient::newObjRef(omniIOR* ior, omniIdentity* id)
+{
+ return new ::plpbus_orb::_objref_OrbClient(ior, id);
+}
+
+
+::CORBA::Boolean
+plpbus_orb::_pof_OrbClient::is_a(const char* id) const
+{
+ if( omni::ptrStrMatch(id, ::plpbus_orb::OrbClient::_PD_repoId) )
+ return 1;
+
+ return 0;
+}
+
+const plpbus_orb::_pof_OrbClient _the_pof_plpbus__orb_mOrbClient;
+
+plpbus_orb::_impl_OrbClient::~_impl_OrbClient() {}
+
+
+::CORBA::Boolean
+plpbus_orb::_impl_OrbClient::_dispatch(omniCallHandle& _handle)
+{
+ const char* op = _handle.operation_name();
+
+ if( omni::strMatch(op, "receive_event_message") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_00000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_10000000, "receive_event_message", 22, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+ if( omni::strMatch(op, "receive_event_dataitem_sequence") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_20000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_30000000, "receive_event_dataitem_sequence", 32, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+ if( omni::strMatch(op, "receive_response_message") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_00000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_40000000, "receive_response_message", 25, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+ if( omni::strMatch(op, "receive_response_dataitem_sequence") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_20000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_50000000, "receive_response_dataitem_sequence", 35, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+
+ return 0;
+}
+
+void*
+plpbus_orb::_impl_OrbClient::_ptrToInterface(const char* id)
+{
+ if( id == ::plpbus_orb::OrbClient::_PD_repoId )
+ return (::plpbus_orb::_impl_OrbClient*) this;
+
+ if( id == ::CORBA::Object::_PD_repoId )
+ return (void*) 1;
+
+ if( omni::strMatch(id, ::plpbus_orb::OrbClient::_PD_repoId) )
+ return (::plpbus_orb::_impl_OrbClient*) this;
+
+ if( omni::strMatch(id, ::CORBA::Object::_PD_repoId) )
+ return (void*) 1;
+ return 0;
+}
+
+const char*
+plpbus_orb::_impl_OrbClient::_mostDerivedRepoId()
+{
+ return ::plpbus_orb::OrbClient::_PD_repoId;
+}
+
+plpbus_orb::OrbServer_ptr plpbus_orb::OrbServer_Helper::_nil() {
+ return ::plpbus_orb::OrbServer::_nil();
+}
+
+::CORBA::Boolean plpbus_orb::OrbServer_Helper::is_nil(::plpbus_orb::OrbServer_ptr p) {
+ return ::CORBA::is_nil(p);
+
+}
+
+void plpbus_orb::OrbServer_Helper::release(::plpbus_orb::OrbServer_ptr p) {
+ ::CORBA::release(p);
+}
+
+void plpbus_orb::OrbServer_Helper::marshalObjRef(::plpbus_orb::OrbServer_ptr obj, cdrStream& s) {
+ ::plpbus_orb::OrbServer::_marshalObjRef(obj, s);
+}
+
+plpbus_orb::OrbServer_ptr plpbus_orb::OrbServer_Helper::unmarshalObjRef(cdrStream& s) {
+ return ::plpbus_orb::OrbServer::_unmarshalObjRef(s);
+}
+
+void plpbus_orb::OrbServer_Helper::duplicate(::plpbus_orb::OrbServer_ptr obj) {
+ if( obj && !obj->_NP_is_nil() ) omni::duplicateObjRef(obj);
+}
+
+plpbus_orb::OrbServer_ptr
+plpbus_orb::OrbServer::_duplicate(::plpbus_orb::OrbServer_ptr obj)
+{
+ if( obj && !obj->_NP_is_nil() ) omni::duplicateObjRef(obj);
+ return obj;
+}
+
+plpbus_orb::OrbServer_ptr
+plpbus_orb::OrbServer::_narrow(::CORBA::Object_ptr obj)
+{
+ if( !obj || obj->_NP_is_nil() || obj->_NP_is_pseudo() ) return _nil();
+ _ptr_type e = (_ptr_type) obj->_PR_getobj()->_realNarrow(_PD_repoId);
+ return e ? e : _nil();
+}
+
+
+plpbus_orb::OrbServer_ptr
+plpbus_orb::OrbServer::_unchecked_narrow(::CORBA::Object_ptr obj)
+{
+ if( !obj || obj->_NP_is_nil() || obj->_NP_is_pseudo() ) return _nil();
+ _ptr_type e = (_ptr_type) obj->_PR_getobj()->_uncheckedNarrow(_PD_repoId);
+ return e ? e : _nil();
+}
+
+plpbus_orb::OrbServer_ptr
+plpbus_orb::OrbServer::_nil()
+{
+#ifdef OMNI_UNLOADABLE_STUBS
+ static _objref_OrbServer _the_nil_obj;
+ return &_the_nil_obj;
+#else
+ static _objref_OrbServer* _the_nil_ptr = 0;
+ if( !_the_nil_ptr ) {
+ omni::nilRefLock().lock();
+ if( !_the_nil_ptr ) {
+ _the_nil_ptr = new _objref_OrbServer;
+ registerNilCorbaObject(_the_nil_ptr);
+ }
+ omni::nilRefLock().unlock();
+ }
+ return _the_nil_ptr;
+#endif
+}
+
+const char* plpbus_orb::OrbServer::_PD_repoId = "IDL:plpbus_orb/OrbServer:1.0";
+
+
+plpbus_orb::_objref_OrbServer::~_objref_OrbServer() {
+
+}
+
+
+plpbus_orb::_objref_OrbServer::_objref_OrbServer(omniIOR* ior, omniIdentity* id) :
+ omniObjRef(::plpbus_orb::OrbServer::_PD_repoId, ior, id, 1)
+
+
+{
+ _PR_setobj(this);
+}
+
+void*
+plpbus_orb::_objref_OrbServer::_ptrToObjRef(const char* id)
+{
+ if( id == ::plpbus_orb::OrbServer::_PD_repoId )
+ return (::plpbus_orb::OrbServer_ptr) this;
+
+ if( id == ::CORBA::Object::_PD_repoId )
+ return (::CORBA::Object_ptr) this;
+
+ if( omni::strMatch(id, ::plpbus_orb::OrbServer::_PD_repoId) )
+ return (::plpbus_orb::OrbServer_ptr) this;
+
+ if( omni::strMatch(id, ::CORBA::Object::_PD_repoId) )
+ return (::CORBA::Object_ptr) this;
+
+ return 0;
+}
+
+// Proxy call descriptor class. Mangled signature:
+// void_i_cplpbus__orb_mOrbClient_i_cstring
+class _0RL_cd_00d6793dc2c2a80c_60000000
+ : public omniCallDescriptor
+{
+public:
+ inline _0RL_cd_00d6793dc2c2a80c_60000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):
+ omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)
+ {
+
+ }
+
+ void marshalArguments(cdrStream&);
+ void unmarshalArguments(cdrStream&);
+
+
+
+ static const char* const _user_exns[];
+
+ plpbus_orb::OrbClient_var arg_0_;
+ plpbus_orb::OrbClient_ptr arg_0;
+ ::CORBA::String_var arg_1_;
+ const char* arg_1;
+};
+
+void _0RL_cd_00d6793dc2c2a80c_60000000::marshalArguments(cdrStream& _n)
+{
+ plpbus_orb::OrbClient::_marshalObjRef(arg_0,_n);
+ _n.marshalString(arg_1,0);
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_60000000::unmarshalArguments(cdrStream& _n)
+{
+ arg_0_ = plpbus_orb::OrbClient::_unmarshalObjRef(_n);
+ arg_0 = arg_0_.in();
+ arg_1_ = _n.unmarshalString(0);
+ arg_1 = arg_1_.in();
+
+}
+
+const char* const _0RL_cd_00d6793dc2c2a80c_60000000::_user_exns[] = {
+ 0
+};
+
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_70000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_60000000* tcd = (_0RL_cd_00d6793dc2c2a80c_60000000*)cd;
+ plpbus_orb::_impl_OrbServer* impl = (plpbus_orb::_impl_OrbServer*) svnt->_ptrToInterface(plpbus_orb::OrbServer::_PD_repoId);
+ impl->send_message_and_request_response(tcd->arg_0, tcd->arg_1);
+
+
+}
+
+void plpbus_orb::_objref_OrbServer::send_message_and_request_response(::plpbus_orb::OrbClient_ptr response_listener_param, const char* msg_param)
+{
+ _0RL_cd_00d6793dc2c2a80c_60000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_70000000, "send_message_and_request_response", 34);
+ _call_desc.arg_0 = response_listener_param;
+ _call_desc.arg_1 = msg_param;
+
+ _invoke(_call_desc);
+
+
+
+}
+// Proxy call descriptor class. Mangled signature:
+// void_i_cplpbus__orb_mOrbClient_i_cplpbus__orb_mDataItemSequence
+class _0RL_cd_00d6793dc2c2a80c_80000000
+ : public omniCallDescriptor
+{
+public:
+ inline _0RL_cd_00d6793dc2c2a80c_80000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):
+ omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)
+ {
+
+ }
+
+ void marshalArguments(cdrStream&);
+ void unmarshalArguments(cdrStream&);
+
+
+
+ static const char* const _user_exns[];
+
+ plpbus_orb::OrbClient_var arg_0_;
+ plpbus_orb::OrbClient_ptr arg_0;
+ plpbus_orb::DataItemSequence_var arg_1_;
+ const plpbus_orb::DataItemSequence* arg_1;
+};
+
+void _0RL_cd_00d6793dc2c2a80c_80000000::marshalArguments(cdrStream& _n)
+{
+ plpbus_orb::OrbClient::_marshalObjRef(arg_0,_n);
+ (const plpbus_orb::DataItemSequence&) *arg_1 >>= _n;
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_80000000::unmarshalArguments(cdrStream& _n)
+{
+ arg_0_ = plpbus_orb::OrbClient::_unmarshalObjRef(_n);
+ arg_0 = arg_0_.in();
+ arg_1_ = new plpbus_orb::DataItemSequence;
+ (plpbus_orb::DataItemSequence&)arg_1_ <<= _n;
+ arg_1 = &arg_1_.in();
+
+}
+
+const char* const _0RL_cd_00d6793dc2c2a80c_80000000::_user_exns[] = {
+ 0
+};
+
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_90000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_80000000* tcd = (_0RL_cd_00d6793dc2c2a80c_80000000*)cd;
+ plpbus_orb::_impl_OrbServer* impl = (plpbus_orb::_impl_OrbServer*) svnt->_ptrToInterface(plpbus_orb::OrbServer::_PD_repoId);
+ impl->send_dataitem_message_and_request_response(tcd->arg_0, *tcd->arg_1);
+
+
+}
+
+void plpbus_orb::_objref_OrbServer::send_dataitem_message_and_request_response(::plpbus_orb::OrbClient_ptr response_listener_param, const ::plpbus_orb::DataItemSequence& req_seq_param)
+{
+ _0RL_cd_00d6793dc2c2a80c_80000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_90000000, "send_dataitem_message_and_request_response", 43);
+ _call_desc.arg_0 = response_listener_param;
+ _call_desc.arg_1 = &(::plpbus_orb::DataItemSequence&) req_seq_param;
+
+ _invoke(_call_desc);
+
+
+
+}
+// Proxy call descriptor class. Mangled signature:
+// _cstring_i_cstring_o_clong
+class _0RL_cd_00d6793dc2c2a80c_a0000000
+ : public omniCallDescriptor
+{
+public:
+ inline _0RL_cd_00d6793dc2c2a80c_a0000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):
+ omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)
+ {
+
+ }
+
+ void marshalArguments(cdrStream&);
+ void unmarshalArguments(cdrStream&);
+
+ void unmarshalReturnedValues(cdrStream&);
+ void marshalReturnedValues(cdrStream&);
+
+
+ static const char* const _user_exns[];
+
+ ::CORBA::String_var arg_0_;
+ const char* arg_0;
+ ::CORBA::Long arg_1;
+ ::CORBA::String_var result;
+};
+
+void _0RL_cd_00d6793dc2c2a80c_a0000000::marshalArguments(cdrStream& _n)
+{
+ _n.marshalString(arg_0,0);
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_a0000000::unmarshalArguments(cdrStream& _n)
+{
+ arg_0_ = _n.unmarshalString(0);
+ arg_0 = arg_0_.in();
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_a0000000::marshalReturnedValues(cdrStream& _n)
+{
+ _n.marshalString(result,0);
+ arg_1 >>= _n;
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_a0000000::unmarshalReturnedValues(cdrStream& _n)
+{
+ result = _n.unmarshalString(0);
+ (::CORBA::Long&)arg_1 <<= _n;
+
+}
+
+const char* const _0RL_cd_00d6793dc2c2a80c_a0000000::_user_exns[] = {
+ 0
+};
+
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_b0000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_a0000000* tcd = (_0RL_cd_00d6793dc2c2a80c_a0000000*)cd;
+ plpbus_orb::_impl_OrbServer* impl = (plpbus_orb::_impl_OrbServer*) svnt->_ptrToInterface(plpbus_orb::OrbServer::_PD_repoId);
+ tcd->result = impl->send_message_and_wait_response(tcd->arg_0, tcd->arg_1);
+
+
+}
+
+char* plpbus_orb::_objref_OrbServer::send_message_and_wait_response(const char* msg_req_param, ::CORBA::Long& err_flg)
+{
+ _0RL_cd_00d6793dc2c2a80c_a0000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_b0000000, "send_message_and_wait_response", 31);
+ _call_desc.arg_0 = msg_req_param;
+
+ _invoke(_call_desc);
+ err_flg = _call_desc.arg_1;
+ return _call_desc.result._retn();
+
+
+}
+// Proxy call descriptor class. Mangled signature:
+// _clong_i_cplpbus__orb_mDataItemSequence_o_cplpbus__orb_mDataItemSequence
+class _0RL_cd_00d6793dc2c2a80c_c0000000
+ : public omniCallDescriptor
+{
+public:
+ inline _0RL_cd_00d6793dc2c2a80c_c0000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):
+ omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)
+ {
+
+ }
+
+ void marshalArguments(cdrStream&);
+ void unmarshalArguments(cdrStream&);
+
+ void unmarshalReturnedValues(cdrStream&);
+ void marshalReturnedValues(cdrStream&);
+
+
+ static const char* const _user_exns[];
+
+ plpbus_orb::DataItemSequence_var arg_0_;
+ const plpbus_orb::DataItemSequence* arg_0;
+ plpbus_orb::DataItemSequence_var arg_1;
+ ::CORBA::Long result;
+};
+
+void _0RL_cd_00d6793dc2c2a80c_c0000000::marshalArguments(cdrStream& _n)
+{
+ (const plpbus_orb::DataItemSequence&) *arg_0 >>= _n;
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_c0000000::unmarshalArguments(cdrStream& _n)
+{
+ arg_0_ = new plpbus_orb::DataItemSequence;
+ (plpbus_orb::DataItemSequence&)arg_0_ <<= _n;
+ arg_0 = &arg_0_.in();
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_c0000000::marshalReturnedValues(cdrStream& _n)
+{
+ result >>= _n;
+ (const plpbus_orb::DataItemSequence&) arg_1 >>= _n;
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_c0000000::unmarshalReturnedValues(cdrStream& _n)
+{
+ (::CORBA::Long&)result <<= _n;
+ arg_1 = new plpbus_orb::DataItemSequence;
+ (plpbus_orb::DataItemSequence&)arg_1 <<= _n;
+
+}
+
+const char* const _0RL_cd_00d6793dc2c2a80c_c0000000::_user_exns[] = {
+ 0
+};
+
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_d0000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_c0000000* tcd = (_0RL_cd_00d6793dc2c2a80c_c0000000*)cd;
+ plpbus_orb::_impl_OrbServer* impl = (plpbus_orb::_impl_OrbServer*) svnt->_ptrToInterface(plpbus_orb::OrbServer::_PD_repoId);
+ tcd->result = impl->send_dataitem_message_and_wait_response(*tcd->arg_0, tcd->arg_1.out());
+
+
+}
+
+::CORBA::Long plpbus_orb::_objref_OrbServer::send_dataitem_message_and_wait_response(const ::plpbus_orb::DataItemSequence& req_seq_param, ::plpbus_orb::DataItemSequence_out rsp_seq_param)
+{
+ _0RL_cd_00d6793dc2c2a80c_c0000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_d0000000, "send_dataitem_message_and_wait_response", 40);
+ _call_desc.arg_0 = &(::plpbus_orb::DataItemSequence&) req_seq_param;
+
+ _invoke(_call_desc);
+ rsp_seq_param = _call_desc.arg_1._retn();
+ return _call_desc.result;
+
+
+}
+// Proxy call descriptor class. Mangled signature:
+// void_i_cplpbus__orb_mOrbClient_i_cstring_i_cunsigned_pshort
+class _0RL_cd_00d6793dc2c2a80c_e0000000
+ : public omniCallDescriptor
+{
+public:
+ inline _0RL_cd_00d6793dc2c2a80c_e0000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):
+ omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)
+ {
+
+ }
+
+ void marshalArguments(cdrStream&);
+ void unmarshalArguments(cdrStream&);
+
+
+
+ static const char* const _user_exns[];
+
+ plpbus_orb::OrbClient_var arg_0_;
+ plpbus_orb::OrbClient_ptr arg_0;
+ ::CORBA::String_var arg_1_;
+ const char* arg_1;
+ ::CORBA::UShort arg_2;
+};
+
+void _0RL_cd_00d6793dc2c2a80c_e0000000::marshalArguments(cdrStream& _n)
+{
+ plpbus_orb::OrbClient::_marshalObjRef(arg_0,_n);
+ _n.marshalString(arg_1,0);
+ arg_2 >>= _n;
+
+}
+
+void _0RL_cd_00d6793dc2c2a80c_e0000000::unmarshalArguments(cdrStream& _n)
+{
+ arg_0_ = plpbus_orb::OrbClient::_unmarshalObjRef(_n);
+ arg_0 = arg_0_.in();
+ arg_1_ = _n.unmarshalString(0);
+ arg_1 = arg_1_.in();
+ (::CORBA::UShort&)arg_2 <<= _n;
+
+}
+
+const char* const _0RL_cd_00d6793dc2c2a80c_e0000000::_user_exns[] = {
+ 0
+};
+
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_f0000000(omniCallDescriptor* cd, omniServant* svnt)
+{
+ _0RL_cd_00d6793dc2c2a80c_e0000000* tcd = (_0RL_cd_00d6793dc2c2a80c_e0000000*)cd;
+ plpbus_orb::_impl_OrbServer* impl = (plpbus_orb::_impl_OrbServer*) svnt->_ptrToInterface(plpbus_orb::OrbServer::_PD_repoId);
+ impl->add_event_listener(tcd->arg_0, tcd->arg_1, tcd->arg_2);
+
+
+}
+
+void plpbus_orb::_objref_OrbServer::add_event_listener(::plpbus_orb::OrbClient_ptr callback_client_param, const char* msg_param, ::CORBA::UShort period_secs)
+{
+ _0RL_cd_00d6793dc2c2a80c_e0000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_f0000000, "add_event_listener", 19);
+ _call_desc.arg_0 = callback_client_param;
+ _call_desc.arg_1 = msg_param;
+ _call_desc.arg_2 = period_secs;
+
+ _invoke(_call_desc);
+
+
+
+}
+// Proxy call descriptor class. Mangled signature:
+// void
+class _0RL_cd_00d6793dc2c2a80c_01000000
+ : public omniCallDescriptor
+{
+public:
+ inline _0RL_cd_00d6793dc2c2a80c_01000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):
+ omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)
+ {
+
+ }
+
+
+
+
+ static const char* const _user_exns[];
+
+
+};
+
+const char* const _0RL_cd_00d6793dc2c2a80c_01000000::_user_exns[] = {
+ 0
+};
+
+// Local call call-back function.
+static void
+_0RL_lcfn_00d6793dc2c2a80c_11000000(omniCallDescriptor*, omniServant* svnt)
+{
+
+ plpbus_orb::_impl_OrbServer* impl = (plpbus_orb::_impl_OrbServer*) svnt->_ptrToInterface(plpbus_orb::OrbServer::_PD_repoId);
+ impl->shutdown();
+
+
+}
+
+void plpbus_orb::_objref_OrbServer::shutdown()
+{
+ _0RL_cd_00d6793dc2c2a80c_01000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_11000000, "shutdown", 9);
+
+
+ _invoke(_call_desc);
+
+
+
+}
+plpbus_orb::_pof_OrbServer::~_pof_OrbServer() {}
+
+
+omniObjRef*
+plpbus_orb::_pof_OrbServer::newObjRef(omniIOR* ior, omniIdentity* id)
+{
+ return new ::plpbus_orb::_objref_OrbServer(ior, id);
+}
+
+
+::CORBA::Boolean
+plpbus_orb::_pof_OrbServer::is_a(const char* id) const
+{
+ if( omni::ptrStrMatch(id, ::plpbus_orb::OrbServer::_PD_repoId) )
+ return 1;
+
+ return 0;
+}
+
+const plpbus_orb::_pof_OrbServer _the_pof_plpbus__orb_mOrbServer;
+
+plpbus_orb::_impl_OrbServer::~_impl_OrbServer() {}
+
+
+::CORBA::Boolean
+plpbus_orb::_impl_OrbServer::_dispatch(omniCallHandle& _handle)
+{
+ const char* op = _handle.operation_name();
+
+ if( omni::strMatch(op, "send_message_and_request_response") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_60000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_70000000, "send_message_and_request_response", 34, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+ if( omni::strMatch(op, "send_dataitem_message_and_request_response") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_80000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_90000000, "send_dataitem_message_and_request_response", 43, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+ if( omni::strMatch(op, "send_message_and_wait_response") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_a0000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_b0000000, "send_message_and_wait_response", 31, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+ if( omni::strMatch(op, "send_dataitem_message_and_wait_response") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_c0000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_d0000000, "send_dataitem_message_and_wait_response", 40, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+ if( omni::strMatch(op, "add_event_listener") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_e0000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_f0000000, "add_event_listener", 19, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+ if( omni::strMatch(op, "shutdown") ) {
+
+ _0RL_cd_00d6793dc2c2a80c_01000000 _call_desc(_0RL_lcfn_00d6793dc2c2a80c_11000000, "shutdown", 9, 1);
+
+ _handle.upcall(this,_call_desc);
+ return 1;
+ }
+
+
+ return 0;
+}
+
+void*
+plpbus_orb::_impl_OrbServer::_ptrToInterface(const char* id)
+{
+ if( id == ::plpbus_orb::OrbServer::_PD_repoId )
+ return (::plpbus_orb::_impl_OrbServer*) this;
+
+ if( id == ::CORBA::Object::_PD_repoId )
+ return (void*) 1;
+
+ if( omni::strMatch(id, ::plpbus_orb::OrbServer::_PD_repoId) )
+ return (::plpbus_orb::_impl_OrbServer*) this;
+
+ if( omni::strMatch(id, ::CORBA::Object::_PD_repoId) )
+ return (void*) 1;
+ return 0;
+}
+
+const char*
+plpbus_orb::_impl_OrbServer::_mostDerivedRepoId()
+{
+ return ::plpbus_orb::OrbServer::_PD_repoId;
+}
+
+POA_plpbus_orb::OrbClient::~OrbClient() {}
+
+POA_plpbus_orb::OrbServer::~OrbServer() {}
+
--- /dev/null
+/*
+ * server_thread.cc
+ *
+ * Created on: Jun 2, 2010
+ * Author: lamikr
+ */
+
+//////////////////////////////////////////////////////////////////////
+
+// A thread object used to server clients registered
+// using the plpbus_orb::OrbServer::register() method.
+#include "BusServer.hh"
+#include "ServerEventThread.hh"
+using namespace std;
+using namespace plpbus;
+
+ServerEventThread::ServerEventThread(plpbus_orb::OrbClient_ptr client,
+ const char *msg,
+ int period,
+ OrbServerImpl *server_obj)
+{
+ this->_orb_client = plpbus_orb::OrbClient::_duplicate(client);
+ this->_orb_msg = msg;
+ this->_interval = period;
+ this->_server_obj = server_obj;
+ _orb_client->receive_event_message("event_listener_started");
+}
+
+void ServerEventThread::run(void* arg)
+{
+ try {
+ while(_server_obj->is_shutdown_pending() == 0) {
+ omni_thread::sleep(_interval);
+ _orb_client->receive_event_message(_orb_msg);
+ }
+ }
+ catch(...) {
+ cout << "server_thread failed, could not connect to client!" << endl;
+ }
+ cout << "server_thread, closing" << endl;
+ _server_obj->server_thread_closed();
+}
--- /dev/null
+/*
+ * server_thread.hh
+ *
+ * Created on: Jun 2, 2010
+ * Author: lamikr
+ */
+
+#ifndef SERVEREVENTTHREAD_HH_
+#define SERVEREVENTTHREAD_HH_
+
+#include <iostream>
+#include <omniORB4/CORBA.h>
+
+#include "RequestResponseBus.hh"
+#include "OrbServerImpl.hh"
+
+namespace plpbus {
+ class ServerEventThread : public omni_thread {
+ public:
+ ServerEventThread(plpbus_orb::OrbClient_ptr client,
+ const char *msg,
+ int period,
+ plpbus::OrbServerImpl *server_obj);
+ virtual void run(void* arg);
+
+ private:
+ plpbus_orb::OrbClient_var _orb_client;
+ CORBA::String_var _orb_msg;
+ int _interval;
+ plpbus::OrbServerImpl *_server_obj;
+ };
+}
+
+#endif /* SERVEREVENTTHREAD_HH_ */
--- /dev/null
+bin_PROGRAMS = test_admin \
+ test_client \
+ test_server
+
+test_admin_SOURCES = test_admin.cc
+test_admin_LDADD = $(SRC_LIBS) ../src/.libs/libplpbus.a
+
+test_client_SOURCES = test_client.cc
+test_client_LDADD = $(SRC_LIBS) ../src/.libs/libplpbus.a
+
+test_server_SOURCES = test_server.cc
+test_server_LDADD = $(SRC_LIBS) ../src/.libs/libplpbus.a
+
+AM_CPPFLAGS = $(SRC_CFLAGS) -I../src
+
+DISTCLEANFILES = Makefile.in
--- /dev/null
+/*
+ * test_admin.cc
+ *
+ * Created on: Jun 7, 2010
+ * Author: lamikr
+ */
+#include "plpbus/BusClient.hh"
+
+using namespace std;
+using namespace plpbus;
+
+int main(int argc, char** argv)
+{
+ BusClient *client;
+
+ cout << "hello world" << endl;
+ client = new plpbus::BusClient();
+ client->init(argv[1]);
+ client->request_shutdown();
+ return 0;
+}
--- /dev/null
+/*
+ * test_client.cc
+ *
+ * Created on: Jun 9, 2010
+ * Author: lamikr
+ */
+
+#include "plpbus/BusServer.hh"
+#include "plpbus/BusClient.hh"
+#include "plpbus/BusMessage.hh"
+
+using namespace std;
+using namespace plpbus;
+
+class ClientListenerImpl : public IClientListener
+{
+ public:
+ inline ClientListenerImpl() {}
+ virtual ~ClientListenerImpl() {}
+ virtual int response_received(const char *msg_rsp_param);
+ virtual int response_received(const BusMessage *msg_rsp_param);
+ virtual int event_received(const char *event_param);
+ virtual int event_received(const BusMessage *event_param);
+};
+
+int ClientListenerImpl::response_received(const char *msg_rsp_param) {
+ cout << "response_received(char *: " << msg_rsp_param << ") " << endl;
+ return 0;
+}
+
+int ClientListenerImpl::response_received(const BusMessage *msg_rsp_param) {
+ cout << "response_received(BusMessage *) " << endl;
+ return 0;
+}
+
+int ClientListenerImpl::event_received(const char *event_param) {
+ cout << "event_received(char *" << event_param << ") " << endl;
+ return 0;
+}
+
+int ClientListenerImpl::event_received(const BusMessage *event_param) {
+ cout << "event_received(BusMessage *)" << endl;
+ return 0;
+}
+
+int main(int argc, char** argv)
+{
+ BusClient *client;
+ ClientListenerImpl *lstnr;
+ int err_flg;
+ BusMessage *busmsg;
+
+ if (argc >= 3) {
+ client = new BusClient();
+ lstnr = new ClientListenerImpl();
+ err_flg = client->init(argv[1]);
+ if (err_flg == 0) {
+ cout << "init success" << endl;
+ err_flg = client->add_client_listener(lstnr);
+ if (err_flg == 0) {
+ int err_flg;
+ char *rsp;
+
+ busmsg = new BusMessage();
+ busmsg->add_string_parameter("a", "hello");
+ busmsg->add_string_parameter("b", "world");
+ client->send_message_and_request_response(busmsg);
+
+ rsp = NULL;
+ err_flg = client->send_message_and_wait_response(argv[2], &rsp);
+ cout << "rsp: " << rsp << endl;
+ err_flg = client->send_message_and_request_response(argv[2]);
+ if (err_flg == 0) {
+ cout << "request message send successfully" << endl;
+ }
+ sleep(10);
+ }
+ else {
+ cout << "client failed to add response listener" << endl;
+ }
+ }
+ else {
+ cout << "client failed to init" << endl;
+ }
+ }
+ else {
+ cout << "usage: <server_name> <message text>" << endl;
+ }
+ return 0;
+}
--- /dev/null
+#include "plpbus/BusServer.hh"
+
+using namespace std;
+using namespace plpbus;
+
+class ServerListenerImpl : public IServerListener
+{
+ public:
+ inline ServerListenerImpl() {}
+ virtual ~ServerListenerImpl() {}
+ virtual int request_received(const char *msg_req, char **msg_rsp);
+ virtual int request_received(const BusMessage *msg_req, BusMessage **msg_rsp);
+};
+
+int ServerListenerImpl::request_received(const char *msg_req_param, char **msg_rsp_param) {
+ cout << "request_received(char *" << msg_req_param << ") " << endl;
+ *msg_rsp_param = strdup("jee");
+ return 0;
+}
+
+int ServerListenerImpl::request_received(const BusMessage *msg_req_param, BusMessage **msg_rsp_param) {
+ cout << "request_received(BusMessage *) " << endl;
+ *msg_rsp_param = new BusMessage();
+ double dbl = (double)1.0;
+ (*msg_rsp_param)->add_double_parameter("rsp_param_double", dbl);
+ return 0;
+}
+
+int main(int argc, char** argv)
+{
+ BusServer *server;
+ ServerListenerImpl *listener;
+
+ if (argc >= 2) {
+ cout << "starting server" << endl;
+ server = new BusServer();
+ server->init();
+ listener = new ServerListenerImpl();
+ server->add_server_listener(listener);
+ server->launch(argv[1]);
+ }
+ else {
+ cout << "usage: give server name as a parameter" << endl;
+ }
+ return 0;
+}