incubator-celix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From abroekh...@apache.org
Subject svn commit: r1198846 [1/4] - in /incubator/celix/trunk: ./ framework/private/src/ remote_services/ remote_services/calc_shell/ remote_services/calc_shell/MANIFEST/ remote_services/calc_shell/private/ remote_services/calc_shell/private/include/ remote_s...
Date Mon, 07 Nov 2011 18:06:11 GMT
Author: abroekhuis
Date: Mon Nov  7 18:06:09 2011
New Revision: 1198846

URL: http://svn.apache.org/viewvc?rev=1198846&view=rev
Log:
Added initial remote services bundles

Added:
    incubator/celix/trunk/Remote Services Client.launch
    incubator/celix/trunk/Remote Services.launch
    incubator/celix/trunk/remote_services/
    incubator/celix/trunk/remote_services/CMakeLists.txt
    incubator/celix/trunk/remote_services/calc_shell/
    incubator/celix/trunk/remote_services/calc_shell/CMakeLists.txt
    incubator/celix/trunk/remote_services/calc_shell/MANIFEST/
    incubator/celix/trunk/remote_services/calc_shell/MANIFEST/MANIFEST.MF
    incubator/celix/trunk/remote_services/calc_shell/private/
    incubator/celix/trunk/remote_services/calc_shell/private/include/
    incubator/celix/trunk/remote_services/calc_shell/private/include/add_command.h
    incubator/celix/trunk/remote_services/calc_shell/private/include/sqrt_command.h
    incubator/celix/trunk/remote_services/calc_shell/private/include/sub_command.h
    incubator/celix/trunk/remote_services/calc_shell/private/src/
    incubator/celix/trunk/remote_services/calc_shell/private/src/add_command.c
    incubator/celix/trunk/remote_services/calc_shell/private/src/calc_shell_activator.c
    incubator/celix/trunk/remote_services/calc_shell/private/src/sqrt_command.c
    incubator/celix/trunk/remote_services/calc_shell/private/src/sub_command.c
    incubator/celix/trunk/remote_services/discovery/
    incubator/celix/trunk/remote_services/discovery/CMakeLists.txt
    incubator/celix/trunk/remote_services/discovery/MANIFEST/
    incubator/celix/trunk/remote_services/discovery/MANIFEST/MANIFEST.MF
    incubator/celix/trunk/remote_services/discovery/private/
    incubator/celix/trunk/remote_services/discovery/private/include/
    incubator/celix/trunk/remote_services/discovery/private/include/discovery.h
    incubator/celix/trunk/remote_services/discovery/private/src/
    incubator/celix/trunk/remote_services/discovery/private/src/discovery.c
    incubator/celix/trunk/remote_services/discovery/private/src/discovery_activator.c
    incubator/celix/trunk/remote_services/endpoint_listener/
    incubator/celix/trunk/remote_services/endpoint_listener/public/
    incubator/celix/trunk/remote_services/endpoint_listener/public/include/
    incubator/celix/trunk/remote_services/endpoint_listener/public/include/endpoint_listener.h
    incubator/celix/trunk/remote_services/example_endpoint/
    incubator/celix/trunk/remote_services/example_endpoint/CMakeLists.txt
    incubator/celix/trunk/remote_services/example_endpoint/MANIFEST/
    incubator/celix/trunk/remote_services/example_endpoint/MANIFEST/MANIFEST.MF
    incubator/celix/trunk/remote_services/example_endpoint/private/
    incubator/celix/trunk/remote_services/example_endpoint/private/include/
    incubator/celix/trunk/remote_services/example_endpoint/private/include/example_endpoint_impl.h
    incubator/celix/trunk/remote_services/example_endpoint/private/src/
    incubator/celix/trunk/remote_services/example_endpoint/private/src/example_endpoint_activator.c
    incubator/celix/trunk/remote_services/example_endpoint/private/src/example_endpoint_impl.c
    incubator/celix/trunk/remote_services/example_proxy/
    incubator/celix/trunk/remote_services/example_proxy/CMakeLists.txt
    incubator/celix/trunk/remote_services/example_proxy/MANIFEST/
    incubator/celix/trunk/remote_services/example_proxy/MANIFEST/MANIFEST.MF
    incubator/celix/trunk/remote_services/example_proxy/private/
    incubator/celix/trunk/remote_services/example_proxy/private/include/
    incubator/celix/trunk/remote_services/example_proxy/private/include/example_proxy_impl.h
    incubator/celix/trunk/remote_services/example_proxy/private/src/
    incubator/celix/trunk/remote_services/example_proxy/private/src/example_proxy_activator.c
    incubator/celix/trunk/remote_services/example_proxy/private/src/example_proxy_impl.c
    incubator/celix/trunk/remote_services/example_service/
    incubator/celix/trunk/remote_services/example_service/CMakeLists.txt
    incubator/celix/trunk/remote_services/example_service/MANIFEST/
    incubator/celix/trunk/remote_services/example_service/MANIFEST/MANIFEST.MF
    incubator/celix/trunk/remote_services/example_service/private/
    incubator/celix/trunk/remote_services/example_service/private/include/
    incubator/celix/trunk/remote_services/example_service/private/include/example_impl.h
    incubator/celix/trunk/remote_services/example_service/private/src/
    incubator/celix/trunk/remote_services/example_service/private/src/example_activator.c
    incubator/celix/trunk/remote_services/example_service/private/src/example_impl.c
    incubator/celix/trunk/remote_services/example_service/public/
    incubator/celix/trunk/remote_services/example_service/public/include/
    incubator/celix/trunk/remote_services/example_service/public/include/example_service.h
    incubator/celix/trunk/remote_services/remote_service_admin/
    incubator/celix/trunk/remote_services/remote_service_admin/CMakeLists.txt
    incubator/celix/trunk/remote_services/remote_service_admin/MANIFEST/
    incubator/celix/trunk/remote_services/remote_service_admin/MANIFEST/MANIFEST.MF
    incubator/celix/trunk/remote_services/remote_service_admin/private/
    incubator/celix/trunk/remote_services/remote_service_admin/private/include/
    incubator/celix/trunk/remote_services/remote_service_admin/private/include/export_registration_impl.h
    incubator/celix/trunk/remote_services/remote_service_admin/private/include/import_registration_impl.h
    incubator/celix/trunk/remote_services/remote_service_admin/private/include/mongoose.h
    incubator/celix/trunk/remote_services/remote_service_admin/private/include/remote_service_admin_impl.h
    incubator/celix/trunk/remote_services/remote_service_admin/private/src/
    incubator/celix/trunk/remote_services/remote_service_admin/private/src/export_registration_impl.c
    incubator/celix/trunk/remote_services/remote_service_admin/private/src/import_registration_impl.c
    incubator/celix/trunk/remote_services/remote_service_admin/private/src/mongoose.c
    incubator/celix/trunk/remote_services/remote_service_admin/private/src/remote_service_admin_activator.c
    incubator/celix/trunk/remote_services/remote_service_admin/private/src/remote_service_admin_impl.c
    incubator/celix/trunk/remote_services/remote_service_admin/public/
    incubator/celix/trunk/remote_services/remote_service_admin/public/include/
    incubator/celix/trunk/remote_services/remote_service_admin/public/include/remote_constants.h
    incubator/celix/trunk/remote_services/remote_service_admin/public/include/remote_endpoint.h
    incubator/celix/trunk/remote_services/remote_service_admin/public/include/remote_endpoint_impl.h
    incubator/celix/trunk/remote_services/remote_service_admin/public/include/remote_proxy.h
    incubator/celix/trunk/remote_services/remote_service_admin/public/include/remote_service_admin.h
    incubator/celix/trunk/remote_services/topology_manager/
    incubator/celix/trunk/remote_services/topology_manager/CMakeLists.txt
    incubator/celix/trunk/remote_services/topology_manager/MANIFEST/
    incubator/celix/trunk/remote_services/topology_manager/MANIFEST/MANIFEST.MF
    incubator/celix/trunk/remote_services/topology_manager/private/
    incubator/celix/trunk/remote_services/topology_manager/private/include/
    incubator/celix/trunk/remote_services/topology_manager/private/include/topology_manager.h
    incubator/celix/trunk/remote_services/topology_manager/private/src/
    incubator/celix/trunk/remote_services/topology_manager/private/src/activator.c
    incubator/celix/trunk/remote_services/topology_manager/private/src/topology_manager.c
Modified:
    incubator/celix/trunk/.cproject
    incubator/celix/trunk/CMakeLists.txt
    incubator/celix/trunk/framework/private/src/service_reference.c

Modified: incubator/celix/trunk/.cproject
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/.cproject?rev=1198846&r1=1198845&r2=1198846&view=diff
==============================================================================
--- incubator/celix/trunk/.cproject (original)
+++ incubator/celix/trunk/.cproject Mon Nov  7 18:06:09 2011
@@ -116,7 +116,6 @@
 			</target>
 			<target name="run cmake" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 				<buildCommand>cmake</buildCommand>
-				<buildArguments/>
 				<buildTarget>-E chdir ${workspace_loc:/celix}/build cmake -G "Unix Makefiles" ../</buildTarget>
 				<stopOnError>true</stopOnError>
 				<useDefaultCommand>false</useDefaultCommand>
@@ -178,6 +177,14 @@
 				<useDefaultCommand>true</useDefaultCommand>
 				<runAllBuilders>true</runAllBuilders>
 			</target>
+			<target name="remote services" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
+				<buildCommand>make</buildCommand>
+				<buildArguments>-C ${workspace_loc:/celix}/build/remote_services</buildArguments>
+				<buildTarget>all</buildTarget>
+				<stopOnError>true</stopOnError>
+				<useDefaultCommand>false</useDefaultCommand>
+				<runAllBuilders>true</runAllBuilders>
+			</target>
 		</buildTargets>
 	</storageModule>
 </cproject>

Modified: incubator/celix/trunk/CMakeLists.txt
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/CMakeLists.txt?rev=1198846&r1=1198845&r2=1198846&view=diff
==============================================================================
--- incubator/celix/trunk/CMakeLists.txt (original)
+++ incubator/celix/trunk/CMakeLists.txt Mon Nov  7 18:06:09 2011
@@ -57,5 +57,7 @@ add_subdirectory(log_writer)
 
 add_subdirectory(examples)
 
+add_subdirectory(remote_services)
+
 include(target.cmake)
 #enable_testing()

Added: incubator/celix/trunk/Remote Services Client.launch
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/Remote%20Services%20Client.launch?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/Remote Services Client.launch (added)
+++ incubator/celix/trunk/Remote Services Client.launch Mon Nov  7 18:06:09 2011
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.cdt.launch.applicationLaunchType">
+<booleanAttribute key="org.eclipse.cdt.debug.mi.core.AUTO_SOLIB" value="true"/>
+<listAttribute key="org.eclipse.cdt.debug.mi.core.AUTO_SOLIB_LIST"/>
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.DEBUG_NAME" value="gdb"/>
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.GDB_INIT" value=".gdbinit"/>
+<listAttribute key="org.eclipse.cdt.debug.mi.core.SOLIB_PATH"/>
+<booleanAttribute key="org.eclipse.cdt.debug.mi.core.STOP_ON_SOLIB_EVENTS" value="false"/>
+<booleanAttribute key="org.eclipse.cdt.debug.mi.core.breakpointsFullPath" value="false"/>
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.commandFactory" value="org.eclipse.cdt.debug.mi.core.standardMacOSCommandFactory"/>
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.protocol" value="mi"/>
+<booleanAttribute key="org.eclipse.cdt.debug.mi.core.verboseMode" value="false"/>
+<booleanAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB" value="true"/>
+<listAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB_LIST"/>
+<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="gdb"/>
+<booleanAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_ON_FORK" value="false"/>
+<stringAttribute key="org.eclipse.cdt.dsf.gdb.GDB_INIT" value=".gdbinit"/>
+<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="false"/>
+<booleanAttribute key="org.eclipse.cdt.dsf.gdb.REVERSE" value="false"/>
+<listAttribute key="org.eclipse.cdt.dsf.gdb.SOLIB_PATH"/>
+<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
+<booleanAttribute key="org.eclipse.cdt.dsf.gdb.internal.ui.launching.LocalApplicationCDebuggerTab.DEFAULTS_SET" value="true"/>
+<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="0"/>
+<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
+<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_ID" value="org.eclipse.cdt.debug.mi.core.CDebuggerNew"/>
+<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
+<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
+<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
+<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
+<booleanAttribute key="org.eclipse.cdt.launch.ENABLE_REGISTER_BOOKKEEPING" value="false"/>
+<booleanAttribute key="org.eclipse.cdt.launch.ENABLE_VARIABLE_BOOKKEEPING" value="false"/>
+<stringAttribute key="org.eclipse.cdt.launch.FORMAT" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&lt;contentList&gt;&lt;content id=&quot;userData-userData-bundleActivator_stop-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;userData-fw_startBundle-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;content id=&quot;userData-data-bundleActivator_start-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;userData-*userData-userData-bundleActivator_create-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;*userData-userData-bundleActivator_create-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;content id=&quot;userData-userData-fw_startBundle-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;key-hashMapIterator_remove-(cast)&quot; val=&quot;char *&quot;/&gt;&lt;content id=&quot;componentData-bundleActivator_create-(cast)&quot; val=&quo
 t;log_writer_t&quot;/&gt;&lt;content id=&quot;userData-bundleActivator_stop-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;content id=&quot;value-filter-filter_match-(cast)&quot; val=&quot;char *&quot;/&gt;&lt;/contentList&gt;"/>
+<stringAttribute key="org.eclipse.cdt.launch.GLOBAL_VARIABLES" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;globalVariableList/&gt;&#10;"/>
+<stringAttribute key="org.eclipse.cdt.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;memoryBlockExpressionList/&gt;&#10;"/>
+<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="build/launcher/launcher"/>
+<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="celix"/>
+<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="cdt.managedbuild.toolchain.gnu.macosx.base.1808592147"/>
+<stringAttribute key="org.eclipse.cdt.launch.WORKING_DIRECTORY" value="${workspace_loc:celix/build/remote_services/deploy/remote-services-client}"/>
+<booleanAttribute key="org.eclipse.cdt.launch.ui.ApplicationCDebuggerTab.DEFAULTS_SET" value="true"/>
+<booleanAttribute key="org.eclipse.cdt.launch.use_terminal" value="true"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/celix"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<mapAttribute key="org.eclipse.debug.core.environmentVariables">
+<mapEntry key="DYLD_LIBRARY_PATH" value="${workspace_loc:celix/build/framework}:${workspace_loc:celix/build/utils}"/>
+<mapEntry key="RSA_PORT" value="8081"/>
+</mapAttribute>
+<mapAttribute key="org.eclipse.debug.core.preferred_launchers">
+<mapEntry key="[debug]" value="org.eclipse.cdt.cdi.launch.localCLaunch"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;memoryBlockExpressionList context=&quot;reserved-for-future-use&quot;/&gt;&#10;"/>
+</launchConfiguration>

Added: incubator/celix/trunk/Remote Services.launch
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/Remote%20Services.launch?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/Remote Services.launch (added)
+++ incubator/celix/trunk/Remote Services.launch Mon Nov  7 18:06:09 2011
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.cdt.launch.applicationLaunchType">
+<booleanAttribute key="org.eclipse.cdt.debug.mi.core.AUTO_SOLIB" value="true"/>
+<listAttribute key="org.eclipse.cdt.debug.mi.core.AUTO_SOLIB_LIST"/>
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.DEBUG_NAME" value="gdb"/>
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.GDB_INIT" value=".gdbinit"/>
+<listAttribute key="org.eclipse.cdt.debug.mi.core.SOLIB_PATH"/>
+<booleanAttribute key="org.eclipse.cdt.debug.mi.core.STOP_ON_SOLIB_EVENTS" value="false"/>
+<booleanAttribute key="org.eclipse.cdt.debug.mi.core.breakpointsFullPath" value="false"/>
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.commandFactory" value="org.eclipse.cdt.debug.mi.core.standardMacOSCommandFactory"/>
+<stringAttribute key="org.eclipse.cdt.debug.mi.core.protocol" value="mi"/>
+<booleanAttribute key="org.eclipse.cdt.debug.mi.core.verboseMode" value="false"/>
+<booleanAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB" value="true"/>
+<listAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB_LIST"/>
+<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="gdb"/>
+<booleanAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_ON_FORK" value="false"/>
+<stringAttribute key="org.eclipse.cdt.dsf.gdb.GDB_INIT" value=".gdbinit"/>
+<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="false"/>
+<booleanAttribute key="org.eclipse.cdt.dsf.gdb.REVERSE" value="false"/>
+<listAttribute key="org.eclipse.cdt.dsf.gdb.SOLIB_PATH"/>
+<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
+<booleanAttribute key="org.eclipse.cdt.dsf.gdb.internal.ui.launching.LocalApplicationCDebuggerTab.DEFAULTS_SET" value="true"/>
+<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="0"/>
+<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
+<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_ID" value="org.eclipse.cdt.debug.mi.core.CDebuggerNew"/>
+<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
+<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
+<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
+<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
+<booleanAttribute key="org.eclipse.cdt.launch.ENABLE_REGISTER_BOOKKEEPING" value="false"/>
+<booleanAttribute key="org.eclipse.cdt.launch.ENABLE_VARIABLE_BOOKKEEPING" value="false"/>
+<stringAttribute key="org.eclipse.cdt.launch.FORMAT" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&lt;contentList&gt;&lt;content id=&quot;userData-bundleActivator_stop-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;content id=&quot;*table-table-exportedServices-admin-activator-bundleActivator_stop-(cast_to_array)&quot; val=&quot;0:1&quot;/&gt;&lt;content id=&quot;componentData-bundleActivator_create-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;key-hashMapIterator_remove-(cast)&quot; val=&quot;char *&quot;/&gt;&lt;content id=&quot;userData-userData-fw_startBundle-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;*userData-userData-bundleActivator_create-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;content id=&quot;userData-*userData-userData-bundleActivator_create-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;userData-data-bundleAct
 ivator_start-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;userData-fw_startBundle-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;content id=&quot;userData-userData-bundleActivator_stop-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;/contentList&gt;"/>
+<stringAttribute key="org.eclipse.cdt.launch.GLOBAL_VARIABLES" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;globalVariableList/&gt;&#10;"/>
+<stringAttribute key="org.eclipse.cdt.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;memoryBlockExpressionList/&gt;&#10;"/>
+<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="build/launcher/launcher"/>
+<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="celix"/>
+<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="cdt.managedbuild.toolchain.gnu.macosx.base.1808592147"/>
+<stringAttribute key="org.eclipse.cdt.launch.WORKING_DIRECTORY" value="${workspace_loc:celix/build/remote_services/deploy/remote-services}"/>
+<booleanAttribute key="org.eclipse.cdt.launch.ui.ApplicationCDebuggerTab.DEFAULTS_SET" value="true"/>
+<booleanAttribute key="org.eclipse.cdt.launch.use_terminal" value="true"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/celix"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<mapAttribute key="org.eclipse.debug.core.environmentVariables">
+<mapEntry key="DYLD_LIBRARY_PATH" value="${workspace_loc:celix/build/framework}:${workspace_loc:celix/build/utils}"/>
+<mapEntry key="RSA_PORT" value="8080"/>
+</mapAttribute>
+<mapAttribute key="org.eclipse.debug.core.preferred_launchers">
+<mapEntry key="[debug]" value="org.eclipse.cdt.cdi.launch.localCLaunch"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;memoryBlockExpressionList context=&quot;reserved-for-future-use&quot;/&gt;&#10;"/>
+</launchConfiguration>

Modified: incubator/celix/trunk/framework/private/src/service_reference.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/service_reference.c?rev=1198846&r1=1198845&r2=1198846&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/service_reference.c (original)
+++ incubator/celix/trunk/framework/private/src/service_reference.c Mon Nov  7 18:06:09 2011
@@ -35,7 +35,11 @@ bool serviceReference_isAssignableTo(SER
 	if (requester == provider) {
 		return allow;
 	}
+<<<<<<< HEAD
 
+=======
+//
+>>>>>>> Added initial remote services bundles
 //	WIRE providerWire = module_getWire(bundle_getCurrentModule(provider), serviceName);
 //	WIRE requesterWire = module_getWire(bundle_getCurrentModule(requester), serviceName);
 //

Added: incubator/celix/trunk/remote_services/CMakeLists.txt
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/CMakeLists.txt?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/CMakeLists.txt (added)
+++ incubator/celix/trunk/remote_services/CMakeLists.txt Mon Nov  7 18:06:09 2011
@@ -0,0 +1,29 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+#add_subdirectory(mongoose)
+add_subdirectory(topology_manager)
+add_subdirectory(remote_service_admin)
+add_subdirectory(discovery)
+
+add_subdirectory(example_service)
+add_subdirectory(example_endpoint)
+add_subdirectory(example_proxy)
+add_subdirectory(calc_shell)
+
+deploy("remote-services" BUNDLES topology_manager remote_service_admin example example_endpoint discovery shell shell_tui log_service log_writer)
+deploy("remote-services-client" BUNDLES topology_manager remote_service_admin discovery example_proxy shell shell_tui log_service log_writer calc_shell)

Added: incubator/celix/trunk/remote_services/calc_shell/CMakeLists.txt
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/calc_shell/CMakeLists.txt?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/calc_shell/CMakeLists.txt (added)
+++ incubator/celix/trunk/remote_services/calc_shell/CMakeLists.txt Mon Nov  7 18:06:09 2011
@@ -0,0 +1,30 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+add_library(calc_shell SHARED
+	private/src/add_command 
+	private/src/sub_command
+	private/src/sqrt_command
+	private/src/calc_shell_activator
+)
+include_directories("${PROJECT_SOURCE_DIR}/remote_services/calc_shell/private/include")
+include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
+include_directories("${PROJECT_SOURCE_DIR}/remote_services/example_service/public/include")
+include_directories("${PROJECT_SOURCE_DIR}/shell")
+target_link_libraries(calc_shell framework)
+
+bundle(calc_shell)

Added: incubator/celix/trunk/remote_services/calc_shell/MANIFEST/MANIFEST.MF
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/calc_shell/MANIFEST/MANIFEST.MF?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/calc_shell/MANIFEST/MANIFEST.MF (added)
+++ incubator/celix/trunk/remote_services/calc_shell/MANIFEST/MANIFEST.MF Mon Nov  7 18:06:09 2011
@@ -0,0 +1,5 @@
+Bundle-SymbolicName: calc_shell
+Bundle-Version: 1.0.0
+library: calc_shell
+Export-Service: commandService
+Import-Service: commandService, example

Added: incubator/celix/trunk/remote_services/calc_shell/private/include/add_command.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/calc_shell/private/include/add_command.h?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/calc_shell/private/include/add_command.h (added)
+++ incubator/celix/trunk/remote_services/calc_shell/private/include/add_command.h Mon Nov  7 18:06:09 2011
@@ -0,0 +1,14 @@
+/*
+ * add_command.h
+ *
+ *  Created on: Oct 13, 2011
+ *      Author: alexander
+ */
+
+#ifndef ADD_COMMAND_H_
+#define ADD_COMMAND_H_
+
+COMMAND addCommand_create(BUNDLE_CONTEXT context);
+void addCommand_destroy(COMMAND command);
+
+#endif /* ADD_COMMAND_H_ */

Added: incubator/celix/trunk/remote_services/calc_shell/private/include/sqrt_command.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/calc_shell/private/include/sqrt_command.h?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/calc_shell/private/include/sqrt_command.h (added)
+++ incubator/celix/trunk/remote_services/calc_shell/private/include/sqrt_command.h Mon Nov  7 18:06:09 2011
@@ -0,0 +1,14 @@
+/*
+ * sqrt_command.h
+ *
+ *  Created on: Oct 13, 2011
+ *      Author: alexander
+ */
+
+#ifndef SQRT_COMMAND_H_
+#define SQRT_COMMAND_H_
+
+COMMAND sqrtCommand_create(BUNDLE_CONTEXT context);
+void sqrtCommand_destroy(COMMAND command);
+
+#endif /* SQRT_COMMAND_H_ */

Added: incubator/celix/trunk/remote_services/calc_shell/private/include/sub_command.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/calc_shell/private/include/sub_command.h?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/calc_shell/private/include/sub_command.h (added)
+++ incubator/celix/trunk/remote_services/calc_shell/private/include/sub_command.h Mon Nov  7 18:06:09 2011
@@ -0,0 +1,14 @@
+/*
+ * sub_command.h
+ *
+ *  Created on: Oct 13, 2011
+ *      Author: alexander
+ */
+
+#ifndef SUB_COMMAND_H_
+#define SUB_COMMAND_H_
+
+COMMAND subCommand_create(BUNDLE_CONTEXT context);
+void subCommand_destroy(COMMAND command);
+
+#endif /* SUB_COMMAND_H_ */

Added: incubator/celix/trunk/remote_services/calc_shell/private/src/add_command.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/calc_shell/private/src/add_command.c?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/calc_shell/private/src/add_command.c (added)
+++ incubator/celix/trunk/remote_services/calc_shell/private/src/add_command.c Mon Nov  7 18:06:09 2011
@@ -0,0 +1,101 @@
+/*
+ * add_command.c
+ *
+ *  Created on: Oct 13, 2011
+ *      Author: alexander
+ */
+
+#include <stdlib.h>
+#include <ctype.h>
+
+#include <apr_strings.h>
+
+#include "command_private.h"
+#include "array_list.h"
+#include "bundle_context.h"
+#include "add_command.h"
+#include "example_service.h"
+
+
+void addCommand_execute(COMMAND command, char * line, void (*out)(char *), void (*err)(char *));
+celix_status_t addCommand_isNumeric(COMMAND command, char *number, bool *ret);
+
+COMMAND addCommand_create(BUNDLE_CONTEXT context) {
+	apr_pool_t *pool;
+	bundleContext_getMemoryPool(context, &pool);
+
+    COMMAND command = (COMMAND) apr_palloc(pool, sizeof(*command));
+    if (command) {
+		command->bundleContext = context;
+		command->name = "add";
+		command->shortDescription = "add the given doubles";
+		command->usage = "add <double> <double>";
+		command->executeCommand = addCommand_execute;
+    }
+    return command;
+}
+
+void addCommand_destroy(COMMAND command) {
+}
+
+void addCommand_execute(COMMAND command, char *line, void (*out)(char *), void (*err)(char *)) {
+	celix_status_t status = CELIX_SUCCESS;
+    SERVICE_REFERENCE exampleService = NULL;
+
+    status = bundleContext_getServiceReference(command->bundleContext, (char *) EXAMPLE_SERVICE, &exampleService);
+    if (status == CELIX_SUCCESS) {
+    	char *token;
+		char *commandStr = apr_strtok(line, " ", &token);
+		char *aStr = apr_strtok(NULL, " ", &token);
+		bool numeric;
+		addCommand_isNumeric(command, aStr, &numeric);
+		if (aStr != NULL && numeric) {
+			char *bStr = apr_strtok(NULL, " ", &token);
+			addCommand_isNumeric(command, bStr, &numeric);
+			if (bStr != NULL && numeric) {
+				example_service_t example = NULL;
+				status = bundleContext_getService(command->bundleContext, exampleService, (void *) &example);
+				if (status == CELIX_SUCCESS) {
+					double a = atof(aStr);
+					double b = atof(bStr);
+					double result = 0;
+					status = example->add(example->example, a, b, &result);
+					if (status == CELIX_SUCCESS) {
+						char line[256];
+						sprintf(line, "ADD: %f + %f = %f\n", a, b, result);
+						out(line);
+					} else {
+						out("ADD: Unexpected exception in Calc service\n");
+					}
+				} else {
+					out("No calc service available\n");
+				}
+			} else {
+				out("ADD: Requires 2 numerical parameter\n");
+			}
+		} else {
+			out("ADD: Requires 2 numerical parameter\n");
+			status = CELIX_ILLEGAL_ARGUMENT;
+		}
+
+        double a;
+        double b;
+    } else {
+        out("No calc service available\n");
+    }
+
+    //return status;
+}
+
+celix_status_t addCommand_isNumeric(COMMAND command, char *number, bool *ret) {
+	celix_status_t status = CELIX_SUCCESS;
+	*ret = true;
+	while(*number) {
+		if(!isdigit(*number) && *number != '.') {
+			*ret = false;
+			break;
+		}
+		number++;
+	}
+	return status;
+}

Added: incubator/celix/trunk/remote_services/calc_shell/private/src/calc_shell_activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/calc_shell/private/src/calc_shell_activator.c?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/calc_shell/private/src/calc_shell_activator.c (added)
+++ incubator/celix/trunk/remote_services/calc_shell/private/src/calc_shell_activator.c Mon Nov  7 18:06:09 2011
@@ -0,0 +1,88 @@
+/*
+ * calc_shell_activator.c
+ *
+ *  Created on: Oct 13, 2011
+ *      Author: alexander
+ */
+#include <stdlib.h>
+#include <string.h>
+
+#include "bundle_context.h"
+#include "service_registration.h"
+
+#include "command_private.h"
+
+#include "add_command.h"
+#include "sub_command.h"
+#include "sqrt_command.h"
+
+struct activator {
+	SERVICE_REGISTRATION addCommand;
+	COMMAND addCmd;
+
+	SERVICE_REGISTRATION subCommand;
+	COMMAND subCmd;
+
+	SERVICE_REGISTRATION sqrtCommand;
+	COMMAND sqrtCmd;
+};
+
+celix_status_t bundleActivator_create(BUNDLE_CONTEXT context, void **userData) {
+	celix_status_t status = CELIX_SUCCESS;
+	apr_pool_t *pool = NULL;
+	status = bundleContext_getMemoryPool(context, &pool);
+	if (status == CELIX_SUCCESS) {
+		*userData = apr_palloc(pool, sizeof(struct activator));
+		if (!*userData) {
+			status = CELIX_ENOMEM;
+		} else {
+			((struct activator *) (*userData))->addCommand = NULL;
+			((struct activator *) (*userData))->subCommand = NULL;
+			((struct activator *) (*userData))->sqrtCommand = NULL;
+
+			((struct activator *) (*userData))->addCmd = NULL;
+			((struct activator *) (*userData))->subCmd = NULL;
+			((struct activator *) (*userData))->sqrtCmd = NULL;
+		}
+	}
+
+	return CELIX_SUCCESS;
+}
+
+celix_status_t bundleActivator_start(void * userData, BUNDLE_CONTEXT context) {
+    celix_status_t status = CELIX_SUCCESS;
+
+	struct activator * activator = (struct activator *) userData;
+
+	activator->addCmd = addCommand_create(context);
+	bundleContext_registerService(context, (char *) COMMAND_SERVICE_NAME, activator->addCmd, NULL, &activator->addCommand);
+
+	activator->subCmd = subCommand_create(context);
+	bundleContext_registerService(context, (char *) COMMAND_SERVICE_NAME, activator->subCmd, NULL, &activator->subCommand);
+
+	activator->sqrtCmd = sqrtCommand_create(context);
+	bundleContext_registerService(context, (char *) COMMAND_SERVICE_NAME, activator->sqrtCmd, NULL, &activator->sqrtCommand);
+
+	return status;
+}
+
+celix_status_t bundleActivator_stop(void * userData, BUNDLE_CONTEXT context) {
+    celix_status_t status = CELIX_SUCCESS;
+	struct activator * activator = (struct activator *) userData;
+	serviceRegistration_unregister(activator->addCommand);
+	serviceRegistration_unregister(activator->subCommand);
+	serviceRegistration_unregister(activator->sqrtCommand);
+
+	if (status == CELIX_SUCCESS) {
+        addCommand_destroy(activator->addCmd);
+        subCommand_destroy(activator->subCmd);
+        sqrtCommand_destroy(activator->sqrtCmd);
+	}
+
+	return status;
+}
+
+celix_status_t bundleActivator_destroy(void * userData, BUNDLE_CONTEXT context) {
+	return CELIX_SUCCESS;
+}
+

Added: incubator/celix/trunk/remote_services/calc_shell/private/src/sqrt_command.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/calc_shell/private/src/sqrt_command.c?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/calc_shell/private/src/sqrt_command.c (added)
+++ incubator/celix/trunk/remote_services/calc_shell/private/src/sqrt_command.c Mon Nov  7 18:06:09 2011
@@ -0,0 +1,96 @@
+/*
+ * sqrt_command.c
+ *
+ *  Created on: Oct 13, 2011
+ *      Author: alexander
+ */
+
+#include <stdlib.h>
+#include <ctype.h>
+
+#include <apr_strings.h>
+
+#include "command_private.h"
+#include "array_list.h"
+#include "bundle_context.h"
+#include "sqrt_command.h"
+#include "example_service.h"
+
+
+void sqrtCommand_execute(COMMAND command, char * line, void (*out)(char *), void (*err)(char *));
+celix_status_t sqrtCommand_isNumeric(COMMAND command, char *number, bool *ret);
+
+COMMAND sqrtCommand_create(BUNDLE_CONTEXT context) {
+	apr_pool_t *pool;
+	bundleContext_getMemoryPool(context, &pool);
+
+    COMMAND command = (COMMAND) apr_palloc(pool, sizeof(*command));
+    if (command) {
+		command->bundleContext = context;
+		command->name = "sqrt";
+		command->shortDescription = "calculates the square root of the given double";
+		command->usage = "sqrt <double>";
+		command->executeCommand = sqrtCommand_execute;
+    }
+    return command;
+}
+
+void sqrtCommand_destroy(COMMAND command) {
+}
+
+void sqrtCommand_execute(COMMAND command, char *line, void (*out)(char *), void (*err)(char *)) {
+	celix_status_t status = CELIX_SUCCESS;
+    SERVICE_REFERENCE exampleService = NULL;
+    apr_pool_t *memory_pool = NULL;
+    apr_pool_t *bundle_memory_pool = NULL;
+
+    status = bundleContext_getServiceReference(command->bundleContext, (char *) EXAMPLE_SERVICE, &exampleService);
+    if (status == CELIX_SUCCESS) {
+    	char *token;
+		char *commandStr = apr_strtok(line, " ", &token);
+		char *aStr = apr_strtok(NULL, " ", &token);
+		bool numeric;
+		sqrtCommand_isNumeric(command, aStr, &numeric);
+		if (aStr != NULL && numeric) {
+			example_service_t example = NULL;
+			status = bundleContext_getService(command->bundleContext, exampleService, (void *) &example);
+			if (status == CELIX_SUCCESS) {
+				double a = atof(aStr);
+				double result = 0;
+				status = example->sqrt(example->example, a, &result);
+				if (status == CELIX_SUCCESS) {
+					char line[256];
+					sprintf(line, "SQRT: sqrt %f = %f\n", a, result);
+					out(line);
+				} else {
+					out("SQRT: Unexpected exception in Calc service\n");
+				}
+			} else {
+				out("No calc service available\n");
+			}
+		} else {
+			out("SQRT: Requires 1 numerical parameter\n");
+			status = CELIX_ILLEGAL_ARGUMENT;
+		}
+
+        double a;
+        double b;
+    } else {
+        out("No calc service available\n");
+    }
+
+    //return status;
+}
+
+celix_status_t sqrtCommand_isNumeric(COMMAND command, char *number, bool *ret) {
+	celix_status_t status = CELIX_SUCCESS;
+	*ret = true;
+	while(*number) {
+		if(!isdigit(*number) && *number != '.') {
+			*ret = false;
+			break;
+		}
+		number++;
+	}
+	return status;
+}

Added: incubator/celix/trunk/remote_services/calc_shell/private/src/sub_command.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/calc_shell/private/src/sub_command.c?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/calc_shell/private/src/sub_command.c (added)
+++ incubator/celix/trunk/remote_services/calc_shell/private/src/sub_command.c Mon Nov  7 18:06:09 2011
@@ -0,0 +1,103 @@
+/*
+ * sub_command.c
+ *
+ *  Created on: Oct 13, 2011
+ *      Author: alexander
+ */
+
+#include <stdlib.h>
+#include <ctype.h>
+
+#include <apr_strings.h>
+
+#include "command_private.h"
+#include "array_list.h"
+#include "bundle_context.h"
+#include "sub_command.h"
+#include "example_service.h"
+
+
+void subCommand_execute(COMMAND command, char * line, void (*out)(char *), void (*err)(char *));
+celix_status_t subCommand_isNumeric(COMMAND command, char *number, bool *ret);
+
+COMMAND subCommand_create(BUNDLE_CONTEXT context) {
+	apr_pool_t *pool;
+	bundleContext_getMemoryPool(context, &pool);
+
+    COMMAND command = (COMMAND) apr_palloc(pool, sizeof(*command));
+    if (command) {
+		command->bundleContext = context;
+		command->name = "sub";
+		command->shortDescription = "subtract the given doubles";
+		command->usage = "sub <double> <double>";
+		command->executeCommand = subCommand_execute;
+    }
+    return command;
+}
+
+void subCommand_destroy(COMMAND command) {
+}
+
+void subCommand_execute(COMMAND command, char *line, void (*out)(char *), void (*err)(char *)) {
+	celix_status_t status = CELIX_SUCCESS;
+    SERVICE_REFERENCE exampleService = NULL;
+    apr_pool_t *memory_pool = NULL;
+    apr_pool_t *bundle_memory_pool = NULL;
+
+    status = bundleContext_getServiceReference(command->bundleContext, (char *) EXAMPLE_SERVICE, &exampleService);
+    if (status == CELIX_SUCCESS) {
+    	char *token;
+		char *commandStr = apr_strtok(line, " ", &token);
+		char *aStr = apr_strtok(NULL, " ", &token);
+		bool numeric;
+		subCommand_isNumeric(command, aStr, &numeric);
+		if (aStr != NULL && numeric) {
+			char *bStr = apr_strtok(NULL, " ", &token);
+			subCommand_isNumeric(command, bStr, &numeric);
+			if (bStr != NULL && numeric) {
+				example_service_t example = NULL;
+				status = bundleContext_getService(command->bundleContext, exampleService, (void *) &example);
+				if (status == CELIX_SUCCESS) {
+					double a = atof(aStr);
+					double b = atof(bStr);
+					double result = 0;
+					status = example->sub(example->example, a, b, &result);
+					if (status == CELIX_SUCCESS) {
+						char line[256];
+						sprintf(line, "SUB: %f - %f = %f\n", a, b, result);
+						out(line);
+					} else {
+						out("SUB: Unexpected exception in Calc service\n");
+					}
+				} else {
+					out("No calc service available\n");
+				}
+			} else {
+				out("SUB: Requires 2 numerical parameter\n");
+			}
+		} else {
+			out("SUB: Requires 2 numerical parameter\n");
+			status = CELIX_ILLEGAL_ARGUMENT;
+		}
+
+        double a;
+        double b;
+    } else {
+        out("No calc service available\n");
+    }
+
+    //return status;
+}
+
+celix_status_t subCommand_isNumeric(COMMAND command, char *number, bool *ret) {
+	celix_status_t status = CELIX_SUCCESS;
+	*ret = true;
+	while(*number) {
+		if(!isdigit(*number) && *number != '.') {
+			*ret = false;
+			break;
+		}
+		number++;
+	}
+	return status;
+}

Added: incubator/celix/trunk/remote_services/discovery/CMakeLists.txt
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/discovery/CMakeLists.txt?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/discovery/CMakeLists.txt (added)
+++ incubator/celix/trunk/remote_services/discovery/CMakeLists.txt Mon Nov  7 18:06:09 2011
@@ -0,0 +1,31 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+include_directories("/opt/local/include")
+include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
+include_directories("${PROJECT_SOURCE_DIR}/remote_services/discovery/private/include")
+include_directories("${PROJECT_SOURCE_DIR}/remote_services/endpoint_listener/public/include")
+include_directories("${PROJECT_SOURCE_DIR}/remote_services/remote_service_admin/public/include")
+
+link_directories("/opt/local/lib")
+add_library(discovery SHARED 
+	private/src/discovery 
+	private/src/discovery_activator
+)
+target_link_libraries(discovery framework slp.a)
+
+bundle(discovery)

Added: incubator/celix/trunk/remote_services/discovery/MANIFEST/MANIFEST.MF
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/discovery/MANIFEST/MANIFEST.MF?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/discovery/MANIFEST/MANIFEST.MF (added)
+++ incubator/celix/trunk/remote_services/discovery/MANIFEST/MANIFEST.MF Mon Nov  7 18:06:09 2011
@@ -0,0 +1,5 @@
+Bundle-SymbolicName: discovery
+Bundle-Version: 1.0.0
+library: discovery
+Export-Service: endpoint_listener
+Import-Service: endpoint_listener

Added: incubator/celix/trunk/remote_services/discovery/private/include/discovery.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/discovery/private/include/discovery.h?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/discovery/private/include/discovery.h (added)
+++ incubator/celix/trunk/remote_services/discovery/private/include/discovery.h Mon Nov  7 18:06:09 2011
@@ -0,0 +1,28 @@
+/*
+ * topology_manager.h
+ *
+ *  Created on: Sep 29, 2011
+ *      Author: alexander
+ */
+
+#ifndef DISCOVERY_H_
+#define DISCOVERY_H_
+
+#include "endpoint_listener.h"
+
+typedef struct discovery *discovery_t;
+
+celix_status_t discovery_create(apr_pool_t *pool, BUNDLE_CONTEXT context, discovery_t *discovery);
+
+celix_status_t discovery_endpointAdded(void *handle, endpoint_description_t endpoint, char *machtedFilter);
+celix_status_t discovery_endpointRemoved(void *handle, endpoint_description_t endpoint, char *machtedFilter);
+
+celix_status_t discovery_endpointListenerAdding(void * handle, SERVICE_REFERENCE reference, void **service);
+celix_status_t discovery_endpointListenerAdded(void * handle, SERVICE_REFERENCE reference, void * service);
+celix_status_t discovery_endpointListenerModified(void * handle, SERVICE_REFERENCE reference, void * service);
+celix_status_t discovery_endpointListenerRemoved(void * handle, SERVICE_REFERENCE reference, void * service);
+
+celix_status_t discovery_updateEndpointListener(discovery_t discovery, SERVICE_REFERENCE reference, endpoint_listener_t service);
+
+
+#endif /* DISCOVERY_H_ */

Added: incubator/celix/trunk/remote_services/discovery/private/src/discovery.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/discovery/private/src/discovery.c?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/discovery/private/src/discovery.c (added)
+++ incubator/celix/trunk/remote_services/discovery/private/src/discovery.c Mon Nov  7 18:06:09 2011
@@ -0,0 +1,228 @@
+/*
+ * discovery.c
+ *
+ *  Created on: Oct 4, 2011
+ *      Author: alexander
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <apr_strings.h>
+#include <slp.h>
+#include <unistd.h>
+
+#include "headers.h"
+#include "bundle_context.h"
+#include "array_list.h"
+
+#include "discovery.h"
+
+struct discovery {
+	BUNDLE_CONTEXT context;
+	apr_pool_t *pool;
+
+	HASH_MAP listenerReferences;
+	ARRAY_LIST endpoints;
+
+	bool running;
+	apr_thread_t *slpPoll;
+};
+
+celix_status_t discovery_informListener(discovery_t discovery, endpoint_listener_t listener, endpoint_description_t endpoint);
+
+celix_status_t discovery_addService(discovery_t discovery, endpoint_description_t endpoint);
+
+static void *APR_THREAD_FUNC discovery_pollSLP(apr_thread_t *thd, void *data);
+SLPBoolean discovery_pollSLPCallback(SLPHandle hslp, const char* srvurl, unsigned short lifetime, SLPError errcode, void* cookie);
+
+celix_status_t discovery_create(apr_pool_t *pool, BUNDLE_CONTEXT context, discovery_t *discovery) {
+	celix_status_t status = CELIX_SUCCESS;
+
+	*discovery = apr_palloc(pool, sizeof(**discovery));
+	if (!*discovery) {
+		status = CELIX_ENOMEM;
+	} else {
+		(*discovery)->context = context;
+		(*discovery)->pool = pool;
+		(*discovery)->listenerReferences = hashMap_create(NULL, NULL, NULL, NULL);
+		(*discovery)->endpoints = arrayList_create();
+		(*discovery)->running = true;
+
+		endpoint_description_t endpoint = apr_palloc(pool, sizeof(*endpoint));
+		endpoint->id = apr_pstrdup(pool, "http://localhost:8080/services/example/");
+		endpoint->serviceId = 42;
+		endpoint->service = "example";
+		discovery_addService(*discovery, endpoint);
+
+		apr_thread_create(&(*discovery)->slpPoll, NULL, discovery_pollSLP, *discovery, (*discovery)->pool);
+	}
+
+	return status;
+}
+
+celix_status_t discovery_addService(discovery_t discovery, endpoint_description_t endpoint) {
+	celix_status_t status = CELIX_SUCCESS;
+	printf("DISCOVERY: Service added\n");
+
+	arrayList_add(discovery->endpoints, endpoint);
+
+	// Inform listeners of new endpoint
+	HASH_MAP_ITERATOR iter = hashMapIterator_create(discovery->listenerReferences);
+	while (hashMapIterator_hasNext(iter)) {
+		HASH_MAP_ENTRY entry = hashMapIterator_nextEntry(iter);
+		SERVICE_REFERENCE reference = hashMapEntry_getKey(entry);
+		endpoint_listener_t listener = NULL;
+		bundleContext_getService(discovery->context, reference, (void**)&listener);
+		discovery_informListener(discovery, listener, endpoint);
+	}
+
+	return status;
+}
+
+celix_status_t discovery_informListener(discovery_t discovery, endpoint_listener_t listener, endpoint_description_t endpoint) {
+	celix_status_t status = CELIX_SUCCESS;
+	listener->endpointAdded(listener->handle, endpoint, NULL);
+	return status;
+}
+
+void MySLPRegReport(SLPHandle hslp, SLPError errcode, void* cookie)
+  {
+      /* return the error code in the cookie */
+
+      *(SLPError*)cookie = errcode;
+
+      printf("Error\n");
+
+      /* You could do something else here like print out    */
+      /* the errcode, etc.  Remember, as a general rule,    */
+      /* do not try to do too much in a callback because    */
+      /* it is being executed by the same thread that is    */
+      /* reading slp packets from the wire.                 */
+  }
+
+celix_status_t discovery_endpointAdded(void *handle, endpoint_description_t endpoint, char *machtedFilter) {
+	celix_status_t status = CELIX_SUCCESS;
+	printf("DISCOVERY: Endpoint added\n");
+	discovery_t discovery = handle;
+	SLPError err;
+	SLPError callbackerr;
+	SLPHandle slp;
+
+	//publish endpoint in slp
+
+	SLPOpen("en", SLP_FALSE, &slp);
+
+	err = SLPReg(slp, "service:osgi.remote://host:8081",
+			SLP_LIFETIME_MAXIMUM, 0, "", SLP_TRUE, MySLPRegReport, &callbackerr);
+
+	if ((err != SLP_OK) || (callbackerr != SLP_OK)) {
+		printf("Error registering service with slp %i\n", err);
+		return err;
+	}
+
+	return status;
+}
+
+celix_status_t discovery_endpointRemoved(void *handle, endpoint_description_t endpoint, char *machtedFilter) {
+	celix_status_t status = CELIX_SUCCESS;
+	printf("DISCOVERY: Endpoint removed\n");
+
+	//unpublish endpoint
+
+	return status;
+}
+
+celix_status_t discovery_endpointListenerAdding(void * handle, SERVICE_REFERENCE reference, void **service) {
+	celix_status_t status = CELIX_SUCCESS;
+	discovery_t discovery = handle;
+
+	bundleContext_getService(discovery->context, reference, service);
+
+	return status;
+}
+
+celix_status_t discovery_endpointListenerAdded(void * handle, SERVICE_REFERENCE reference, void * service) {
+	celix_status_t status = CELIX_SUCCESS;
+	discovery_t discovery = handle;
+	char *discoveryListener = properties_get(reference->registration->properties, "DISCOVERY");
+
+	if (discoveryListener != NULL && strcmp(discoveryListener, "true") == 0) {
+		printf("DISCOVERY: EndpointListener Ignored - Discovery listener\n");
+	} else {
+		printf("DISCOVERY: EndpointListener Added - Add Scope\n");
+		discovery_updateEndpointListener(discovery, reference, (endpoint_listener_t) service);
+	}
+
+	return status;
+}
+
+celix_status_t discovery_endpointListenerModified(void * handle, SERVICE_REFERENCE reference, void * service) {
+	celix_status_t status = CELIX_SUCCESS;
+	discovery_t discovery = handle;
+
+	printf("DISCOVERY: EndpointListener Modified - Update Scope\n");
+	discovery_updateEndpointListener(discovery, reference, (endpoint_listener_t) service);
+
+	return status;
+}
+
+celix_status_t discovery_updateEndpointListener(discovery_t discovery, SERVICE_REFERENCE reference, endpoint_listener_t service) {
+	celix_status_t status = CELIX_SUCCESS;
+	char *scope = "createScopeHere";
+
+	ARRAY_LIST scopes = hashMap_get(discovery->listenerReferences, reference);
+	if (scopes == NULL) {
+		scopes = arrayList_create();
+		hashMap_put(discovery->listenerReferences, reference, scopes);
+	}
+
+	if (!arrayList_contains(scopes, scope)) {
+		arrayList_add(scopes, scope);
+	}
+
+	int size = arrayList_size(discovery->endpoints);
+	int iter = 0;
+	for (iter = 0; iter < size; iter++) {
+		endpoint_description_t endpoint = arrayList_get(discovery->endpoints, iter);
+		discovery_informListener(discovery, service, endpoint);
+	}
+
+	return status;
+}
+
+celix_status_t discovery_endpointListenerRemoved(void * handle, SERVICE_REFERENCE reference, void * service) {
+	celix_status_t status = CELIX_SUCCESS;
+	discovery_t discovery = handle;
+
+	printf("DISCOVERY: EndpointListener Removed\n");
+	hashMap_remove(discovery->listenerReferences, reference);
+
+	return status;
+}
+
+static void *APR_THREAD_FUNC discovery_pollSLP(apr_thread_t *thd, void *data) {
+	discovery_t discovery = data;
+	SLPError err;
+	SLPError callbackerr;
+	SLPHandle slp;
+
+	SLPOpen("en", SLP_FALSE, &slp);
+
+	while (discovery->running) {
+		err = SLPFindSrvs(slp, "osgi.remote", 0, 0, discovery_pollSLPCallback, &callbackerr);
+		sleep(5);
+	}
+
+	return NULL;
+}
+
+SLPBoolean discovery_pollSLPCallback(SLPHandle hslp, const char* srvurl, unsigned short lifetime, SLPError errcode, void* cookie) {
+	if (errcode == SLP_OK || errcode == SLP_LAST_CALL) {
+		printf("Service URL     = %s\n", srvurl);
+		printf("Service Timeout = %i\n", lifetime);
+		*(SLPError*) cookie = SLP_OK;
+	} else {
+		*(SLPError*) cookie = errcode;
+	}
+
+	return SLP_TRUE;
+}

Added: incubator/celix/trunk/remote_services/discovery/private/src/discovery_activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/discovery/private/src/discovery_activator.c?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/discovery/private/src/discovery_activator.c (added)
+++ incubator/celix/trunk/remote_services/discovery/private/src/discovery_activator.c Mon Nov  7 18:06:09 2011
@@ -0,0 +1,114 @@
+/*
+ * dependency_activator.c
+ *
+ *  Created on: Sep 29, 2011
+ *      Author: alexander
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <apr_strings.h>
+
+#include "headers.h"
+#include "bundle_activator.h"
+#include "service_tracker.h"
+#include "service_registration.h"
+#include "constants.h"
+
+#include "discovery.h"
+#include "endpoint_listener.h"
+#include "remote_constants.h"
+
+struct activator {
+	apr_pool_t *pool;
+	BUNDLE_CONTEXT context;
+
+	discovery_t discovery;
+
+	SERVICE_TRACKER endpointListenerTracker;
+	SERVICE_REGISTRATION endpointListenerService;
+};
+
+celix_status_t bundleActivator_createEPLTracker(struct activator *activator, SERVICE_TRACKER *tracker);
+
+celix_status_t bundleActivator_create(BUNDLE_CONTEXT context, void **userData) {
+	celix_status_t status = CELIX_SUCCESS;
+	apr_pool_t *parentPool = NULL;
+	apr_pool_t *pool = NULL;
+	struct activator *activator = NULL;
+
+	bundleContext_getMemoryPool(context, &parentPool);
+	apr_pool_create(&pool, parentPool);
+	activator = apr_palloc(pool, sizeof(*activator));
+	if (!activator) {
+		status = CELIX_ENOMEM;
+	} else {
+		activator->pool = pool;
+		activator->context = context;
+
+		discovery_create(pool, context, &activator->discovery);
+
+		bundleActivator_createEPLTracker(activator, &activator->endpointListenerTracker);
+
+		*userData = activator;
+	}
+
+	return status;
+}
+
+celix_status_t bundleActivator_createEPLTracker(struct activator *activator, SERVICE_TRACKER *tracker) {
+	celix_status_t status = CELIX_SUCCESS;
+
+	SERVICE_TRACKER_CUSTOMIZER custumizer = (SERVICE_TRACKER_CUSTOMIZER) apr_palloc(activator->pool, sizeof(*custumizer));
+	if (!custumizer) {
+		status = CELIX_ENOMEM;
+	} else {
+		custumizer->handle = activator->discovery;
+		custumizer->addingService = discovery_endpointListenerAdding;
+		custumizer->addedService = discovery_endpointListenerAdded;
+		custumizer->modifiedService = discovery_endpointListenerModified;
+		custumizer->removedService = discovery_endpointListenerRemoved;
+
+		status = serviceTracker_create(activator->context, "endpoint_listener", custumizer, tracker);
+
+		serviceTracker_open(activator->endpointListenerTracker);
+	}
+
+	return status;
+}
+
+celix_status_t bundleActivator_start(void * userData, BUNDLE_CONTEXT context) {
+	celix_status_t status = CELIX_SUCCESS;
+	struct activator *activator = userData;
+	apr_pool_t *pool = NULL;
+	apr_pool_create(&pool, activator->pool);
+
+	endpoint_listener_t endpointListener = apr_palloc(pool, sizeof(*endpointListener));
+	endpointListener->handle = activator->discovery;
+	endpointListener->endpointAdded = discovery_endpointAdded;
+	endpointListener->endpointRemoved = discovery_endpointRemoved;
+
+	PROPERTIES props = properties_create();
+	properties_set(props, "DISCOVERY", "true");
+	char *scope = apr_pstrcat(activator->pool, "(&(", OBJECTCLASS, "=*)(", ENDPOINT_FRAMEWORK_UUID, "=42", "))", NULL);
+	properties_set(props, (char *) ENDPOINT_LISTENER_SCOPE, scope);
+	bundleContext_registerService(context, (char *) endpoint_listener_service, endpointListener, props, &activator->endpointListenerService);
+
+	return status;
+}
+
+celix_status_t bundleActivator_stop(void * userData, BUNDLE_CONTEXT context) {
+	celix_status_t status = CELIX_SUCCESS;
+	struct activator *activator = userData;
+
+	serviceTracker_close(activator->endpointListenerTracker);
+	serviceRegistration_unregister(activator->endpointListenerService);
+
+	return status;
+}
+
+celix_status_t bundleActivator_destroy(void * userData, BUNDLE_CONTEXT context) {
+	celix_status_t status = CELIX_SUCCESS;
+	return status;
+}

Added: incubator/celix/trunk/remote_services/endpoint_listener/public/include/endpoint_listener.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/endpoint_listener/public/include/endpoint_listener.h?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/endpoint_listener/public/include/endpoint_listener.h (added)
+++ incubator/celix/trunk/remote_services/endpoint_listener/public/include/endpoint_listener.h Mon Nov  7 18:06:09 2011
@@ -0,0 +1,40 @@
+/*
+ * endpoint_listener.h
+ *
+ *  Created on: Sep 29, 2011
+ *      Author: alexander
+ */
+
+#ifndef ENDPOINT_LISTENER_H_
+#define ENDPOINT_LISTENER_H_
+
+#include "array_list.h"
+#include "properties.h"
+
+struct endpoint_description {
+	ARRAY_LIST configurationTypes;
+	char *frameworkUUID;
+	char *id;
+	// ARRAY_LIST intents;
+	char *service;
+	// HASH_MAP packageVersions;
+	PROPERTIES properties;
+	long serviceId;
+};
+
+typedef struct endpoint_description *endpoint_description_t;
+
+static const char * const endpoint_listener_service = "endpoint_listener";
+
+static const char * const ENDPOINT_LISTENER_SCOPE = "endpoint.listener.scope";
+
+struct endpoint_listener {
+	void *handle;
+	celix_status_t (*endpointAdded)(void *handle, endpoint_description_t endpoint, char *machtedFilter);
+	celix_status_t (*endpointRemoved)(void *handle, endpoint_description_t endpoint, char *machtedFilter);
+};
+
+typedef struct endpoint_listener *endpoint_listener_t;
+
+
+#endif /* ENDPOINT_LISTENER_H_ */

Added: incubator/celix/trunk/remote_services/example_endpoint/CMakeLists.txt
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/example_endpoint/CMakeLists.txt?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/example_endpoint/CMakeLists.txt (added)
+++ incubator/celix/trunk/remote_services/example_endpoint/CMakeLists.txt Mon Nov  7 18:06:09 2011
@@ -0,0 +1,31 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+link_directories("/opt/local/lib")
+include_directories("/opt/local/include")
+include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
+include_directories("${PROJECT_SOURCE_DIR}/remote_services/remote_service_admin/public/include")
+include_directories("${PROJECT_SOURCE_DIR}/remote_services/example_endpoint/private/include")
+include_directories("${PROJECT_SOURCE_DIR}/remote_services/example_service/public/include")
+
+add_library(example_endpoint SHARED 
+	private/src/example_endpoint_activator
+	private/src/example_endpoint_impl.c
+)
+target_link_libraries(example_endpoint framework jansson.a)
+
+bundle(example_endpoint)

Added: incubator/celix/trunk/remote_services/example_endpoint/MANIFEST/MANIFEST.MF
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/example_endpoint/MANIFEST/MANIFEST.MF?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/example_endpoint/MANIFEST/MANIFEST.MF (added)
+++ incubator/celix/trunk/remote_services/example_endpoint/MANIFEST/MANIFEST.MF Mon Nov  7 18:06:09 2011
@@ -0,0 +1,5 @@
+Bundle-SymbolicName: example_endpoint
+Bundle-Version: 1.0.0
+library: example_endpoint
+Export-Service: remote_endpoint
+Import-Service: remote_endpoint

Added: incubator/celix/trunk/remote_services/example_endpoint/private/include/example_endpoint_impl.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/example_endpoint/private/include/example_endpoint_impl.h?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/example_endpoint/private/include/example_endpoint_impl.h (added)
+++ incubator/celix/trunk/remote_services/example_endpoint/private/include/example_endpoint_impl.h Mon Nov  7 18:06:09 2011
@@ -0,0 +1,26 @@
+/*
+ * example_endpoint.h
+ *
+ *  Created on: Oct 7, 2011
+ *      Author: alexander
+ */
+
+#ifndef EXAMPLE_ENDPOINT_IMPL_H_
+#define EXAMPLE_ENDPOINT_IMPL_H_
+
+#include <apr_general.h>
+
+#include "celix_errno.h"
+#include "remote_endpoint_impl.h"
+
+celix_status_t exampleEndpoint_create(apr_pool_t *pool, remote_endpoint_t *endpoint);
+
+celix_status_t exampleEndpoint_setService(remote_endpoint_t endpoint, void *service);
+
+celix_status_t exampleEndpoint_handleRequest(remote_endpoint_t ep, char *request, char *data, char **reply);
+
+celix_status_t exampleEndpoint_add(remote_endpoint_t ep, char *data, char **reply);
+celix_status_t exampleEndpoint_sub(remote_endpoint_t ep, char *data, char **reply);
+celix_status_t exampleEndpoint_sqrt(remote_endpoint_t ep, char *data, char **reply);
+
+#endif /* EXAMPLE_ENDPOINT_IMPL_H_ */

Added: incubator/celix/trunk/remote_services/example_endpoint/private/src/example_endpoint_activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/example_endpoint/private/src/example_endpoint_activator.c?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/example_endpoint/private/src/example_endpoint_activator.c (added)
+++ incubator/celix/trunk/remote_services/example_endpoint/private/src/example_endpoint_activator.c Mon Nov  7 18:06:09 2011
@@ -0,0 +1,77 @@
+/*
+ * example_endpoint_activator.c
+ *
+ *  Created on: Oct 10, 2011
+ *      Author: alexander
+ */
+#include <stdlib.h>
+
+#include "bundle_activator.h"
+
+#include "example_endpoint_impl.h"
+#include "service_registration.h"
+
+struct activator {
+	apr_pool_t *pool;
+
+	SERVICE_REGISTRATION endpoint;
+};
+
+celix_status_t bundleActivator_create(BUNDLE_CONTEXT context, void **userData) {
+	celix_status_t status = CELIX_SUCCESS;
+
+	apr_pool_t *parentPool = NULL;
+	apr_pool_t *pool = NULL;
+	struct activator *activator;
+
+	status = bundleContext_getMemoryPool(context, &parentPool);
+	if (status == CELIX_SUCCESS) {
+		if (apr_pool_create(&pool, parentPool) != APR_SUCCESS) {
+			status = CELIX_BUNDLE_EXCEPTION;
+		} else {
+			activator = apr_palloc(pool, sizeof(*activator));
+			if (!activator) {
+				status = CELIX_ENOMEM;
+			} else {
+				activator->pool = pool;
+				activator->endpoint = NULL;
+
+				*userData = activator;
+			}
+		}
+	}
+
+	return status;
+}
+
+celix_status_t bundleActivator_start(void * userData, BUNDLE_CONTEXT context) {
+	celix_status_t status = CELIX_SUCCESS;
+	struct activator *activator = userData;
+	remote_endpoint_t endpoint;
+	remote_endpoint_service_t endpointService;
+
+	exampleEndpoint_create(activator->pool, &endpoint);
+	endpointService = apr_palloc(activator->pool, sizeof(*endpointService));
+	endpointService->endpoint = endpoint;
+	endpointService->handleRequest = exampleEndpoint_handleRequest;
+	endpointService->setService = exampleEndpoint_setService;
+
+	bundleContext_registerService(context, REMOTE_ENDPOINT, endpointService, NULL, &activator->endpoint);
+
+
+	return status;
+}
+
+celix_status_t bundleActivator_stop(void * userData, BUNDLE_CONTEXT context) {
+	celix_status_t status = CELIX_SUCCESS;
+	struct activator *activator = userData;
+
+	serviceRegistration_unregister(activator->endpoint);
+
+	return status;
+}
+
+celix_status_t bundleActivator_destroy(void * userData, BUNDLE_CONTEXT context) {
+	celix_status_t status = CELIX_SUCCESS;
+	return status;
+}

Added: incubator/celix/trunk/remote_services/example_endpoint/private/src/example_endpoint_impl.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/example_endpoint/private/src/example_endpoint_impl.c?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/example_endpoint/private/src/example_endpoint_impl.c (added)
+++ incubator/celix/trunk/remote_services/example_endpoint/private/src/example_endpoint_impl.c Mon Nov  7 18:06:09 2011
@@ -0,0 +1,147 @@
+/*
+ * example_endpoint.c
+ *
+ *  Created on: Oct 7, 2011
+ *      Author: alexander
+ */
+#include <jansson.h>
+
+#include "celix_errno.h"
+
+#include "example_endpoint_impl.h"
+
+#include "example_service.h"
+
+celix_status_t exampleEndpoint_create(apr_pool_t *pool, remote_endpoint_t *endpoint) {
+	celix_status_t status = CELIX_SUCCESS;
+	*endpoint = apr_palloc(pool, sizeof(**endpoint));
+	if (!*endpoint) {
+		status = CELIX_ENOMEM;
+	} else {
+		(*endpoint)->service = NULL;
+	}
+
+
+	return status;
+}
+
+celix_status_t exampleEndpoint_setService(remote_endpoint_t endpoint, void *service) {
+	celix_status_t status = CELIX_SUCCESS;
+	endpoint->service = service;
+	return status;
+}
+
+/**
+ * Request: http://host:port/services/{service}/{request}
+ */
+celix_status_t exampleEndpoint_handleRequest(remote_endpoint_t ep, char *request, char *data, char **reply) {
+	celix_status_t status = CELIX_SUCCESS;
+
+	if (strcmp(request, "add") == 0) {
+		exampleEndpoint_add(ep, data, reply);
+	} else if (strcmp(request, "sub") == 0) {
+		exampleEndpoint_sub(ep, data, reply);
+	} else if (strcmp(request, "sqrt") == 0) {
+		exampleEndpoint_sqrt(ep, data, reply);
+	} else {
+		status = CELIX_ILLEGAL_ARGUMENT;
+	}
+
+	return status;
+}
+
+/**
+ * data = { "a" : 1.1, "b" : 2.4 }
+ * reply = 3.5
+ */
+celix_status_t exampleEndpoint_add(remote_endpoint_t ep, char *data, char **reply) {
+	celix_status_t status = CELIX_SUCCESS;
+	json_error_t jsonError;
+	json_t *root;
+
+	root = json_loads(data, 0, &jsonError);
+	if (!root) {
+		status = CELIX_ILLEGAL_ARGUMENT;
+	} else {
+		double a;
+		double b;
+		json_unpack(root, "{s:f, s:f}", "a", &a, "b", &b);
+
+		if (ep->service != NULL) {
+			double result;
+			json_t *resultRoot;
+			example_service_t service = ep->service;
+			service->add(service->example, a, b, &result);
+			resultRoot = json_pack("{s:f}", "result", result);
+
+			char *c = json_dumps(resultRoot, JSON_ENCODE_ANY);
+			*reply = c;
+		} else {
+			printf("EXAMPLE Endpoint: No service available");
+			status = CELIX_BUNDLE_EXCEPTION;
+		}
+	}
+
+	return status;
+}
+
+celix_status_t exampleEndpoint_sub(remote_endpoint_t ep, char *data, char **reply) {
+	celix_status_t status = CELIX_SUCCESS;
+	json_error_t jsonError;
+	json_t *root;
+
+	root = json_loads(data, 0, &jsonError);
+	if (!root) {
+		status = CELIX_ILLEGAL_ARGUMENT;
+	} else {
+		double a;
+		double b;
+		json_unpack(root, "{s:f, s:f}", "a", &a, "b", &b);
+
+		if (ep->service != NULL) {
+			double result;
+			json_t *resultRoot;
+			example_service_t service = ep->service;
+			service->sub(service->example, a, b, &result);
+			resultRoot = json_pack("{s:f}", "result", result);
+
+			char *c = json_dumps(resultRoot, JSON_ENCODE_ANY);
+			*reply = c;
+		} else {
+			printf("EXAMPLE Endpoint: No service available");
+			status = CELIX_BUNDLE_EXCEPTION;
+		}
+	}
+
+	return status;
+}
+
+celix_status_t exampleEndpoint_sqrt(remote_endpoint_t ep, char *data, char **reply) {
+	celix_status_t status = CELIX_SUCCESS;
+	json_error_t jsonError;
+	json_t *root;
+
+	root = json_loads(data, 0, &jsonError);
+	if (!root) {
+		status = CELIX_ILLEGAL_ARGUMENT;
+	} else {
+		double a;
+		json_unpack(root, "{s:f}", "a", &a);
+
+		if (ep->service != NULL) {
+			double result;
+			json_t *resultRoot;
+			example_service_t service = ep->service;
+			service->sqrt(service->example, a, &result);
+			resultRoot = json_pack("{s:f}", "result", result);
+
+			char *c = json_dumps(resultRoot, JSON_ENCODE_ANY);
+			*reply = c;
+		} else {
+			printf("EXAMPLE Endpoint: No service available");
+			status = CELIX_BUNDLE_EXCEPTION;
+		}
+	}
+
+	return status;
+}

Added: incubator/celix/trunk/remote_services/example_proxy/CMakeLists.txt
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/example_proxy/CMakeLists.txt?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/example_proxy/CMakeLists.txt (added)
+++ incubator/celix/trunk/remote_services/example_proxy/CMakeLists.txt Mon Nov  7 18:06:09 2011
@@ -0,0 +1,33 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+link_directories("/opt/local/lib")
+include_directories("/opt/local/include")
+include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
+include_directories("${PROJECT_SOURCE_DIR}/remote_services/remote_service_admin/public/include")
+include_directories("${PROJECT_SOURCE_DIR}/remote_services/example_endpoint/private/include")
+include_directories("${PROJECT_SOURCE_DIR}/remote_services/example_proxy/private/include")
+include_directories("${PROJECT_SOURCE_DIR}/remote_services/example_service/public/include")
+include_directories("${PROJECT_SOURCE_DIR}/remote_services/endpoint_listener/public/include")
+
+add_library(example_proxy SHARED 
+	private/src/example_proxy_activator
+	private/src/example_proxy_impl.c
+)
+target_link_libraries(example_proxy framework jansson.a curl.a)
+
+bundle(example_proxy)

Added: incubator/celix/trunk/remote_services/example_proxy/MANIFEST/MANIFEST.MF
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/example_proxy/MANIFEST/MANIFEST.MF?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/example_proxy/MANIFEST/MANIFEST.MF (added)
+++ incubator/celix/trunk/remote_services/example_proxy/MANIFEST/MANIFEST.MF Mon Nov  7 18:06:09 2011
@@ -0,0 +1,5 @@
+Bundle-SymbolicName: example_proxy
+Bundle-Version: 1.0.0
+library: example_proxy
+Export-Service: example
+Import-Service: example

Added: incubator/celix/trunk/remote_services/example_proxy/private/include/example_proxy_impl.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/example_proxy/private/include/example_proxy_impl.h?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/example_proxy/private/include/example_proxy_impl.h (added)
+++ incubator/celix/trunk/remote_services/example_proxy/private/include/example_proxy_impl.h Mon Nov  7 18:06:09 2011
@@ -0,0 +1,32 @@
+/*
+ * example_proxy_impl.h
+ *
+ *  Created on: Oct 13, 2011
+ *      Author: alexander
+ */
+
+#ifndef EXAMPLE_PROXY_IMPL_H_
+#define EXAMPLE_PROXY_IMPL_H_
+
+#include <apr_general.h>
+
+#include "celix_errno.h"
+
+#include "example_service.h"
+#include "remote_proxy.h"
+
+#include "endpoint_listener.h"
+
+struct example {
+	apr_pool_t *pool;
+	endpoint_description_t endpoint;
+};
+
+celix_status_t exampleProxy_create(apr_pool_t *pool, example_t *example);
+celix_status_t exampleProxy_add(example_t example, double a, double b, double *result);
+celix_status_t exampleProxy_sub(example_t example, double a, double b, double *result);
+celix_status_t exampleProxy_sqrt(example_t example, double a, double *result);
+
+celix_status_t exampleProxy_setEndpointDescription(void *proxy, endpoint_description_t endpoint);
+
+#endif /* EXAMPLE_PROXY_IMPL_H_ */

Added: incubator/celix/trunk/remote_services/example_proxy/private/src/example_proxy_activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/example_proxy/private/src/example_proxy_activator.c?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/example_proxy/private/src/example_proxy_activator.c (added)
+++ incubator/celix/trunk/remote_services/example_proxy/private/src/example_proxy_activator.c Mon Nov  7 18:06:09 2011
@@ -0,0 +1,92 @@
+/*
+ * example_endpoint_activator.c
+ *
+ *  Created on: Oct 10, 2011
+ *      Author: alexander
+ */
+#include <stdlib.h>
+
+#include "bundle_activator.h"
+
+#include "example_proxy_impl.h"
+
+#include "service_registration.h"
+
+struct activator {
+	apr_pool_t *pool;
+
+	SERVICE_REGISTRATION proxy;
+	SERVICE_REGISTRATION service;
+};
+
+celix_status_t bundleActivator_create(BUNDLE_CONTEXT context, void **userData) {
+	celix_status_t status = CELIX_SUCCESS;
+
+	apr_pool_t *parentPool = NULL;
+	apr_pool_t *pool = NULL;
+	struct activator *activator;
+
+	status = bundleContext_getMemoryPool(context, &parentPool);
+	if (status == CELIX_SUCCESS) {
+		if (apr_pool_create(&pool, parentPool) != APR_SUCCESS) {
+			status = CELIX_BUNDLE_EXCEPTION;
+		} else {
+			activator = apr_palloc(pool, sizeof(*activator));
+			if (!activator) {
+				status = CELIX_ENOMEM;
+			} else {
+				activator->pool = pool;
+				activator->proxy = NULL;
+				activator->service = NULL;
+
+				*userData = activator;
+			}
+		}
+	}
+
+	return status;
+}
+
+celix_status_t bundleActivator_start(void * userData, BUNDLE_CONTEXT context) {
+	celix_status_t status = CELIX_SUCCESS;
+	struct activator *activator = userData;
+	example_t example;
+	example_service_t exampleService;
+	remote_proxy_service_t exampleProxy;
+
+	exampleProxy_create(activator->pool, &example);
+	exampleService = apr_palloc(activator->pool, sizeof(*exampleService));
+	exampleService->example = example;
+	exampleService->add = exampleProxy_add;
+	exampleService->sub = exampleProxy_sub;
+	exampleService->sqrt = exampleProxy_sqrt;
+	exampleProxy = apr_palloc(activator->pool, sizeof(*exampleProxy));
+	exampleProxy->proxy = example;
+	exampleProxy->setEndpointDescription = exampleProxy_setEndpointDescription;
+
+	char **services = malloc(2);
+	services[0] = EXAMPLE_SERVICE;
+	services[1] = REMOTE_PROXY;
+
+	bundleContext_registerService(context, EXAMPLE_SERVICE, exampleService, NULL, &activator->service);
+	bundleContext_registerService(context, REMOTE_PROXY, exampleProxy, NULL, &activator->proxy);
+
+	return status;
+}
+
+celix_status_t bundleActivator_stop(void * userData, BUNDLE_CONTEXT context) {
+	celix_status_t status = CELIX_SUCCESS;
+	struct activator *activator = userData;
+
+	serviceRegistration_unregister(activator->proxy);
+	serviceRegistration_unregister(activator->service);
+	activator->proxy = NULL;
+	activator->service = NULL;
+
+	return status;
+}
+
+celix_status_t bundleActivator_destroy(void * userData, BUNDLE_CONTEXT context) {
+	celix_status_t status = CELIX_SUCCESS;
+	return status;
+}

Added: incubator/celix/trunk/remote_services/example_proxy/private/src/example_proxy_impl.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/example_proxy/private/src/example_proxy_impl.c?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/example_proxy/private/src/example_proxy_impl.c (added)
+++ incubator/celix/trunk/remote_services/example_proxy/private/src/example_proxy_impl.c Mon Nov  7 18:06:09 2011
@@ -0,0 +1,202 @@
+/*
+ * example_endpoint.c
+ *
+ *  Created on: Oct 7, 2011
+ *      Author: alexander
+ */
+#include <jansson.h>
+
+#include <curl/curl.h>
+
+#include <string.h>
+#include <apr_strings.h>
+
+#include "celix_errno.h"
+
+#include "example_proxy_impl.h"
+
+struct post {
+	const char *readptr;
+	int size;
+};
+
+struct get {
+	char *writeptr;
+	int size;
+};
+
+celix_status_t exampleProxy_postRequest(example_t example, char *url, struct post post, struct get *get);
+static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp);
+static size_t exampleProxy_write(void *contents, size_t size, size_t nmemb, void *userp);
+
+celix_status_t exampleProxy_create(apr_pool_t *pool, example_t *endpoint) {
+	celix_status_t status = CELIX_SUCCESS;
+	*endpoint = apr_palloc(pool, sizeof(**endpoint));
+	if (!*endpoint) {
+		status = CELIX_ENOMEM;
+	} else {
+		(*endpoint)->pool = pool;
+		(*endpoint)->endpoint = NULL;
+	}
+
+	return status;
+}
+
+celix_status_t exampleProxy_add(example_t example, double a, double b, double *result) {
+	celix_status_t status = CELIX_SUCCESS;
+
+	if (example->endpoint != NULL) {
+		printf("PROXY: URL: %s\n", example->endpoint->id);
+		char *url = apr_pstrcat(example->pool, example->endpoint->id, "add", NULL);
+
+		json_t *root;
+		root = json_pack("{s:f, s:f}", "a", a, "b", b);
+
+		struct post post;
+		char *data = json_dumps(root, 0);
+		post.readptr = data;
+		post.size = strlen(data);
+
+		struct get get;
+		get.size = 0;
+		get.writeptr = malloc(1);
+
+		status = exampleProxy_postRequest(example, url, post, &get);
+		if (status == CELIX_SUCCESS) {
+			json_error_t jsonError;
+			json_t *reply = json_loads(get.writeptr, 0, &jsonError);
+			json_unpack(reply, "{s:f}", "result", result);
+		}
+	} else {
+		printf("PROXY: No endpoint information available");
+	}
+
+	return status;
+}
+
+celix_status_t exampleProxy_sub(example_t example, double a, double b, double *result) {
+	celix_status_t status = CELIX_SUCCESS;
+	if (example->endpoint != NULL) {
+		printf("PROXY: URL: %s\n", example->endpoint->id);
+		char *url = apr_pstrcat(example->pool, example->endpoint->id, "sub", NULL);
+
+		json_t *root;
+		root = json_pack("{s:f, s:f}", "a", a, "b", b);
+
+		struct post post;
+		char *data = json_dumps(root, 0);
+		post.readptr = data;
+		post.size = strlen(data);
+
+		struct get get;
+		get.size = 0;
+		get.writeptr = malloc(1);
+
+		status = exampleProxy_postRequest(example, url, post, &get);
+		if (status == CELIX_SUCCESS) {
+			json_error_t jsonError;
+			json_t *reply = json_loads(get.writeptr, 0, &jsonError);
+			json_unpack(reply, "{s:f}", "result", result);
+		}
+	} else {
+		printf("PROXY: No endpoint information available");
+	}
+
+	return status;
+}
+
+celix_status_t exampleProxy_sqrt(example_t example, double a, double *result) {
+	celix_status_t status = CELIX_SUCCESS;
+	if (example->endpoint != NULL) {
+		printf("PROXY: URL: %s\n", example->endpoint->id);
+		char *url = apr_pstrcat(example->pool, example->endpoint->id, "sqrt", NULL);
+
+		json_t *root;
+		root = json_pack("{s:f}", "a", a);
+
+		struct post post;
+		char *data = json_dumps(root, 0);
+		post.readptr = data;
+		post.size = strlen(data);
+
+		struct get get;
+		get.size = 0;
+		get.writeptr = malloc(1);
+
+		status = exampleProxy_postRequest(example, url, post, &get);
+		if (status == CELIX_SUCCESS) {
+			json_error_t jsonError;
+			json_t *reply = json_loads(get.writeptr, 0, &jsonError);
+			json_unpack(reply, "{s:f}", "result", result);
+		}
+	} else {
+		printf("PROXY: No endpoint information available");
+	}
+
+	return status;
+}
+
+celix_status_t exampleProxy_postRequest(example_t example, char *url, struct post post, struct get *get) {
+	celix_status_t status = CELIX_SUCCESS;
+	CURL *curl;
+	CURLcode res;
+
+	curl = curl_easy_init();
+	if(!curl) {
+		status = CELIX_ILLEGAL_STATE;
+	} else {
+		curl_easy_setopt(curl, CURLOPT_URL, url);
+		curl_easy_setopt(curl, CURLOPT_POST, 1L);
+		curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
+		curl_easy_setopt(curl, CURLOPT_READDATA, &post);
+		curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, exampleProxy_write);
+		curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)get);
+		curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (curl_off_t)post.size);
+		res = curl_easy_perform(curl);
+		curl_easy_cleanup(curl);
+
+		printf("Data read: %s\n", get->writeptr);
+
+	}
+	return status;
+}
+
+static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp) {
+	struct post *post = userp;
+
+	if (post->size) {
+		*(char *) ptr = post->readptr[0];
+		post->readptr++;
+		post->size--;
+		return 1;
+	}
+
+	return 0;
+}
+
+static size_t exampleProxy_write(void *contents, size_t size, size_t nmemb, void *userp) {
+  size_t realsize = size * nmemb;
+  struct get *mem = (struct get *)userp;
+
+  mem->writeptr = realloc(mem->writeptr, mem->size + realsize + 1);
+  if (mem->writeptr == NULL) {
+    /* out of memory! */
+    printf("not enough memory (realloc returned NULL)\n");
+    exit(EXIT_FAILURE);
+  }
+
+  memcpy(&(mem->writeptr[mem->size]), contents, realsize);
+  mem->size += realsize;
+  mem->writeptr[mem->size] = 0;
+
+  return realsize;
+}
+
+celix_status_t exampleProxy_setEndpointDescription(void *proxy, endpoint_description_t endpoint) {
+	celix_status_t status = CELIX_SUCCESS;
+
+	example_t example = proxy;
+	example->endpoint = endpoint;
+
+	return status;
+}

Added: incubator/celix/trunk/remote_services/example_service/CMakeLists.txt
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/example_service/CMakeLists.txt?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/example_service/CMakeLists.txt (added)
+++ incubator/celix/trunk/remote_services/example_service/CMakeLists.txt Mon Nov  7 18:06:09 2011
@@ -0,0 +1,29 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
+include_directories("${PROJECT_SOURCE_DIR}/remote_services/remote_service_admin/public/include")
+include_directories("${PROJECT_SOURCE_DIR}/remote_services/example_service/private/include")
+include_directories("${PROJECT_SOURCE_DIR}/remote_services/example_service/public/include")
+
+add_library(example SHARED 
+	private/src/example_impl
+	private/src/example_activator  
+)
+target_link_libraries(example framework)
+
+bundle(example)

Added: incubator/celix/trunk/remote_services/example_service/MANIFEST/MANIFEST.MF
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/example_service/MANIFEST/MANIFEST.MF?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/example_service/MANIFEST/MANIFEST.MF (added)
+++ incubator/celix/trunk/remote_services/example_service/MANIFEST/MANIFEST.MF Mon Nov  7 18:06:09 2011
@@ -0,0 +1,5 @@
+Bundle-SymbolicName: example
+Bundle-Version: 1.0.0
+library: example
+Export-Service: example
+Import-Service: example

Added: incubator/celix/trunk/remote_services/example_service/private/include/example_impl.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/example_service/private/include/example_impl.h?rev=1198846&view=auto
==============================================================================
--- incubator/celix/trunk/remote_services/example_service/private/include/example_impl.h (added)
+++ incubator/celix/trunk/remote_services/example_service/private/include/example_impl.h Mon Nov  7 18:06:09 2011
@@ -0,0 +1,26 @@
+/*
+ * example_impl.h
+ *
+ *  Created on: Oct 5, 2011
+ *      Author: alexander
+ */
+
+#ifndef EXAMPLE_IMPL_H_
+#define EXAMPLE_IMPL_H_
+
+#include <apr_general.h>
+
+#include "celix_errno.h"
+
+#include "example_service.h"
+
+struct example {
+	apr_pool_t *pool;
+};
+
+celix_status_t example_create(apr_pool_t *pool, example_t *example);
+celix_status_t example_add(example_t example, double a, double b, double *result);
+celix_status_t example_sub(example_t example, double a, double b, double *result);
+celix_status_t example_sqrt(example_t example, double a, double *result);
+
+#endif /* EXAMPLE_IMPL_H_ */



Mime
View raw message