summaryrefslogtreecommitdiff
path: root/php/src/php5
diff options
context:
space:
mode:
Diffstat (limited to 'php/src/php5')
-rw-r--r--php/src/php5/.depend.mak1233
-rw-r--r--php/src/php5/Communicator.cpp771
-rw-r--r--php/src/php5/Config.h2
-rw-r--r--php/src/php5/Connection.cpp162
-rw-r--r--php/src/php5/Endpoint.cpp91
-rw-r--r--php/src/php5/IcePHP.rc38
-rw-r--r--php/src/php5/Init.cpp117
-rw-r--r--php/src/php5/Logger.cpp14
-rw-r--r--php/src/php5/Makefile39
-rw-r--r--php/src/php5/Makefile.mak53
-rw-r--r--php/src/php5/Makefile.mk22
-rw-r--r--php/src/php5/Operation.cpp95
-rw-r--r--php/src/php5/Properties.cpp30
-rw-r--r--php/src/php5/Proxy.cpp192
-rw-r--r--php/src/php5/Proxy.h6
-rw-r--r--php/src/php5/Types.cpp536
-rw-r--r--php/src/php5/Types.h185
-rw-r--r--php/src/php5/Util.cpp14
18 files changed, 1411 insertions, 2189 deletions
diff --git a/php/src/php5/.depend.mak b/php/src/php5/.depend.mak
deleted file mode 100644
index 811a3c85864..00000000000
--- a/php/src/php5/.depend.mak
+++ /dev/null
@@ -1,1233 +0,0 @@
-
-Communicator.obj: \
- Communicator.cpp \
- "Communicator.h" \
- "Config.h" \
- "$(ice_cpp_dir)\include\Ice\Ice.h" \
- "$(ice_cpp_dir)\include\IceUtil\PushDisableWarnings.h" \
- "$(ice_cpp_dir)\include\Ice\Config.h" \
- "$(ice_cpp_dir)\include\IceUtil\Config.h" \
- "$(ice_cpp_dir)\include\Ice\DeprecatedStringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyF.h" \
- "$(ice_cpp_dir)\include\IceUtil\Shared.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyHandle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Handle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\Handle.h" \
- "$(ice_cpp_dir)\include\Ice\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\Format.h" \
- "$(ice_cpp_dir)\include\Ice\StreamF.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObject.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\StreamHelpers.h" \
- "$(ice_cpp_dir)\include\IceUtil\ScopedArray.h" \
- "$(ice_cpp_dir)\include\IceUtil\Iterator.h" \
- "$(ice_cpp_dir)\include\IceUtil\Optional.h" \
- "$(ice_cpp_dir)\include\IceUtil\UndefSysMacros.h" \
- "$(ice_cpp_dir)\include\IceUtil\PopDisableWarnings.h" \
- "$(ice_cpp_dir)\include\IceUtil\StringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\Plugin.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerF.h" \
- "$(ice_cpp_dir)\include\Ice\BuiltinSequences.h" \
- "$(ice_cpp_dir)\include\Ice\Initialize.h" \
- "$(ice_cpp_dir)\include\IceUtil\Timer.h" \
- "$(ice_cpp_dir)\include\IceUtil\Thread.h" \
- "$(ice_cpp_dir)\include\IceUtil\Mutex.h" \
- "$(ice_cpp_dir)\include\IceUtil\Lock.h" \
- "$(ice_cpp_dir)\include\IceUtil\ThreadException.h" \
- "$(ice_cpp_dir)\include\IceUtil\Time.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexProtocol.h" \
- "$(ice_cpp_dir)\include\IceUtil\Monitor.h" \
- "$(ice_cpp_dir)\include\IceUtil\Cond.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesF.h" \
- "$(ice_cpp_dir)\include\Ice\Proxy.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionIF.h" \
- "$(ice_cpp_dir)\include\Ice\RequestHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointTypes.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapterF.h" \
- "$(ice_cpp_dir)\include\Ice\ReferenceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResult.h" \
- "$(ice_cpp_dir)\include\IceUtil\UniquePtr.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionF.h" \
- "$(ice_cpp_dir)\include\Ice\InstanceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResultF.h" \
- "$(ice_cpp_dir)\include\Ice\ObserverHelper.h" \
- "$(ice_cpp_dir)\include\Ice\Instrumentation.h" \
- "$(ice_cpp_dir)\include\Ice\Current.h" \
- "$(ice_cpp_dir)\include\Ice\Identity.h" \
- "$(ice_cpp_dir)\include\Ice\Version.h" \
- "$(ice_cpp_dir)\include\Ice\BasicStream.h" \
- "$(ice_cpp_dir)\include\Ice\Object.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\Buffer.h" \
- "$(ice_cpp_dir)\include\Ice\Protocol.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedDataF.h" \
- "$(ice_cpp_dir)\include\Ice\UserExceptionFactory.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTable.h" \
- "$(ice_cpp_dir)\include\Ice\InstrumentationF.h" \
- "$(ice_cpp_dir)\include\Ice\Dispatcher.h" \
- "$(ice_cpp_dir)\include\Ice\LocalException.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\GCObject.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexPtrLock.h" \
- "$(ice_cpp_dir)\include\Ice\Incoming.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ServantManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\ResponseHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Properties.h" \
- "$(ice_cpp_dir)\include\Ice\Logger.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerUtil.h" \
- "$(ice_cpp_dir)\include\Ice\RemoteLogger.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTableInit.h" \
- "$(ice_cpp_dir)\include\Ice\DefaultObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\Communicator.h" \
- "$(ice_cpp_dir)\include\Ice\RouterF.h" \
- "$(ice_cpp_dir)\include\Ice\LocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\PluginF.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContextF.h" \
- "$(ice_cpp_dir)\include\Ice\FacetMap.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorAsync.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapter.h" \
- "$(ice_cpp_dir)\include\Ice\Endpoint.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocator.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedData.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\Process.h" \
- "$(ice_cpp_dir)\include\Ice\Application.h" \
- "$(ice_cpp_dir)\include\Ice\Connection.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Functional.h" \
- "$(ice_cpp_dir)\include\IceUtil\Functional.h" \
- "$(ice_cpp_dir)\include\Ice\Stream.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContext.h" \
- "$(ice_cpp_dir)\include\Ice\Locator.h" \
- "$(ice_cpp_dir)\include\Ice\ProcessF.h" \
- "$(ice_cpp_dir)\include\Ice\Router.h" \
- "$(ice_cpp_dir)\include\Ice\DispatchInterceptor.h" \
- "$(ice_cpp_dir)\include\Ice\NativePropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\Metrics.h" \
- "$(ice_cpp_dir)\include\Ice\Service.h" \
- "Logger.h" \
- "Properties.h" \
- "Proxy.h" \
- "Types.h" \
- "Operation.h" \
- "$(ice_cpp_dir)\include\IceUtil\OutputUtil.h" \
- "Util.h" \
- "$(ice_cpp_dir)\include\IceUtil\Options.h" \
- "$(ice_cpp_dir)\include\IceUtil\RecMutex.h" \
- "$(ice_cpp_dir)\include\IceUtil\StringUtil.h" \
-
-Connection.obj: \
- Connection.cpp \
- "Connection.h" \
- "Config.h" \
- "$(ice_cpp_dir)\include\Ice\Ice.h" \
- "$(ice_cpp_dir)\include\IceUtil\PushDisableWarnings.h" \
- "$(ice_cpp_dir)\include\Ice\Config.h" \
- "$(ice_cpp_dir)\include\IceUtil\Config.h" \
- "$(ice_cpp_dir)\include\Ice\DeprecatedStringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyF.h" \
- "$(ice_cpp_dir)\include\IceUtil\Shared.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyHandle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Handle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\Handle.h" \
- "$(ice_cpp_dir)\include\Ice\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\Format.h" \
- "$(ice_cpp_dir)\include\Ice\StreamF.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObject.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\StreamHelpers.h" \
- "$(ice_cpp_dir)\include\IceUtil\ScopedArray.h" \
- "$(ice_cpp_dir)\include\IceUtil\Iterator.h" \
- "$(ice_cpp_dir)\include\IceUtil\Optional.h" \
- "$(ice_cpp_dir)\include\IceUtil\UndefSysMacros.h" \
- "$(ice_cpp_dir)\include\IceUtil\PopDisableWarnings.h" \
- "$(ice_cpp_dir)\include\IceUtil\StringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\Plugin.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerF.h" \
- "$(ice_cpp_dir)\include\Ice\BuiltinSequences.h" \
- "$(ice_cpp_dir)\include\Ice\Initialize.h" \
- "$(ice_cpp_dir)\include\IceUtil\Timer.h" \
- "$(ice_cpp_dir)\include\IceUtil\Thread.h" \
- "$(ice_cpp_dir)\include\IceUtil\Mutex.h" \
- "$(ice_cpp_dir)\include\IceUtil\Lock.h" \
- "$(ice_cpp_dir)\include\IceUtil\ThreadException.h" \
- "$(ice_cpp_dir)\include\IceUtil\Time.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexProtocol.h" \
- "$(ice_cpp_dir)\include\IceUtil\Monitor.h" \
- "$(ice_cpp_dir)\include\IceUtil\Cond.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesF.h" \
- "$(ice_cpp_dir)\include\Ice\Proxy.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionIF.h" \
- "$(ice_cpp_dir)\include\Ice\RequestHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointTypes.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapterF.h" \
- "$(ice_cpp_dir)\include\Ice\ReferenceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResult.h" \
- "$(ice_cpp_dir)\include\IceUtil\UniquePtr.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionF.h" \
- "$(ice_cpp_dir)\include\Ice\InstanceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResultF.h" \
- "$(ice_cpp_dir)\include\Ice\ObserverHelper.h" \
- "$(ice_cpp_dir)\include\Ice\Instrumentation.h" \
- "$(ice_cpp_dir)\include\Ice\Current.h" \
- "$(ice_cpp_dir)\include\Ice\Identity.h" \
- "$(ice_cpp_dir)\include\Ice\Version.h" \
- "$(ice_cpp_dir)\include\Ice\BasicStream.h" \
- "$(ice_cpp_dir)\include\Ice\Object.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\Buffer.h" \
- "$(ice_cpp_dir)\include\Ice\Protocol.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedDataF.h" \
- "$(ice_cpp_dir)\include\Ice\UserExceptionFactory.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTable.h" \
- "$(ice_cpp_dir)\include\Ice\InstrumentationF.h" \
- "$(ice_cpp_dir)\include\Ice\Dispatcher.h" \
- "$(ice_cpp_dir)\include\Ice\LocalException.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\GCObject.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexPtrLock.h" \
- "$(ice_cpp_dir)\include\Ice\Incoming.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ServantManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\ResponseHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Properties.h" \
- "$(ice_cpp_dir)\include\Ice\Logger.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerUtil.h" \
- "$(ice_cpp_dir)\include\Ice\RemoteLogger.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTableInit.h" \
- "$(ice_cpp_dir)\include\Ice\DefaultObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\Communicator.h" \
- "$(ice_cpp_dir)\include\Ice\RouterF.h" \
- "$(ice_cpp_dir)\include\Ice\LocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\PluginF.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContextF.h" \
- "$(ice_cpp_dir)\include\Ice\FacetMap.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorAsync.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapter.h" \
- "$(ice_cpp_dir)\include\Ice\Endpoint.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocator.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedData.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\Process.h" \
- "$(ice_cpp_dir)\include\Ice\Application.h" \
- "$(ice_cpp_dir)\include\Ice\Connection.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Functional.h" \
- "$(ice_cpp_dir)\include\IceUtil\Functional.h" \
- "$(ice_cpp_dir)\include\Ice\Stream.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContext.h" \
- "$(ice_cpp_dir)\include\Ice\Locator.h" \
- "$(ice_cpp_dir)\include\Ice\ProcessF.h" \
- "$(ice_cpp_dir)\include\Ice\Router.h" \
- "$(ice_cpp_dir)\include\Ice\DispatchInterceptor.h" \
- "$(ice_cpp_dir)\include\Ice\NativePropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\Metrics.h" \
- "$(ice_cpp_dir)\include\Ice\Service.h" \
- "Endpoint.h" \
- "Types.h" \
- "Communicator.h" \
- "Operation.h" \
- "$(ice_cpp_dir)\include\IceUtil\OutputUtil.h" \
- "Util.h" \
-
-Endpoint.obj: \
- Endpoint.cpp \
- "Endpoint.h" \
- "Config.h" \
- "$(ice_cpp_dir)\include\Ice\Ice.h" \
- "$(ice_cpp_dir)\include\IceUtil\PushDisableWarnings.h" \
- "$(ice_cpp_dir)\include\Ice\Config.h" \
- "$(ice_cpp_dir)\include\IceUtil\Config.h" \
- "$(ice_cpp_dir)\include\Ice\DeprecatedStringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyF.h" \
- "$(ice_cpp_dir)\include\IceUtil\Shared.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyHandle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Handle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\Handle.h" \
- "$(ice_cpp_dir)\include\Ice\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\Format.h" \
- "$(ice_cpp_dir)\include\Ice\StreamF.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObject.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\StreamHelpers.h" \
- "$(ice_cpp_dir)\include\IceUtil\ScopedArray.h" \
- "$(ice_cpp_dir)\include\IceUtil\Iterator.h" \
- "$(ice_cpp_dir)\include\IceUtil\Optional.h" \
- "$(ice_cpp_dir)\include\IceUtil\UndefSysMacros.h" \
- "$(ice_cpp_dir)\include\IceUtil\PopDisableWarnings.h" \
- "$(ice_cpp_dir)\include\IceUtil\StringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\Plugin.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerF.h" \
- "$(ice_cpp_dir)\include\Ice\BuiltinSequences.h" \
- "$(ice_cpp_dir)\include\Ice\Initialize.h" \
- "$(ice_cpp_dir)\include\IceUtil\Timer.h" \
- "$(ice_cpp_dir)\include\IceUtil\Thread.h" \
- "$(ice_cpp_dir)\include\IceUtil\Mutex.h" \
- "$(ice_cpp_dir)\include\IceUtil\Lock.h" \
- "$(ice_cpp_dir)\include\IceUtil\ThreadException.h" \
- "$(ice_cpp_dir)\include\IceUtil\Time.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexProtocol.h" \
- "$(ice_cpp_dir)\include\IceUtil\Monitor.h" \
- "$(ice_cpp_dir)\include\IceUtil\Cond.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesF.h" \
- "$(ice_cpp_dir)\include\Ice\Proxy.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionIF.h" \
- "$(ice_cpp_dir)\include\Ice\RequestHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointTypes.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapterF.h" \
- "$(ice_cpp_dir)\include\Ice\ReferenceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResult.h" \
- "$(ice_cpp_dir)\include\IceUtil\UniquePtr.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionF.h" \
- "$(ice_cpp_dir)\include\Ice\InstanceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResultF.h" \
- "$(ice_cpp_dir)\include\Ice\ObserverHelper.h" \
- "$(ice_cpp_dir)\include\Ice\Instrumentation.h" \
- "$(ice_cpp_dir)\include\Ice\Current.h" \
- "$(ice_cpp_dir)\include\Ice\Identity.h" \
- "$(ice_cpp_dir)\include\Ice\Version.h" \
- "$(ice_cpp_dir)\include\Ice\BasicStream.h" \
- "$(ice_cpp_dir)\include\Ice\Object.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\Buffer.h" \
- "$(ice_cpp_dir)\include\Ice\Protocol.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedDataF.h" \
- "$(ice_cpp_dir)\include\Ice\UserExceptionFactory.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTable.h" \
- "$(ice_cpp_dir)\include\Ice\InstrumentationF.h" \
- "$(ice_cpp_dir)\include\Ice\Dispatcher.h" \
- "$(ice_cpp_dir)\include\Ice\LocalException.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\GCObject.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexPtrLock.h" \
- "$(ice_cpp_dir)\include\Ice\Incoming.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ServantManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\ResponseHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Properties.h" \
- "$(ice_cpp_dir)\include\Ice\Logger.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerUtil.h" \
- "$(ice_cpp_dir)\include\Ice\RemoteLogger.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTableInit.h" \
- "$(ice_cpp_dir)\include\Ice\DefaultObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\Communicator.h" \
- "$(ice_cpp_dir)\include\Ice\RouterF.h" \
- "$(ice_cpp_dir)\include\Ice\LocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\PluginF.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContextF.h" \
- "$(ice_cpp_dir)\include\Ice\FacetMap.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorAsync.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapter.h" \
- "$(ice_cpp_dir)\include\Ice\Endpoint.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocator.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedData.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\Process.h" \
- "$(ice_cpp_dir)\include\Ice\Application.h" \
- "$(ice_cpp_dir)\include\Ice\Connection.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Functional.h" \
- "$(ice_cpp_dir)\include\IceUtil\Functional.h" \
- "$(ice_cpp_dir)\include\Ice\Stream.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContext.h" \
- "$(ice_cpp_dir)\include\Ice\Locator.h" \
- "$(ice_cpp_dir)\include\Ice\ProcessF.h" \
- "$(ice_cpp_dir)\include\Ice\Router.h" \
- "$(ice_cpp_dir)\include\Ice\DispatchInterceptor.h" \
- "$(ice_cpp_dir)\include\Ice\NativePropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\Metrics.h" \
- "$(ice_cpp_dir)\include\Ice\Service.h" \
- "Util.h" \
-
-Init.obj: \
- Init.cpp \
- "Communicator.h" \
- "Config.h" \
- "$(ice_cpp_dir)\include\Ice\Ice.h" \
- "$(ice_cpp_dir)\include\IceUtil\PushDisableWarnings.h" \
- "$(ice_cpp_dir)\include\Ice\Config.h" \
- "$(ice_cpp_dir)\include\IceUtil\Config.h" \
- "$(ice_cpp_dir)\include\Ice\DeprecatedStringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyF.h" \
- "$(ice_cpp_dir)\include\IceUtil\Shared.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyHandle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Handle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\Handle.h" \
- "$(ice_cpp_dir)\include\Ice\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\Format.h" \
- "$(ice_cpp_dir)\include\Ice\StreamF.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObject.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\StreamHelpers.h" \
- "$(ice_cpp_dir)\include\IceUtil\ScopedArray.h" \
- "$(ice_cpp_dir)\include\IceUtil\Iterator.h" \
- "$(ice_cpp_dir)\include\IceUtil\Optional.h" \
- "$(ice_cpp_dir)\include\IceUtil\UndefSysMacros.h" \
- "$(ice_cpp_dir)\include\IceUtil\PopDisableWarnings.h" \
- "$(ice_cpp_dir)\include\IceUtil\StringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\Plugin.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerF.h" \
- "$(ice_cpp_dir)\include\Ice\BuiltinSequences.h" \
- "$(ice_cpp_dir)\include\Ice\Initialize.h" \
- "$(ice_cpp_dir)\include\IceUtil\Timer.h" \
- "$(ice_cpp_dir)\include\IceUtil\Thread.h" \
- "$(ice_cpp_dir)\include\IceUtil\Mutex.h" \
- "$(ice_cpp_dir)\include\IceUtil\Lock.h" \
- "$(ice_cpp_dir)\include\IceUtil\ThreadException.h" \
- "$(ice_cpp_dir)\include\IceUtil\Time.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexProtocol.h" \
- "$(ice_cpp_dir)\include\IceUtil\Monitor.h" \
- "$(ice_cpp_dir)\include\IceUtil\Cond.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesF.h" \
- "$(ice_cpp_dir)\include\Ice\Proxy.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionIF.h" \
- "$(ice_cpp_dir)\include\Ice\RequestHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointTypes.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapterF.h" \
- "$(ice_cpp_dir)\include\Ice\ReferenceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResult.h" \
- "$(ice_cpp_dir)\include\IceUtil\UniquePtr.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionF.h" \
- "$(ice_cpp_dir)\include\Ice\InstanceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResultF.h" \
- "$(ice_cpp_dir)\include\Ice\ObserverHelper.h" \
- "$(ice_cpp_dir)\include\Ice\Instrumentation.h" \
- "$(ice_cpp_dir)\include\Ice\Current.h" \
- "$(ice_cpp_dir)\include\Ice\Identity.h" \
- "$(ice_cpp_dir)\include\Ice\Version.h" \
- "$(ice_cpp_dir)\include\Ice\BasicStream.h" \
- "$(ice_cpp_dir)\include\Ice\Object.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\Buffer.h" \
- "$(ice_cpp_dir)\include\Ice\Protocol.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedDataF.h" \
- "$(ice_cpp_dir)\include\Ice\UserExceptionFactory.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTable.h" \
- "$(ice_cpp_dir)\include\Ice\InstrumentationF.h" \
- "$(ice_cpp_dir)\include\Ice\Dispatcher.h" \
- "$(ice_cpp_dir)\include\Ice\LocalException.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\GCObject.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexPtrLock.h" \
- "$(ice_cpp_dir)\include\Ice\Incoming.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ServantManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\ResponseHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Properties.h" \
- "$(ice_cpp_dir)\include\Ice\Logger.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerUtil.h" \
- "$(ice_cpp_dir)\include\Ice\RemoteLogger.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTableInit.h" \
- "$(ice_cpp_dir)\include\Ice\DefaultObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\Communicator.h" \
- "$(ice_cpp_dir)\include\Ice\RouterF.h" \
- "$(ice_cpp_dir)\include\Ice\LocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\PluginF.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContextF.h" \
- "$(ice_cpp_dir)\include\Ice\FacetMap.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorAsync.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapter.h" \
- "$(ice_cpp_dir)\include\Ice\Endpoint.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocator.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedData.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\Process.h" \
- "$(ice_cpp_dir)\include\Ice\Application.h" \
- "$(ice_cpp_dir)\include\Ice\Connection.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Functional.h" \
- "$(ice_cpp_dir)\include\IceUtil\Functional.h" \
- "$(ice_cpp_dir)\include\Ice\Stream.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContext.h" \
- "$(ice_cpp_dir)\include\Ice\Locator.h" \
- "$(ice_cpp_dir)\include\Ice\ProcessF.h" \
- "$(ice_cpp_dir)\include\Ice\Router.h" \
- "$(ice_cpp_dir)\include\Ice\DispatchInterceptor.h" \
- "$(ice_cpp_dir)\include\Ice\NativePropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\Metrics.h" \
- "$(ice_cpp_dir)\include\Ice\Service.h" \
- "Connection.h" \
- "Endpoint.h" \
- "Logger.h" \
- "Operation.h" \
- "Properties.h" \
- "Proxy.h" \
- "Types.h" \
- "$(ice_cpp_dir)\include\IceUtil\OutputUtil.h" \
- "Util.h" \
-
-Logger.obj: \
- Logger.cpp \
- "Logger.h" \
- "Config.h" \
- "$(ice_cpp_dir)\include\Ice\Ice.h" \
- "$(ice_cpp_dir)\include\IceUtil\PushDisableWarnings.h" \
- "$(ice_cpp_dir)\include\Ice\Config.h" \
- "$(ice_cpp_dir)\include\IceUtil\Config.h" \
- "$(ice_cpp_dir)\include\Ice\DeprecatedStringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyF.h" \
- "$(ice_cpp_dir)\include\IceUtil\Shared.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyHandle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Handle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\Handle.h" \
- "$(ice_cpp_dir)\include\Ice\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\Format.h" \
- "$(ice_cpp_dir)\include\Ice\StreamF.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObject.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\StreamHelpers.h" \
- "$(ice_cpp_dir)\include\IceUtil\ScopedArray.h" \
- "$(ice_cpp_dir)\include\IceUtil\Iterator.h" \
- "$(ice_cpp_dir)\include\IceUtil\Optional.h" \
- "$(ice_cpp_dir)\include\IceUtil\UndefSysMacros.h" \
- "$(ice_cpp_dir)\include\IceUtil\PopDisableWarnings.h" \
- "$(ice_cpp_dir)\include\IceUtil\StringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\Plugin.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerF.h" \
- "$(ice_cpp_dir)\include\Ice\BuiltinSequences.h" \
- "$(ice_cpp_dir)\include\Ice\Initialize.h" \
- "$(ice_cpp_dir)\include\IceUtil\Timer.h" \
- "$(ice_cpp_dir)\include\IceUtil\Thread.h" \
- "$(ice_cpp_dir)\include\IceUtil\Mutex.h" \
- "$(ice_cpp_dir)\include\IceUtil\Lock.h" \
- "$(ice_cpp_dir)\include\IceUtil\ThreadException.h" \
- "$(ice_cpp_dir)\include\IceUtil\Time.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexProtocol.h" \
- "$(ice_cpp_dir)\include\IceUtil\Monitor.h" \
- "$(ice_cpp_dir)\include\IceUtil\Cond.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesF.h" \
- "$(ice_cpp_dir)\include\Ice\Proxy.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionIF.h" \
- "$(ice_cpp_dir)\include\Ice\RequestHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointTypes.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapterF.h" \
- "$(ice_cpp_dir)\include\Ice\ReferenceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResult.h" \
- "$(ice_cpp_dir)\include\IceUtil\UniquePtr.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionF.h" \
- "$(ice_cpp_dir)\include\Ice\InstanceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResultF.h" \
- "$(ice_cpp_dir)\include\Ice\ObserverHelper.h" \
- "$(ice_cpp_dir)\include\Ice\Instrumentation.h" \
- "$(ice_cpp_dir)\include\Ice\Current.h" \
- "$(ice_cpp_dir)\include\Ice\Identity.h" \
- "$(ice_cpp_dir)\include\Ice\Version.h" \
- "$(ice_cpp_dir)\include\Ice\BasicStream.h" \
- "$(ice_cpp_dir)\include\Ice\Object.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\Buffer.h" \
- "$(ice_cpp_dir)\include\Ice\Protocol.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedDataF.h" \
- "$(ice_cpp_dir)\include\Ice\UserExceptionFactory.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTable.h" \
- "$(ice_cpp_dir)\include\Ice\InstrumentationF.h" \
- "$(ice_cpp_dir)\include\Ice\Dispatcher.h" \
- "$(ice_cpp_dir)\include\Ice\LocalException.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\GCObject.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexPtrLock.h" \
- "$(ice_cpp_dir)\include\Ice\Incoming.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ServantManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\ResponseHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Properties.h" \
- "$(ice_cpp_dir)\include\Ice\Logger.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerUtil.h" \
- "$(ice_cpp_dir)\include\Ice\RemoteLogger.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTableInit.h" \
- "$(ice_cpp_dir)\include\Ice\DefaultObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\Communicator.h" \
- "$(ice_cpp_dir)\include\Ice\RouterF.h" \
- "$(ice_cpp_dir)\include\Ice\LocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\PluginF.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContextF.h" \
- "$(ice_cpp_dir)\include\Ice\FacetMap.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorAsync.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapter.h" \
- "$(ice_cpp_dir)\include\Ice\Endpoint.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocator.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedData.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\Process.h" \
- "$(ice_cpp_dir)\include\Ice\Application.h" \
- "$(ice_cpp_dir)\include\Ice\Connection.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Functional.h" \
- "$(ice_cpp_dir)\include\IceUtil\Functional.h" \
- "$(ice_cpp_dir)\include\Ice\Stream.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContext.h" \
- "$(ice_cpp_dir)\include\Ice\Locator.h" \
- "$(ice_cpp_dir)\include\Ice\ProcessF.h" \
- "$(ice_cpp_dir)\include\Ice\Router.h" \
- "$(ice_cpp_dir)\include\Ice\DispatchInterceptor.h" \
- "$(ice_cpp_dir)\include\Ice\NativePropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\Metrics.h" \
- "$(ice_cpp_dir)\include\Ice\Service.h" \
- "Util.h" \
-
-Operation.obj: \
- Operation.cpp \
- "Operation.h" \
- "Config.h" \
- "$(ice_cpp_dir)\include\Ice\Ice.h" \
- "$(ice_cpp_dir)\include\IceUtil\PushDisableWarnings.h" \
- "$(ice_cpp_dir)\include\Ice\Config.h" \
- "$(ice_cpp_dir)\include\IceUtil\Config.h" \
- "$(ice_cpp_dir)\include\Ice\DeprecatedStringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyF.h" \
- "$(ice_cpp_dir)\include\IceUtil\Shared.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyHandle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Handle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\Handle.h" \
- "$(ice_cpp_dir)\include\Ice\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\Format.h" \
- "$(ice_cpp_dir)\include\Ice\StreamF.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObject.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\StreamHelpers.h" \
- "$(ice_cpp_dir)\include\IceUtil\ScopedArray.h" \
- "$(ice_cpp_dir)\include\IceUtil\Iterator.h" \
- "$(ice_cpp_dir)\include\IceUtil\Optional.h" \
- "$(ice_cpp_dir)\include\IceUtil\UndefSysMacros.h" \
- "$(ice_cpp_dir)\include\IceUtil\PopDisableWarnings.h" \
- "$(ice_cpp_dir)\include\IceUtil\StringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\Plugin.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerF.h" \
- "$(ice_cpp_dir)\include\Ice\BuiltinSequences.h" \
- "$(ice_cpp_dir)\include\Ice\Initialize.h" \
- "$(ice_cpp_dir)\include\IceUtil\Timer.h" \
- "$(ice_cpp_dir)\include\IceUtil\Thread.h" \
- "$(ice_cpp_dir)\include\IceUtil\Mutex.h" \
- "$(ice_cpp_dir)\include\IceUtil\Lock.h" \
- "$(ice_cpp_dir)\include\IceUtil\ThreadException.h" \
- "$(ice_cpp_dir)\include\IceUtil\Time.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexProtocol.h" \
- "$(ice_cpp_dir)\include\IceUtil\Monitor.h" \
- "$(ice_cpp_dir)\include\IceUtil\Cond.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesF.h" \
- "$(ice_cpp_dir)\include\Ice\Proxy.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionIF.h" \
- "$(ice_cpp_dir)\include\Ice\RequestHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointTypes.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapterF.h" \
- "$(ice_cpp_dir)\include\Ice\ReferenceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResult.h" \
- "$(ice_cpp_dir)\include\IceUtil\UniquePtr.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionF.h" \
- "$(ice_cpp_dir)\include\Ice\InstanceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResultF.h" \
- "$(ice_cpp_dir)\include\Ice\ObserverHelper.h" \
- "$(ice_cpp_dir)\include\Ice\Instrumentation.h" \
- "$(ice_cpp_dir)\include\Ice\Current.h" \
- "$(ice_cpp_dir)\include\Ice\Identity.h" \
- "$(ice_cpp_dir)\include\Ice\Version.h" \
- "$(ice_cpp_dir)\include\Ice\BasicStream.h" \
- "$(ice_cpp_dir)\include\Ice\Object.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\Buffer.h" \
- "$(ice_cpp_dir)\include\Ice\Protocol.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedDataF.h" \
- "$(ice_cpp_dir)\include\Ice\UserExceptionFactory.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTable.h" \
- "$(ice_cpp_dir)\include\Ice\InstrumentationF.h" \
- "$(ice_cpp_dir)\include\Ice\Dispatcher.h" \
- "$(ice_cpp_dir)\include\Ice\LocalException.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\GCObject.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexPtrLock.h" \
- "$(ice_cpp_dir)\include\Ice\Incoming.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ServantManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\ResponseHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Properties.h" \
- "$(ice_cpp_dir)\include\Ice\Logger.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerUtil.h" \
- "$(ice_cpp_dir)\include\Ice\RemoteLogger.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTableInit.h" \
- "$(ice_cpp_dir)\include\Ice\DefaultObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\Communicator.h" \
- "$(ice_cpp_dir)\include\Ice\RouterF.h" \
- "$(ice_cpp_dir)\include\Ice\LocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\PluginF.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContextF.h" \
- "$(ice_cpp_dir)\include\Ice\FacetMap.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorAsync.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapter.h" \
- "$(ice_cpp_dir)\include\Ice\Endpoint.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocator.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedData.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\Process.h" \
- "$(ice_cpp_dir)\include\Ice\Application.h" \
- "$(ice_cpp_dir)\include\Ice\Connection.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Functional.h" \
- "$(ice_cpp_dir)\include\IceUtil\Functional.h" \
- "$(ice_cpp_dir)\include\Ice\Stream.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContext.h" \
- "$(ice_cpp_dir)\include\Ice\Locator.h" \
- "$(ice_cpp_dir)\include\Ice\ProcessF.h" \
- "$(ice_cpp_dir)\include\Ice\Router.h" \
- "$(ice_cpp_dir)\include\Ice\DispatchInterceptor.h" \
- "$(ice_cpp_dir)\include\Ice\NativePropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\Metrics.h" \
- "$(ice_cpp_dir)\include\Ice\Service.h" \
- "Communicator.h" \
- "Proxy.h" \
- "Types.h" \
- "$(ice_cpp_dir)\include\IceUtil\OutputUtil.h" \
- "Util.h" \
- "$(ice_cpp_dir)\include\Slice\PHPUtil.h" \
- "$(ice_cpp_dir)\include\Slice\Parser.h" \
-
-Properties.obj: \
- Properties.cpp \
- "Properties.h" \
- "Config.h" \
- "$(ice_cpp_dir)\include\Ice\Ice.h" \
- "$(ice_cpp_dir)\include\IceUtil\PushDisableWarnings.h" \
- "$(ice_cpp_dir)\include\Ice\Config.h" \
- "$(ice_cpp_dir)\include\IceUtil\Config.h" \
- "$(ice_cpp_dir)\include\Ice\DeprecatedStringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyF.h" \
- "$(ice_cpp_dir)\include\IceUtil\Shared.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyHandle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Handle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\Handle.h" \
- "$(ice_cpp_dir)\include\Ice\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\Format.h" \
- "$(ice_cpp_dir)\include\Ice\StreamF.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObject.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\StreamHelpers.h" \
- "$(ice_cpp_dir)\include\IceUtil\ScopedArray.h" \
- "$(ice_cpp_dir)\include\IceUtil\Iterator.h" \
- "$(ice_cpp_dir)\include\IceUtil\Optional.h" \
- "$(ice_cpp_dir)\include\IceUtil\UndefSysMacros.h" \
- "$(ice_cpp_dir)\include\IceUtil\PopDisableWarnings.h" \
- "$(ice_cpp_dir)\include\IceUtil\StringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\Plugin.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerF.h" \
- "$(ice_cpp_dir)\include\Ice\BuiltinSequences.h" \
- "$(ice_cpp_dir)\include\Ice\Initialize.h" \
- "$(ice_cpp_dir)\include\IceUtil\Timer.h" \
- "$(ice_cpp_dir)\include\IceUtil\Thread.h" \
- "$(ice_cpp_dir)\include\IceUtil\Mutex.h" \
- "$(ice_cpp_dir)\include\IceUtil\Lock.h" \
- "$(ice_cpp_dir)\include\IceUtil\ThreadException.h" \
- "$(ice_cpp_dir)\include\IceUtil\Time.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexProtocol.h" \
- "$(ice_cpp_dir)\include\IceUtil\Monitor.h" \
- "$(ice_cpp_dir)\include\IceUtil\Cond.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesF.h" \
- "$(ice_cpp_dir)\include\Ice\Proxy.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionIF.h" \
- "$(ice_cpp_dir)\include\Ice\RequestHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointTypes.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapterF.h" \
- "$(ice_cpp_dir)\include\Ice\ReferenceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResult.h" \
- "$(ice_cpp_dir)\include\IceUtil\UniquePtr.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionF.h" \
- "$(ice_cpp_dir)\include\Ice\InstanceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResultF.h" \
- "$(ice_cpp_dir)\include\Ice\ObserverHelper.h" \
- "$(ice_cpp_dir)\include\Ice\Instrumentation.h" \
- "$(ice_cpp_dir)\include\Ice\Current.h" \
- "$(ice_cpp_dir)\include\Ice\Identity.h" \
- "$(ice_cpp_dir)\include\Ice\Version.h" \
- "$(ice_cpp_dir)\include\Ice\BasicStream.h" \
- "$(ice_cpp_dir)\include\Ice\Object.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\Buffer.h" \
- "$(ice_cpp_dir)\include\Ice\Protocol.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedDataF.h" \
- "$(ice_cpp_dir)\include\Ice\UserExceptionFactory.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTable.h" \
- "$(ice_cpp_dir)\include\Ice\InstrumentationF.h" \
- "$(ice_cpp_dir)\include\Ice\Dispatcher.h" \
- "$(ice_cpp_dir)\include\Ice\LocalException.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\GCObject.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexPtrLock.h" \
- "$(ice_cpp_dir)\include\Ice\Incoming.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ServantManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\ResponseHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Properties.h" \
- "$(ice_cpp_dir)\include\Ice\Logger.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerUtil.h" \
- "$(ice_cpp_dir)\include\Ice\RemoteLogger.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTableInit.h" \
- "$(ice_cpp_dir)\include\Ice\DefaultObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\Communicator.h" \
- "$(ice_cpp_dir)\include\Ice\RouterF.h" \
- "$(ice_cpp_dir)\include\Ice\LocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\PluginF.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContextF.h" \
- "$(ice_cpp_dir)\include\Ice\FacetMap.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorAsync.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapter.h" \
- "$(ice_cpp_dir)\include\Ice\Endpoint.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocator.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedData.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\Process.h" \
- "$(ice_cpp_dir)\include\Ice\Application.h" \
- "$(ice_cpp_dir)\include\Ice\Connection.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Functional.h" \
- "$(ice_cpp_dir)\include\IceUtil\Functional.h" \
- "$(ice_cpp_dir)\include\Ice\Stream.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContext.h" \
- "$(ice_cpp_dir)\include\Ice\Locator.h" \
- "$(ice_cpp_dir)\include\Ice\ProcessF.h" \
- "$(ice_cpp_dir)\include\Ice\Router.h" \
- "$(ice_cpp_dir)\include\Ice\DispatchInterceptor.h" \
- "$(ice_cpp_dir)\include\Ice\NativePropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\Metrics.h" \
- "$(ice_cpp_dir)\include\Ice\Service.h" \
- "Util.h" \
-
-Proxy.obj: \
- Proxy.cpp \
- "Proxy.h" \
- "Config.h" \
- "$(ice_cpp_dir)\include\Ice\Ice.h" \
- "$(ice_cpp_dir)\include\IceUtil\PushDisableWarnings.h" \
- "$(ice_cpp_dir)\include\Ice\Config.h" \
- "$(ice_cpp_dir)\include\IceUtil\Config.h" \
- "$(ice_cpp_dir)\include\Ice\DeprecatedStringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyF.h" \
- "$(ice_cpp_dir)\include\IceUtil\Shared.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyHandle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Handle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\Handle.h" \
- "$(ice_cpp_dir)\include\Ice\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\Format.h" \
- "$(ice_cpp_dir)\include\Ice\StreamF.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObject.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\StreamHelpers.h" \
- "$(ice_cpp_dir)\include\IceUtil\ScopedArray.h" \
- "$(ice_cpp_dir)\include\IceUtil\Iterator.h" \
- "$(ice_cpp_dir)\include\IceUtil\Optional.h" \
- "$(ice_cpp_dir)\include\IceUtil\UndefSysMacros.h" \
- "$(ice_cpp_dir)\include\IceUtil\PopDisableWarnings.h" \
- "$(ice_cpp_dir)\include\IceUtil\StringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\Plugin.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerF.h" \
- "$(ice_cpp_dir)\include\Ice\BuiltinSequences.h" \
- "$(ice_cpp_dir)\include\Ice\Initialize.h" \
- "$(ice_cpp_dir)\include\IceUtil\Timer.h" \
- "$(ice_cpp_dir)\include\IceUtil\Thread.h" \
- "$(ice_cpp_dir)\include\IceUtil\Mutex.h" \
- "$(ice_cpp_dir)\include\IceUtil\Lock.h" \
- "$(ice_cpp_dir)\include\IceUtil\ThreadException.h" \
- "$(ice_cpp_dir)\include\IceUtil\Time.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexProtocol.h" \
- "$(ice_cpp_dir)\include\IceUtil\Monitor.h" \
- "$(ice_cpp_dir)\include\IceUtil\Cond.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesF.h" \
- "$(ice_cpp_dir)\include\Ice\Proxy.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionIF.h" \
- "$(ice_cpp_dir)\include\Ice\RequestHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointTypes.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapterF.h" \
- "$(ice_cpp_dir)\include\Ice\ReferenceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResult.h" \
- "$(ice_cpp_dir)\include\IceUtil\UniquePtr.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionF.h" \
- "$(ice_cpp_dir)\include\Ice\InstanceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResultF.h" \
- "$(ice_cpp_dir)\include\Ice\ObserverHelper.h" \
- "$(ice_cpp_dir)\include\Ice\Instrumentation.h" \
- "$(ice_cpp_dir)\include\Ice\Current.h" \
- "$(ice_cpp_dir)\include\Ice\Identity.h" \
- "$(ice_cpp_dir)\include\Ice\Version.h" \
- "$(ice_cpp_dir)\include\Ice\BasicStream.h" \
- "$(ice_cpp_dir)\include\Ice\Object.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\Buffer.h" \
- "$(ice_cpp_dir)\include\Ice\Protocol.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedDataF.h" \
- "$(ice_cpp_dir)\include\Ice\UserExceptionFactory.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTable.h" \
- "$(ice_cpp_dir)\include\Ice\InstrumentationF.h" \
- "$(ice_cpp_dir)\include\Ice\Dispatcher.h" \
- "$(ice_cpp_dir)\include\Ice\LocalException.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\GCObject.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexPtrLock.h" \
- "$(ice_cpp_dir)\include\Ice\Incoming.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ServantManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\ResponseHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Properties.h" \
- "$(ice_cpp_dir)\include\Ice\Logger.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerUtil.h" \
- "$(ice_cpp_dir)\include\Ice\RemoteLogger.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTableInit.h" \
- "$(ice_cpp_dir)\include\Ice\DefaultObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\Communicator.h" \
- "$(ice_cpp_dir)\include\Ice\RouterF.h" \
- "$(ice_cpp_dir)\include\Ice\LocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\PluginF.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContextF.h" \
- "$(ice_cpp_dir)\include\Ice\FacetMap.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorAsync.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapter.h" \
- "$(ice_cpp_dir)\include\Ice\Endpoint.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocator.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedData.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\Process.h" \
- "$(ice_cpp_dir)\include\Ice\Application.h" \
- "$(ice_cpp_dir)\include\Ice\Connection.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Functional.h" \
- "$(ice_cpp_dir)\include\IceUtil\Functional.h" \
- "$(ice_cpp_dir)\include\Ice\Stream.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContext.h" \
- "$(ice_cpp_dir)\include\Ice\Locator.h" \
- "$(ice_cpp_dir)\include\Ice\ProcessF.h" \
- "$(ice_cpp_dir)\include\Ice\Router.h" \
- "$(ice_cpp_dir)\include\Ice\DispatchInterceptor.h" \
- "$(ice_cpp_dir)\include\Ice\NativePropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\Metrics.h" \
- "$(ice_cpp_dir)\include\Ice\Service.h" \
- "Communicator.h" \
- "Types.h" \
- "Operation.h" \
- "$(ice_cpp_dir)\include\IceUtil\OutputUtil.h" \
- "Connection.h" \
- "Endpoint.h" \
- "Util.h" \
-
-Types.obj: \
- Types.cpp \
- "Types.h" \
- "Config.h" \
- "$(ice_cpp_dir)\include\Ice\Ice.h" \
- "$(ice_cpp_dir)\include\IceUtil\PushDisableWarnings.h" \
- "$(ice_cpp_dir)\include\Ice\Config.h" \
- "$(ice_cpp_dir)\include\IceUtil\Config.h" \
- "$(ice_cpp_dir)\include\Ice\DeprecatedStringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyF.h" \
- "$(ice_cpp_dir)\include\IceUtil\Shared.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyHandle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Handle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\Handle.h" \
- "$(ice_cpp_dir)\include\Ice\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\Format.h" \
- "$(ice_cpp_dir)\include\Ice\StreamF.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObject.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\StreamHelpers.h" \
- "$(ice_cpp_dir)\include\IceUtil\ScopedArray.h" \
- "$(ice_cpp_dir)\include\IceUtil\Iterator.h" \
- "$(ice_cpp_dir)\include\IceUtil\Optional.h" \
- "$(ice_cpp_dir)\include\IceUtil\UndefSysMacros.h" \
- "$(ice_cpp_dir)\include\IceUtil\PopDisableWarnings.h" \
- "$(ice_cpp_dir)\include\IceUtil\StringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\Plugin.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerF.h" \
- "$(ice_cpp_dir)\include\Ice\BuiltinSequences.h" \
- "$(ice_cpp_dir)\include\Ice\Initialize.h" \
- "$(ice_cpp_dir)\include\IceUtil\Timer.h" \
- "$(ice_cpp_dir)\include\IceUtil\Thread.h" \
- "$(ice_cpp_dir)\include\IceUtil\Mutex.h" \
- "$(ice_cpp_dir)\include\IceUtil\Lock.h" \
- "$(ice_cpp_dir)\include\IceUtil\ThreadException.h" \
- "$(ice_cpp_dir)\include\IceUtil\Time.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexProtocol.h" \
- "$(ice_cpp_dir)\include\IceUtil\Monitor.h" \
- "$(ice_cpp_dir)\include\IceUtil\Cond.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesF.h" \
- "$(ice_cpp_dir)\include\Ice\Proxy.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionIF.h" \
- "$(ice_cpp_dir)\include\Ice\RequestHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointTypes.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapterF.h" \
- "$(ice_cpp_dir)\include\Ice\ReferenceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResult.h" \
- "$(ice_cpp_dir)\include\IceUtil\UniquePtr.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionF.h" \
- "$(ice_cpp_dir)\include\Ice\InstanceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResultF.h" \
- "$(ice_cpp_dir)\include\Ice\ObserverHelper.h" \
- "$(ice_cpp_dir)\include\Ice\Instrumentation.h" \
- "$(ice_cpp_dir)\include\Ice\Current.h" \
- "$(ice_cpp_dir)\include\Ice\Identity.h" \
- "$(ice_cpp_dir)\include\Ice\Version.h" \
- "$(ice_cpp_dir)\include\Ice\BasicStream.h" \
- "$(ice_cpp_dir)\include\Ice\Object.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\Buffer.h" \
- "$(ice_cpp_dir)\include\Ice\Protocol.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedDataF.h" \
- "$(ice_cpp_dir)\include\Ice\UserExceptionFactory.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTable.h" \
- "$(ice_cpp_dir)\include\Ice\InstrumentationF.h" \
- "$(ice_cpp_dir)\include\Ice\Dispatcher.h" \
- "$(ice_cpp_dir)\include\Ice\LocalException.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\GCObject.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexPtrLock.h" \
- "$(ice_cpp_dir)\include\Ice\Incoming.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ServantManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\ResponseHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Properties.h" \
- "$(ice_cpp_dir)\include\Ice\Logger.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerUtil.h" \
- "$(ice_cpp_dir)\include\Ice\RemoteLogger.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTableInit.h" \
- "$(ice_cpp_dir)\include\Ice\DefaultObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\Communicator.h" \
- "$(ice_cpp_dir)\include\Ice\RouterF.h" \
- "$(ice_cpp_dir)\include\Ice\LocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\PluginF.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContextF.h" \
- "$(ice_cpp_dir)\include\Ice\FacetMap.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorAsync.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapter.h" \
- "$(ice_cpp_dir)\include\Ice\Endpoint.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocator.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedData.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\Process.h" \
- "$(ice_cpp_dir)\include\Ice\Application.h" \
- "$(ice_cpp_dir)\include\Ice\Connection.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Functional.h" \
- "$(ice_cpp_dir)\include\IceUtil\Functional.h" \
- "$(ice_cpp_dir)\include\Ice\Stream.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContext.h" \
- "$(ice_cpp_dir)\include\Ice\Locator.h" \
- "$(ice_cpp_dir)\include\Ice\ProcessF.h" \
- "$(ice_cpp_dir)\include\Ice\Router.h" \
- "$(ice_cpp_dir)\include\Ice\DispatchInterceptor.h" \
- "$(ice_cpp_dir)\include\Ice\NativePropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\Metrics.h" \
- "$(ice_cpp_dir)\include\Ice\Service.h" \
- "Communicator.h" \
- "Operation.h" \
- "$(ice_cpp_dir)\include\IceUtil\OutputUtil.h" \
- "Proxy.h" \
- "Util.h" \
- "$(ice_cpp_dir)\include\IceUtil\InputUtil.h" \
- "$(ice_cpp_dir)\include\Slice\PHPUtil.h" \
- "$(ice_cpp_dir)\include\Slice\Parser.h" \
-
-Util.obj: \
- Util.cpp \
- "Util.h" \
- "Config.h" \
- "$(ice_cpp_dir)\include\Ice\Ice.h" \
- "$(ice_cpp_dir)\include\IceUtil\PushDisableWarnings.h" \
- "$(ice_cpp_dir)\include\Ice\Config.h" \
- "$(ice_cpp_dir)\include\IceUtil\Config.h" \
- "$(ice_cpp_dir)\include\Ice\DeprecatedStringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyF.h" \
- "$(ice_cpp_dir)\include\IceUtil\Shared.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyHandle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Handle.h" \
- "$(ice_cpp_dir)\include\IceUtil\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\Handle.h" \
- "$(ice_cpp_dir)\include\Ice\Exception.h" \
- "$(ice_cpp_dir)\include\Ice\Format.h" \
- "$(ice_cpp_dir)\include\Ice\StreamF.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObject.h" \
- "$(ice_cpp_dir)\include\Ice\LocalObjectF.h" \
- "$(ice_cpp_dir)\include\Ice\StreamHelpers.h" \
- "$(ice_cpp_dir)\include\IceUtil\ScopedArray.h" \
- "$(ice_cpp_dir)\include\IceUtil\Iterator.h" \
- "$(ice_cpp_dir)\include\IceUtil\Optional.h" \
- "$(ice_cpp_dir)\include\IceUtil\UndefSysMacros.h" \
- "$(ice_cpp_dir)\include\IceUtil\PopDisableWarnings.h" \
- "$(ice_cpp_dir)\include\IceUtil\StringConverter.h" \
- "$(ice_cpp_dir)\include\Ice\Plugin.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerF.h" \
- "$(ice_cpp_dir)\include\Ice\BuiltinSequences.h" \
- "$(ice_cpp_dir)\include\Ice\Initialize.h" \
- "$(ice_cpp_dir)\include\IceUtil\Timer.h" \
- "$(ice_cpp_dir)\include\IceUtil\Thread.h" \
- "$(ice_cpp_dir)\include\IceUtil\Mutex.h" \
- "$(ice_cpp_dir)\include\IceUtil\Lock.h" \
- "$(ice_cpp_dir)\include\IceUtil\ThreadException.h" \
- "$(ice_cpp_dir)\include\IceUtil\Time.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexProtocol.h" \
- "$(ice_cpp_dir)\include\IceUtil\Monitor.h" \
- "$(ice_cpp_dir)\include\IceUtil\Cond.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesF.h" \
- "$(ice_cpp_dir)\include\Ice\Proxy.h" \
- "$(ice_cpp_dir)\include\Ice\ProxyFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionIF.h" \
- "$(ice_cpp_dir)\include\Ice\RequestHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointF.h" \
- "$(ice_cpp_dir)\include\Ice\EndpointTypes.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapterF.h" \
- "$(ice_cpp_dir)\include\Ice\ReferenceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResult.h" \
- "$(ice_cpp_dir)\include\IceUtil\UniquePtr.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionF.h" \
- "$(ice_cpp_dir)\include\Ice\InstanceF.h" \
- "$(ice_cpp_dir)\include\Ice\AsyncResultF.h" \
- "$(ice_cpp_dir)\include\Ice\ObserverHelper.h" \
- "$(ice_cpp_dir)\include\Ice\Instrumentation.h" \
- "$(ice_cpp_dir)\include\Ice\Current.h" \
- "$(ice_cpp_dir)\include\Ice\Identity.h" \
- "$(ice_cpp_dir)\include\Ice\Version.h" \
- "$(ice_cpp_dir)\include\Ice\BasicStream.h" \
- "$(ice_cpp_dir)\include\Ice\Object.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryF.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactoryManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\Buffer.h" \
- "$(ice_cpp_dir)\include\Ice\Protocol.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedDataF.h" \
- "$(ice_cpp_dir)\include\Ice\UserExceptionFactory.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTable.h" \
- "$(ice_cpp_dir)\include\Ice\InstrumentationF.h" \
- "$(ice_cpp_dir)\include\Ice\Dispatcher.h" \
- "$(ice_cpp_dir)\include\Ice\LocalException.h" \
- "$(ice_cpp_dir)\include\Ice\PropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\GCObject.h" \
- "$(ice_cpp_dir)\include\IceUtil\MutexPtrLock.h" \
- "$(ice_cpp_dir)\include\Ice\Incoming.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\ServantManagerF.h" \
- "$(ice_cpp_dir)\include\Ice\ResponseHandlerF.h" \
- "$(ice_cpp_dir)\include\Ice\IncomingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Properties.h" \
- "$(ice_cpp_dir)\include\Ice\Logger.h" \
- "$(ice_cpp_dir)\include\Ice\LoggerUtil.h" \
- "$(ice_cpp_dir)\include\Ice\RemoteLogger.h" \
- "$(ice_cpp_dir)\include\Ice\FactoryTableInit.h" \
- "$(ice_cpp_dir)\include\Ice\DefaultObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectFactory.h" \
- "$(ice_cpp_dir)\include\Ice\Communicator.h" \
- "$(ice_cpp_dir)\include\Ice\RouterF.h" \
- "$(ice_cpp_dir)\include\Ice\LocatorF.h" \
- "$(ice_cpp_dir)\include\Ice\PluginF.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContextF.h" \
- "$(ice_cpp_dir)\include\Ice\FacetMap.h" \
- "$(ice_cpp_dir)\include\Ice\CommunicatorAsync.h" \
- "$(ice_cpp_dir)\include\Ice\ObjectAdapter.h" \
- "$(ice_cpp_dir)\include\Ice\Endpoint.h" \
- "$(ice_cpp_dir)\include\Ice\ServantLocator.h" \
- "$(ice_cpp_dir)\include\Ice\SlicedData.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsync.h" \
- "$(ice_cpp_dir)\include\Ice\OutgoingAsyncF.h" \
- "$(ice_cpp_dir)\include\Ice\Process.h" \
- "$(ice_cpp_dir)\include\Ice\Application.h" \
- "$(ice_cpp_dir)\include\Ice\Connection.h" \
- "$(ice_cpp_dir)\include\Ice\ConnectionAsync.h" \
- "$(ice_cpp_dir)\include\Ice\Functional.h" \
- "$(ice_cpp_dir)\include\IceUtil\Functional.h" \
- "$(ice_cpp_dir)\include\Ice\Stream.h" \
- "$(ice_cpp_dir)\include\Ice\ImplicitContext.h" \
- "$(ice_cpp_dir)\include\Ice\Locator.h" \
- "$(ice_cpp_dir)\include\Ice\ProcessF.h" \
- "$(ice_cpp_dir)\include\Ice\Router.h" \
- "$(ice_cpp_dir)\include\Ice\DispatchInterceptor.h" \
- "$(ice_cpp_dir)\include\Ice\NativePropertiesAdmin.h" \
- "$(ice_cpp_dir)\include\Ice\Metrics.h" \
- "$(ice_cpp_dir)\include\Ice\Service.h" \
- "$(ice_cpp_dir)\include\IceUtil\UUID.h" \
- "$(ice_cpp_dir)\include\Slice\PHPUtil.h" \
- "$(ice_cpp_dir)\include\Slice\Parser.h" \
diff --git a/php/src/php5/Communicator.cpp b/php/src/php5/Communicator.cpp
index c1002bd046b..a541b426ebe 100644
--- a/php/src/php5/Communicator.cpp
+++ b/php/src/php5/Communicator.cpp
@@ -13,6 +13,7 @@
#include <Proxy.h>
#include <Types.h>
#include <Util.h>
+#include <IceUtil/DisableWarnings.h>
#include <IceUtil/Options.h>
#include <IceUtil/MutexPtrLock.h>
#include <IceUtil/StringUtil.h>
@@ -30,6 +31,7 @@ namespace IcePHP
{
zend_class_entry* communicatorClassEntry = 0;
+zend_class_entry* valueFactoryManagerClassEntry = 0;
//
// An active communicator is in use by at least one request and may have
@@ -51,8 +53,19 @@ public:
};
typedef IceUtil::Handle<ActiveCommunicator> ActiveCommunicatorPtr;
-typedef std::map<std::string, zval*> ObjectFactoryMap;
+class FactoryWrapper;
+typedef IceUtil::Handle<FactoryWrapper> FactoryWrapperPtr;
+class DefaultValueFactory;
+typedef IceUtil::Handle<DefaultValueFactory> DefaultValueFactoryPtr;
+
+//
+// CommunicatorInfoI encapsulates communicator-related information that
+// is specific to a PHP "request". In other words, multiple PHP requests
+// might share the same communicator instance but still need separate
+// workspaces. For example, we don't want the value factories installed
+// by one request to influence the behavior of another request.
+//
class CommunicatorInfoI : public CommunicatorInfo
{
public:
@@ -65,44 +78,110 @@ public:
virtual Ice::CommunicatorPtr getCommunicator() const;
- bool addObjectFactory(const std::string&, zval* TSRMLS_DC);
- bool findObjectFactory(const std::string&, zval* TSRMLS_DC);
- void destroyObjectFactories(TSRMLS_D);
+ bool addFactory(zval*, const string&, bool TSRMLS_DC);
+ FactoryWrapperPtr findFactory(const string&) const;
+ Ice::ValueFactoryPtr defaultFactory() const { return _defaultFactory; }
+ void destroyFactories(TSRMLS_D);
const ActiveCommunicatorPtr ac;
const zval zv;
- ObjectFactoryMap objectFactories;
+
+private:
+
+ typedef map<string, FactoryWrapperPtr> FactoryMap;
+
+ FactoryMap _factories;
+ DefaultValueFactoryPtr _defaultFactory;
};
typedef IceUtil::Handle<CommunicatorInfoI> CommunicatorInfoIPtr;
//
-// Each PHP request has its own set of object factories. More precisely, there is
-// an object factory map for each communicator that is created by a PHP request.
-// The factory class defined below delegates the create/destroy methods to PHP
-// objects supplied by the application. An instance of this class is installed
-// as the communicator's default object factory, and the class holds a reference
-// to its communicator. When create is invoked, the class resolves the appropriate
-// PHP object as follows:
+// Wraps a PHP object/value factory.
+//
+class FactoryWrapper : public Ice::ValueFactory
+{
+public:
+
+ FactoryWrapper(zval*, bool, const CommunicatorInfoIPtr&);
+
+ virtual Ice::ValuePtr create(const string&);
+
+ void getZval(zval* TSRMLS_DC);
+
+ bool isObjectFactory() const;
+
+ void destroy(TSRMLS_D);
+
+protected:
+
+ zval* _factory;
+ bool _isObjectFactory;
+ CommunicatorInfoIPtr _info;
+};
+
+//
+// Implements the default value factory behavior.
+//
+class DefaultValueFactory : public Ice::ValueFactory
+{
+public:
+
+ DefaultValueFactory(const CommunicatorInfoIPtr&);
+
+ virtual Ice::ValuePtr create(const string&);
+
+ void setDelegate(const FactoryWrapperPtr& d) { _delegate = d; }
+ FactoryWrapperPtr getDelegate() const { return _delegate; }
+
+ void destroy(TSRMLS_D);
+
+private:
+
+ FactoryWrapperPtr _delegate;
+ CommunicatorInfoIPtr _info;
+};
+
+//
+// Each PHP request has its own set of value factories. More precisely, there is
+// a value factory map for each communicator that is created by a PHP request.
+// (see CommunicatorInfoI).
+//
+// We define a custom value factory manager implementation that delegates to
+// to PHP objects supplied by the application.
+//
+// An instance of this class is installed as the communicator's value factory
+// manager, and the class holds a reference to its communicator. When find() is
+// invoked, the class resolves the appropriate factory as follows:
//
// * Using its communicator reference as the key, look up the corresponding
// CommunicatorInfoI object in the request-specific communicator map.
//
-// * In the object factory map held by the CommunicatorInfoI object, look for a
-// PHP factory object using the same algorithm as the Ice core.
+// * If the type-id is empty, return the default factory. This factory will
+// either delegate to an application-supplied default factory (if present) or
+// default-construct an instance of a concrete Slice class type.
+//
+// * For non-empty type-ids, return a wrapper around the application-supplied
+// factory, if any.
//
-class ObjectFactoryI : public Ice::ObjectFactory
+class ValueFactoryManager : public Ice::ValueFactoryManager
{
public:
- ObjectFactoryI(const Ice::CommunicatorPtr&);
+ virtual void add(const Ice::ValueFactoryPtr&, const string&);
+ virtual Ice::ValueFactoryPtr find(const string&) const;
- virtual Ice::ObjectPtr create(const std::string&);
- virtual void destroy();
+ void setCommunicator(const Ice::CommunicatorPtr& c) { _communicator = c; }
+ Ice::CommunicatorPtr getCommunicator() const { return _communicator; }
+
+ void getZval(zval* TSRMLS_DC);
+
+ void destroy();
private:
Ice::CommunicatorPtr _communicator;
};
+typedef IceUtil::Handle<ValueFactoryManager> ValueFactoryManagerPtr;
class ReaperTask : public IceUtil::TimerTask
{
@@ -121,6 +200,11 @@ namespace
zend_object_handlers _handlers;
//
+// ValueFactoryManager support.
+//
+zend_object_handlers _vfmHandlers;
+
+//
// The profile map holds Properties objects corresponding to the "default" profile
// (defined via the ice.config & ice.options settings in php.ini) as well as named
// profiles defined in an external file.
@@ -154,7 +238,7 @@ public:
{
_registeredCommunicatorsMutex = new IceUtil::Mutex();
}
-
+
~Init()
{
delete _registeredCommunicatorsMutex;
@@ -170,6 +254,10 @@ extern "C"
static zend_object_value handleAlloc(zend_class_entry* TSRMLS_DC);
static void handleFreeStorage(void* TSRMLS_DC);
static zend_object_value handleClone(zval* TSRMLS_DC);
+
+static zend_object_value handleVfmAlloc(zend_class_entry* TSRMLS_DC);
+static void handleVfmFreeStorage(void* TSRMLS_DC);
+static zend_object_value handleVfmClone(zval* TSRMLS_DC);
}
ZEND_METHOD(Ice_Communicator, __construct)
@@ -195,9 +283,9 @@ ZEND_METHOD(Ice_Communicator, destroy)
}
//
- // We need to destroy any object factories installed by this request.
+ // We need to destroy any object|value factories installed by this request.
//
- _this->destroyObjectFactories(TSRMLS_C);
+ _this->destroyFactories(TSRMLS_C);
Ice::CommunicatorPtr c = _this->getCommunicator();
assert(c);
@@ -206,6 +294,10 @@ ZEND_METHOD(Ice_Communicator, destroy)
assert(m->find(c) != m->end());
m->erase(c);
+ ValueFactoryManagerPtr vfm = ValueFactoryManagerPtr::dynamicCast(c->getValueFactoryManager());
+ assert(vfm);
+ vfm->destroy();
+
try
{
c->destroy();
@@ -262,7 +354,7 @@ ZEND_METHOD(Ice_Communicator, proxyToString)
if(zv)
{
Ice::ObjectPrx prx;
- ClassInfoPtr info;
+ ProxyInfoPtr info;
if(!fetchProxy(zv, prx, info TSRMLS_CC))
{
RETURN_NULL();
@@ -328,13 +420,13 @@ ZEND_METHOD(Ice_Communicator, proxyToProperty)
if(zv)
{
Ice::ObjectPrx prx;
- ClassInfoPtr info;
+ ProxyInfoPtr info;
if(!fetchProxy(zv, prx, info TSRMLS_CC))
{
RETURN_NULL();
}
assert(prx);
-
+
Ice::PropertyDict val = _this->getCommunicator()->proxyToProperty(prx, prefix);
if(!createStringMap(return_value, val TSRMLS_CC))
{
@@ -435,7 +527,7 @@ ZEND_METHOD(Ice_Communicator, addObjectFactory)
type = string(id, idLen);
}
- if(!_this->addObjectFactory(type, factory TSRMLS_CC))
+ if(!_this->addFactory(factory, type, true TSRMLS_CC))
{
RETURN_NULL();
}
@@ -459,8 +551,45 @@ ZEND_METHOD(Ice_Communicator, findObjectFactory)
type = string(id, idLen);
}
- if(!_this->findObjectFactory(type, return_value TSRMLS_CC))
+ FactoryWrapperPtr w = _this->findFactory(type);
+ if(w && w->isObjectFactory())
+ {
+ w->getZval(return_value TSRMLS_CC);
+ }
+ else
+ {
+ RETURN_NULL();
+ }
+}
+
+ZEND_METHOD(Ice_Communicator, getValueFactoryManager)
+{
+ if(ZEND_NUM_ARGS() > 0)
+ {
+ WRONG_PARAM_COUNT;
+ }
+
+ CommunicatorInfoIPtr _this = Wrapper<CommunicatorInfoIPtr>::value(getThis() TSRMLS_CC);
+ assert(_this);
+
+ try
+ {
+ ValueFactoryManagerPtr vfm =
+ ValueFactoryManagerPtr::dynamicCast(_this->getCommunicator()->getValueFactoryManager());
+ assert(vfm);
+ if(object_init_ex(return_value, valueFactoryManagerClassEntry) != SUCCESS)
+ {
+ runtimeError("unable to initialize properties object" TSRMLS_CC);
+ RETURN_NULL();
+ }
+
+ Wrapper<ValueFactoryManagerPtr>* obj = Wrapper<ValueFactoryManagerPtr>::extract(return_value TSRMLS_CC);
+ assert(!obj->ptr);
+ obj->ptr = new ValueFactoryManagerPtr(vfm);
+ }
+ catch(const IceUtil::Exception& ex)
{
+ throwException(ex TSRMLS_CC);
RETURN_NULL();
}
}
@@ -501,7 +630,7 @@ ZEND_METHOD(Ice_Communicator, getLogger)
{
WRONG_PARAM_COUNT;
}
-
+
CommunicatorInfoIPtr _this = Wrapper<CommunicatorInfoIPtr>::value(getThis() TSRMLS_CC);
assert(_this);
@@ -535,7 +664,7 @@ ZEND_METHOD(Ice_Communicator, getDefaultRouter)
Ice::RouterPrx router = _this->getCommunicator()->getDefaultRouter();
if(router)
{
- ClassInfoPtr info = getClassInfoById("::Ice::Router" TSRMLS_CC);
+ ProxyInfoPtr info = getProxyInfo("::Ice::Router" TSRMLS_CC);
if(!info)
{
runtimeError("no definition for Ice::Router" TSRMLS_CC);
@@ -571,7 +700,7 @@ ZEND_METHOD(Ice_Communicator, setDefaultRouter)
}
Ice::ObjectPrx proxy;
- ClassInfoPtr info;
+ ProxyInfoPtr info;
if(zv && !fetchProxy(zv, proxy, info TSRMLS_CC))
{
RETURN_NULL();
@@ -613,7 +742,7 @@ ZEND_METHOD(Ice_Communicator, getDefaultLocator)
Ice::LocatorPrx locator = _this->getCommunicator()->getDefaultLocator();
if(locator)
{
- ClassInfoPtr info = getClassInfoById("::Ice::Locator" TSRMLS_CC);
+ ProxyInfoPtr info = getProxyInfo("::Ice::Locator" TSRMLS_CC);
if(!info)
{
runtimeError("no definition for Ice::Locator" TSRMLS_CC);
@@ -649,7 +778,7 @@ ZEND_METHOD(Ice_Communicator, setDefaultLocator)
}
Ice::ObjectPrx proxy;
- ClassInfoPtr info;
+ ProxyInfoPtr info;
if(zv && !fetchProxy(zv, proxy, info TSRMLS_CC))
{
RETURN_NULL();
@@ -678,17 +807,25 @@ ZEND_METHOD(Ice_Communicator, setDefaultLocator)
ZEND_METHOD(Ice_Communicator, flushBatchRequests)
{
- CommunicatorInfoIPtr _this = Wrapper<CommunicatorInfoIPtr>::value(getThis() TSRMLS_CC);
- assert(_this);
+ zval* compress;
+ if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast<char*>("z"), &compress TSRMLS_CC) != SUCCESS)
+ {
+ RETURN_NULL();
+ }
- if(ZEND_NUM_ARGS() != 8)
+ if(Z_TYPE_P(compress) != IS_LONG)
{
- WRONG_PARAM_COUNT;
+ invalidArgument("value for 'compress' argument must be an enumerator of CompressBatch" TSRMLS_CC);
+ RETURN_NULL();
}
+ Ice::CompressBatch cb = static_cast<Ice::CompressBatch>(Z_LVAL_P(compress));
+
+ CommunicatorInfoIPtr _this = Wrapper<CommunicatorInfoIPtr>::value(getThis() TSRMLS_CC);
+ assert(_this);
try
{
- _this->getCommunicator()->flushBatchRequests();
+ _this->getCommunicator()->flushBatchRequests(cb);
}
catch(const IceUtil::Exception& ex)
{
@@ -697,6 +834,83 @@ ZEND_METHOD(Ice_Communicator, flushBatchRequests)
}
}
+ZEND_METHOD(Ice_ValueFactoryManager, __construct)
+{
+ runtimeError("value factory managers cannot be instantiated directly" TSRMLS_CC);
+}
+
+ZEND_METHOD(Ice_ValueFactoryManager, add)
+{
+ ValueFactoryManagerPtr _this = Wrapper<ValueFactoryManagerPtr>::value(getThis() TSRMLS_CC);
+ assert(_this);
+
+ zend_class_entry* factoryClass = idToClass("Ice::ValueFactory" TSRMLS_CC);
+ assert(factoryClass);
+
+ zval* factory;
+ char* id;
+ int idLen;
+ if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast<char*>("Os!"), &factory, factoryClass, &id,
+ &idLen TSRMLS_CC) != SUCCESS)
+ {
+ RETURN_NULL();
+ }
+
+ string type;
+ if(id)
+ {
+ type = string(id, idLen);
+ }
+
+ CommunicatorMap* m = static_cast<CommunicatorMap*>(ICE_G(communicatorMap));
+ assert(m);
+ CommunicatorMap::iterator p = m->find(_this->getCommunicator());
+ assert(p != m->end());
+
+ CommunicatorInfoIPtr info = p->second;
+
+ if(!info->addFactory(factory, type, false TSRMLS_CC))
+ {
+ RETURN_NULL();
+ }
+}
+
+ZEND_METHOD(Ice_ValueFactoryManager, find)
+{
+ ValueFactoryManagerPtr _this = Wrapper<ValueFactoryManagerPtr>::value(getThis() TSRMLS_CC);
+ assert(_this);
+
+ char* id;
+ int idLen;
+ if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast<char*>("s!"), &id, &idLen TSRMLS_CC) != SUCCESS)
+ {
+ RETURN_NULL();
+ }
+
+ string type;
+ if(id)
+ {
+ type = string(id, idLen);
+ }
+
+ CommunicatorMap* m = static_cast<CommunicatorMap*>(ICE_G(communicatorMap));
+ assert(m);
+ CommunicatorMap::iterator p = m->find(_this->getCommunicator());
+ assert(p != m->end());
+
+ CommunicatorInfoIPtr info = p->second;
+
+ FactoryWrapperPtr w = info->findFactory(type);
+ if(w)
+ {
+ w->getZval(return_value TSRMLS_CC);
+ }
+ else
+ {
+ RETURN_NULL();
+ }
+}
+
#ifdef _WIN32
extern "C"
#endif
@@ -736,6 +950,46 @@ handleClone(zval* zv TSRMLS_DC)
return zend_object_value();
}
+#ifdef _WIN32
+extern "C"
+#endif
+static zend_object_value
+handleVfmAlloc(zend_class_entry* ce TSRMLS_DC)
+{
+ zend_object_value result;
+
+ Wrapper<ValueFactoryManagerPtr>* obj = Wrapper<ValueFactoryManagerPtr>::create(ce TSRMLS_CC);
+ assert(obj);
+
+ result.handle =
+ zend_objects_store_put(obj, 0, (zend_objects_free_object_storage_t)handleVfmFreeStorage, 0 TSRMLS_CC);
+ result.handlers = &_vfmHandlers;
+
+ return result;
+}
+
+#ifdef _WIN32
+extern "C"
+#endif
+static void
+handleVfmFreeStorage(void* p TSRMLS_DC)
+{
+ Wrapper<ValueFactoryManagerPtr>* obj = static_cast<Wrapper<ValueFactoryManagerPtr>*>(p);
+ delete obj->ptr;
+ zend_object_std_dtor(static_cast<zend_object*>(p) TSRMLS_CC);
+ efree(p);
+}
+
+#ifdef _WIN32
+extern "C"
+#endif
+static zend_object_value
+handleVfmClone(zval* zv TSRMLS_DC)
+{
+ php_error_docref(0 TSRMLS_CC, E_ERROR, "value factory managers cannot be cloned");
+ return zend_object_value();
+}
+
static CommunicatorInfoIPtr
createCommunicator(zval* zv, const ActiveCommunicatorPtr& ac TSRMLS_DC)
{
@@ -791,10 +1045,9 @@ initializeCommunicator(zval* zv, Ice::StringSeq& args, bool hasArgs, const Ice::
ActiveCommunicatorPtr ac = new ActiveCommunicator(c);
- //
- // Install a default object factory that delegates to PHP factories.
- //
- c->addObjectFactory(new ObjectFactoryI(c), "");
+ ValueFactoryManagerPtr vfm = ValueFactoryManagerPtr::dynamicCast(c->getValueFactoryManager());
+ assert(vfm);
+ vfm->setCommunicator(c);
CommunicatorInfoIPtr info = createCommunicator(zv, ac TSRMLS_CC);
if(!info)
@@ -806,6 +1059,8 @@ initializeCommunicator(zval* zv, Ice::StringSeq& args, bool hasArgs, const Ice::
catch(...)
{
}
+
+ vfm->destroy();
}
return info;
@@ -897,7 +1152,8 @@ ZEND_FUNCTION(Ice_initialize)
string member;
member = "properties";
- if(zend_hash_find(Z_OBJPROP_P(zvinit), STRCAST(member.c_str()), static_cast<uint>(member.size() + 1), &data) == SUCCESS)
+ if(zend_hash_find(Z_OBJPROP_P(zvinit), STRCAST(member.c_str()), static_cast<uint>(member.size() + 1), &data)
+ == SUCCESS)
{
zval** val = reinterpret_cast<zval**>(data);
if(!fetchProperties(*val, initData.properties TSRMLS_CC))
@@ -907,7 +1163,8 @@ ZEND_FUNCTION(Ice_initialize)
}
member = "logger";
- if(zend_hash_find(Z_OBJPROP_P(zvinit), STRCAST(member.c_str()), static_cast<uint>(member.size() + 1), &data) == SUCCESS)
+ if(zend_hash_find(Z_OBJPROP_P(zvinit), STRCAST(member.c_str()), static_cast<uint>(member.size() + 1), &data)
+ == SUCCESS)
{
zval** val = reinterpret_cast<zval**>(data);
if(!fetchLogger(*val, initData.logger TSRMLS_CC))
@@ -918,6 +1175,7 @@ ZEND_FUNCTION(Ice_initialize)
}
initData.compactIdResolver = new IdResolver(TSRMLS_C);
+ initData.valueFactoryManager = new ValueFactoryManager;
CommunicatorInfoIPtr info = initializeCommunicator(return_value, seq, hasArgs, initData TSRMLS_CC);
if(!info)
@@ -1115,7 +1373,9 @@ ZEND_FUNCTION(Ice_identityToString)
assert(identityClass);
zval* zv;
- if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast<char*>("O"), &zv, identityClass) != SUCCESS)
+ long mode = 0;
+
+ if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast<char*>("O|l"), &zv, identityClass, &mode TSRMLS_CC) != SUCCESS)
{
RETURN_NULL();
}
@@ -1127,7 +1387,7 @@ ZEND_FUNCTION(Ice_identityToString)
try
{
- string str = Ice::identityToString(id);
+ string str = identityToString(id, static_cast<Ice::ToStringMode>(mode));
RETURN_STRINGL(STRCAST(str.c_str()), static_cast<int>(str.length()), 1);
}
catch(const IceUtil::Exception& ex)
@@ -1179,24 +1439,40 @@ static zend_function_entry _interfaceMethods[] =
};
static zend_function_entry _classMethods[] =
{
- ZEND_ME(Ice_Communicator, __construct, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
- ZEND_ME(Ice_Communicator, destroy, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Communicator, stringToProxy, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Communicator, proxyToString, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Communicator, propertyToProxy, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Communicator, proxyToProperty, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Communicator, stringToIdentity, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Communicator, identityToString, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Communicator, addObjectFactory, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Communicator, findObjectFactory, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Communicator, getImplicitContext, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Communicator, getProperties, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Communicator, getLogger, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Communicator, getDefaultRouter, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Communicator, setDefaultRouter, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Communicator, getDefaultLocator, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Communicator, setDefaultLocator, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Communicator, flushBatchRequests, NULL, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, __construct, ICE_NULLPTR, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
+ ZEND_ME(Ice_Communicator, destroy, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, stringToProxy, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, proxyToString, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, propertyToProxy, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, proxyToProperty, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, stringToIdentity, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, identityToString, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, addObjectFactory, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, findObjectFactory, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, getValueFactoryManager, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, getImplicitContext, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, getProperties, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, getLogger, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, getDefaultRouter, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, setDefaultRouter, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, getDefaultLocator, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, setDefaultLocator, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Communicator, flushBatchRequests, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ {0, 0, 0}
+};
+
+//
+// Predefined methods for ValueFactoryManager.
+//
+static zend_function_entry _vfmInterfaceMethods[] =
+{
+ {0, 0, 0}
+};
+static zend_function_entry _vfmClassMethods[] =
+{
+ ZEND_ME(Ice_ValueFactoryManager, __construct, ICE_NULLPTR, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
+ ZEND_ME(Ice_ValueFactoryManager, add, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ValueFactoryManager, find, ICE_NULLPTR, ZEND_ACC_PUBLIC)
{0, 0, 0}
};
@@ -1410,6 +1686,26 @@ IcePHP::communicatorInit(TSRMLS_D)
zend_class_implements(communicatorClassEntry TSRMLS_CC, 1, interface);
//
+ // Register the ValueFactoryManager interface.
+ //
+#ifdef ICEPHP_USE_NAMESPACES
+ INIT_NS_CLASS_ENTRY(ce, "Ice", "ValueFactoryManager", _vfmInterfaceMethods);
+#else
+ INIT_CLASS_ENTRY(ce, "Ice_ValueFactoryManager", _vfmInterfaceMethods);
+#endif
+ zend_class_entry* vfmInterface = zend_register_internal_interface(&ce TSRMLS_CC);
+
+ //
+ // Register the ValueFactoryManager class.
+ //
+ INIT_CLASS_ENTRY(ce, "IcePHP_ValueFactoryManager", _vfmClassMethods);
+ ce.create_object = handleVfmAlloc;
+ valueFactoryManagerClassEntry = zend_register_internal_class(&ce TSRMLS_CC);
+ memcpy(&_vfmHandlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
+ _vfmHandlers.clone_obj = handleVfmClone;
+ zend_class_implements(valueFactoryManagerClassEntry TSRMLS_CC, 1, vfmInterface);
+
+ //
// Create the profiles from configuration settings.
//
const char* empty = "";
@@ -1501,9 +1797,9 @@ IcePHP::communicatorRequestShutdown(TSRMLS_D)
CommunicatorInfoIPtr info = p->second;
//
- // We need to destroy any object factories installed during this request.
+ // We need to destroy any object|value factories installed during this request.
//
- info->destroyObjectFactories(TSRMLS_C);
+ info->destroyFactories(TSRMLS_C);
}
//
@@ -1536,121 +1832,131 @@ IcePHP::ActiveCommunicator::~ActiveCommunicator()
}
}
-IcePHP::CommunicatorInfoI::CommunicatorInfoI(const ActiveCommunicatorPtr& c, zval* z) :
- ac(c),
- zv(*z) // This is legal - it simply copies the object's handle.
+IcePHP::FactoryWrapper::FactoryWrapper(zval* factory, bool isObjectFactory, const CommunicatorInfoIPtr& info) :
+ _factory(factory),
+ _isObjectFactory(isObjectFactory),
+ _info(info)
{
+ Z_ADDREF_P(_factory);
}
-void
-IcePHP::CommunicatorInfoI::getZval(zval* z TSRMLS_DC)
+Ice::ValuePtr
+IcePHP::FactoryWrapper::create(const string& id)
{
- Z_TYPE_P(z) = IS_OBJECT;
- z->value.obj = zv.value.obj;
- addRef(TSRMLS_C);
-}
+ //
+ // Get the TSRM id for the current request.
+ //
+ TSRMLS_FETCH();
-void
-IcePHP::CommunicatorInfoI::addRef(TSRMLS_D)
-{
- zval* p = const_cast<zval*>(&zv);
- Z_OBJ_HT_P(p)->add_ref(p TSRMLS_CC);
-}
+ //
+ // Get the type information.
+ //
+ ClassInfoPtr cls;
+ if(id == Ice::Object::ice_staticId())
+ {
+ //
+ // When the ID is that of Ice::Object, it indicates that the stream has not
+ // found a factory and is providing us an opportunity to preserve the object.
+ //
+ cls = getClassInfoById("::Ice::UnknownSlicedValue" TSRMLS_CC);
+ }
+ else
+ {
+ cls = getClassInfoById(id TSRMLS_CC);
+ }
-void
-IcePHP::CommunicatorInfoI::decRef(TSRMLS_D)
-{
- zval* p = const_cast<zval*>(&zv);
- Z_OBJ_HT(zv)->del_ref(p TSRMLS_CC);
-}
+ if(!cls)
+ {
+ return 0;
+ }
-Ice::CommunicatorPtr
-IcePHP::CommunicatorInfoI::getCommunicator() const
-{
- return ac->communicator;
-}
+ zval* arg;
+ MAKE_STD_ZVAL(arg);
+ ZVAL_STRINGL(arg, STRCAST(id.c_str()), static_cast<int>(id.length()), 1);
-bool
-IcePHP::CommunicatorInfoI::addObjectFactory(const string& id, zval* factory TSRMLS_DC)
-{
- ObjectFactoryMap::iterator p = objectFactories.find(id);
- if(p != objectFactories.end())
+ zval* obj = 0;
+
+ zend_try
{
- Ice::AlreadyRegisteredException ex(__FILE__, __LINE__);
- ex.kindOfObject = "object factory";
- ex.id = id;
- throwException(ex TSRMLS_CC);
- return false;
+ const char* func = "create";
+ zend_call_method(&_factory, 0, 0, const_cast<char*>(func), static_cast<int>(strlen(func)), &obj, 1, arg,
+ 0 TSRMLS_CC);
}
+ zend_catch
+ {
+ obj = 0;
+ }
+ zend_end_try();
- objectFactories.insert(ObjectFactoryMap::value_type(id, factory));
- Z_ADDREF_P(factory);
+ zval_ptr_dtor(&arg);
- return true;
-}
+ //
+ // Bail out if an exception has already been thrown.
+ //
+ if(!obj || EG(exception))
+ {
+ throw AbortMarshaling();
+ }
-bool
-IcePHP::CommunicatorInfoI::findObjectFactory(const string& id, zval* zv TSRMLS_DC)
-{
- ObjectFactoryMap::iterator p = objectFactories.find(id);
- if(p != objectFactories.end())
+ AutoDestroy destroy(obj);
+
+ if(Z_TYPE_P(obj) == IS_NULL)
{
- *zv = *p->second; // This is legal - it simply copies the object's handle.
- INIT_PZVAL(zv);
- zval_copy_ctor(zv);
- return true;
+ return 0;
}
- return false;
+ return new ObjectReader(obj, cls, _info TSRMLS_CC);
+}
+
+void
+IcePHP::FactoryWrapper::getZval(zval* factory TSRMLS_DC)
+{
+ *factory = *_factory; // This is legal - it simply copies the object's handle.
+ INIT_PZVAL(factory);
+ zval_copy_ctor(factory);
+}
+
+bool
+IcePHP::FactoryWrapper::isObjectFactory() const
+{
+ return _isObjectFactory;
}
void
-IcePHP::CommunicatorInfoI::destroyObjectFactories(TSRMLS_D)
+IcePHP::FactoryWrapper::destroy(TSRMLS_D)
{
- for(ObjectFactoryMap::iterator p = objectFactories.begin(); p != objectFactories.end(); ++p)
+ if(_isObjectFactory)
{
//
- // Invoke the destroy method on each registered PHP factory.
+ // Invoke the destroy method on the PHP factory.
//
- invokeMethod(p->second, "destroy" TSRMLS_CC);
+ invokeMethod(_factory, "destroy" TSRMLS_CC);
zend_clear_exception(TSRMLS_C);
- zval_ptr_dtor(&p->second);
}
+ zval_ptr_dtor(&_factory);
+ _info = 0;
}
-IcePHP::ObjectFactoryI::ObjectFactoryI(const Ice::CommunicatorPtr& communicator) :
- _communicator(communicator)
+IcePHP::DefaultValueFactory::DefaultValueFactory(const CommunicatorInfoIPtr& info) :
+ _info(info)
{
}
-Ice::ObjectPtr
-IcePHP::ObjectFactoryI::create(const string& id)
+Ice::ValuePtr
+IcePHP::DefaultValueFactory::create(const string& id)
{
//
// Get the TSRM id for the current request.
//
TSRMLS_FETCH();
- CommunicatorMap* m = static_cast<CommunicatorMap*>(ICE_G(communicatorMap));
- assert(m);
- CommunicatorMap::iterator p = m->find(_communicator);
- assert(p != m->end());
-
- CommunicatorInfoIPtr info = p->second;
-
- zval* factory = 0;
-
- //
- // Check if the application has registered a factory for this id.
- //
- ObjectFactoryMap::iterator q = info->objectFactories.find(id);
- if(q == info->objectFactories.end())
+ if(_delegate)
{
- q = info->objectFactories.find(""); // Look for a default factory.
- }
- if(q != info->objectFactories.end())
- {
- factory = q->second;
+ Ice::ValuePtr v = _delegate->create(id);
+ if(v)
+ {
+ return v;
+ }
}
//
@@ -1663,7 +1969,7 @@ IcePHP::ObjectFactoryI::create(const string& id)
// When the ID is that of Ice::Object, it indicates that the stream has not
// found a factory and is providing us an opportunity to preserve the object.
//
- cls = getClassInfoById("::Ice::UnknownSlicedObject" TSRMLS_CC);
+ cls = getClassInfoById("::Ice::UnknownSlicedValue" TSRMLS_CC);
}
else
{
@@ -1675,75 +1981,172 @@ IcePHP::ObjectFactoryI::create(const string& id)
return 0;
}
- if(factory)
+ //
+ // Instantiate the object.
+ //
+ zval* obj;
+ MAKE_STD_ZVAL(obj);
+ AutoDestroy destroy(obj);
+
+ if(object_init_ex(obj, const_cast<zend_class_entry*>(cls->zce)) != SUCCESS)
+ {
+ throw AbortMarshaling();
+ }
+
+ if(!invokeMethod(obj, ZEND_CONSTRUCTOR_FUNC_NAME TSRMLS_CC))
+ {
+ throw AbortMarshaling();
+ }
+
+ return new ObjectReader(obj, cls, _info TSRMLS_CC);
+}
+
+void
+IcePHP::DefaultValueFactory::destroy(TSRMLS_D)
+{
+ if(_delegate)
{
- zval* arg;
- MAKE_STD_ZVAL(arg);
- ZVAL_STRINGL(arg, STRCAST(id.c_str()), static_cast<int>(id.length()), 1);
+ _delegate->destroy();
+ _delegate = 0;
+ }
+ _info = 0;
+}
+
+IcePHP::CommunicatorInfoI::CommunicatorInfoI(const ActiveCommunicatorPtr& c, zval* z) :
+ ac(c),
+ zv(*z), // This is legal - it simply copies the object's handle.
+ _defaultFactory(new DefaultValueFactory(this))
+{
+}
- zval* obj = 0;
+void
+IcePHP::CommunicatorInfoI::getZval(zval* z TSRMLS_DC)
+{
+ Z_TYPE_P(z) = IS_OBJECT;
+ z->value.obj = zv.value.obj;
+ addRef(TSRMLS_C);
+}
- zend_try
- {
- const char* func = "create";
- zend_call_method(&factory, 0, 0, const_cast<char*>(func), static_cast<int>(strlen(func)), &obj, 1, arg, 0 TSRMLS_CC);
- }
- zend_catch
+void
+IcePHP::CommunicatorInfoI::addRef(TSRMLS_D)
+{
+ zval* p = const_cast<zval*>(&zv);
+ Z_OBJ_HT_P(p)->add_ref(p TSRMLS_CC);
+}
+
+void
+IcePHP::CommunicatorInfoI::decRef(TSRMLS_D)
+{
+ zval* p = const_cast<zval*>(&zv);
+ Z_OBJ_HT(zv)->del_ref(p TSRMLS_CC);
+}
+
+Ice::CommunicatorPtr
+IcePHP::CommunicatorInfoI::getCommunicator() const
+{
+ return ac->communicator;
+}
+
+bool
+IcePHP::CommunicatorInfoI::addFactory(zval* factory, const string& id, bool isObjectFactory TSRMLS_DC)
+{
+ if(id.empty())
+ {
+ if(_defaultFactory->getDelegate())
{
- obj = 0;
+ Ice::AlreadyRegisteredException ex(__FILE__, __LINE__);
+ ex.kindOfObject = "value factory";
+ ex.id = id;
+ throwException(ex TSRMLS_CC);
+ return false;
}
- zend_end_try();
- zval_ptr_dtor(&arg);
-
- //
- // Bail out if an exception has already been thrown.
- //
- if(!obj || EG(exception))
+ _defaultFactory->setDelegate(new FactoryWrapper(factory, isObjectFactory, this));
+ }
+ else
+ {
+ FactoryMap::iterator p = _factories.find(id);
+ if(p != _factories.end())
{
- throw AbortMarshaling();
+ Ice::AlreadyRegisteredException ex(__FILE__, __LINE__);
+ ex.kindOfObject = "value factory";
+ ex.id = id;
+ throwException(ex TSRMLS_CC);
+ return false;
}
- AutoDestroy destroy(obj);
+ _factories.insert(FactoryMap::value_type(id, new FactoryWrapper(factory, isObjectFactory, this)));
+ }
- if(Z_TYPE_P(obj) == IS_NULL)
+ return true;
+}
+
+FactoryWrapperPtr
+IcePHP::CommunicatorInfoI::findFactory(const string& id) const
+{
+ if(id.empty())
+ {
+ return _defaultFactory->getDelegate();
+ }
+ else
+ {
+ FactoryMap::const_iterator p = _factories.find(id);
+ if(p != _factories.end())
{
- return 0;
+ return p->second;
}
+ }
- return new ObjectReader(obj, cls, info TSRMLS_CC);
+ return 0;
+}
+
+void
+IcePHP::CommunicatorInfoI::destroyFactories(TSRMLS_D)
+{
+ for(FactoryMap::iterator p = _factories.begin(); p != _factories.end(); ++p)
+ {
+ p->second->destroy(TSRMLS_C);
}
+ _factories.clear();
+ _defaultFactory->destroy(TSRMLS_C);
+}
+void
+IcePHP::ValueFactoryManager::add(const Ice::ValueFactoryPtr&, const string&)
+{
//
- // If the requested type is an abstract class, then we give up.
+ // We don't support factories registered in C++.
//
- if(cls->isAbstract)
- {
- return 0;
- }
+ throw Ice::FeatureNotSupportedException(__FILE__, __LINE__, "C++ value factory");
+}
+Ice::ValueFactoryPtr
+IcePHP::ValueFactoryManager::find(const string& id) const
+{
//
- // Instantiate the object.
+ // Get the TSRM id for the current request.
//
- zval* obj;
- MAKE_STD_ZVAL(obj);
- AutoDestroy destroy(obj);
+ TSRMLS_FETCH();
- if(object_init_ex(obj, const_cast<zend_class_entry*>(cls->zce)) != SUCCESS)
+ CommunicatorMap* m = static_cast<CommunicatorMap*>(ICE_G(communicatorMap));
+ assert(m);
+ CommunicatorMap::iterator p = m->find(_communicator);
+ assert(p != m->end());
+
+ CommunicatorInfoIPtr info = p->second;
+
+ if(id.empty())
{
- throw AbortMarshaling();
+ return info->defaultFactory();
}
-
- if(!invokeMethod(obj, ZEND_CONSTRUCTOR_FUNC_NAME TSRMLS_CC))
+ else
{
- throw AbortMarshaling();
+ return info->findFactory(id);
}
-
- return new ObjectReader(obj, cls, info TSRMLS_CC);
}
void
-IcePHP::ObjectFactoryI::destroy()
+IcePHP::ValueFactoryManager::destroy()
{
_communicator = 0;
}
diff --git a/php/src/php5/Config.h b/php/src/php5/Config.h
index 2f968cd0d3f..9c80de86f59 100644
--- a/php/src/php5/Config.h
+++ b/php/src/php5/Config.h
@@ -39,7 +39,7 @@ extern "C"
#ifdef _WIN32
# pragma warning( disable : 4018) // suppress signed/unsigned mismatch in zend_execute.h (PHP 5.3.x)
#elif defined(__GNUC__)
-# pragma GCC diagnostic warning "-Wsign-compare"
+# pragma GCC diagnostic warning "-Wsign-compare"
#endif
#ifdef _WIN64
diff --git a/php/src/php5/Connection.cpp b/php/src/php5/Connection.cpp
index bf0c57307c2..8a894b2457a 100644
--- a/php/src/php5/Connection.cpp
+++ b/php/src/php5/Connection.cpp
@@ -29,7 +29,6 @@ static zend_class_entry* tcpConnectionInfoClassEntry = 0;
static zend_class_entry* udpConnectionInfoClassEntry = 0;
static zend_class_entry* wsConnectionInfoClassEntry = 0;
static zend_class_entry* sslConnectionInfoClassEntry = 0;
-static zend_class_entry* wssConnectionInfoClassEntry = 0;
//
// Ice::Connection support.
@@ -79,15 +78,22 @@ ZEND_METHOD(Ice_Connection, close)
Ice::ConnectionPtr _this = Wrapper<Ice::ConnectionPtr>::value(getThis() TSRMLS_CC);
assert(_this);
- zend_bool b;
- if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast<char*>("b"), &b TSRMLS_CC) != SUCCESS)
+ zval* mode;
+ if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast<char*>("z"), &mode TSRMLS_CC) != SUCCESS)
{
RETURN_NULL();
}
+ if(Z_TYPE_P(mode) != IS_LONG)
+ {
+ invalidArgument("value for 'mode' argument must be an enumerator of ConnectionClose" TSRMLS_CC);
+ RETURN_NULL();
+ }
+ Ice::ConnectionClose cc = static_cast<Ice::ConnectionClose>(Z_LVAL_P(mode));
+
try
{
- _this->close(b ? true : false);
+ _this->close(cc);
}
catch(const IceUtil::Exception& ex)
{
@@ -122,6 +128,35 @@ ZEND_METHOD(Ice_Connection, getEndpoint)
ZEND_METHOD(Ice_Connection, flushBatchRequests)
{
+ zval* compress;
+ if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast<char*>("z"), &compress TSRMLS_CC) != SUCCESS)
+ {
+ RETURN_NULL();
+ }
+
+ if(Z_TYPE_P(compress) != IS_LONG)
+ {
+ invalidArgument("value for 'compress' argument must be an enumerator of CompressBatch" TSRMLS_CC);
+ RETURN_NULL();
+ }
+ Ice::CompressBatch cb = static_cast<Ice::CompressBatch>(Z_LVAL_P(compress));
+
+ Ice::ConnectionPtr _this = Wrapper<Ice::ConnectionPtr>::value(getThis() TSRMLS_CC);
+ assert(_this);
+
+ try
+ {
+ _this->flushBatchRequests(cb);
+ }
+ catch(const IceUtil::Exception& ex)
+ {
+ throwException(ex TSRMLS_CC);
+ RETURN_NULL();
+ }
+}
+
+ZEND_METHOD(Ice_Connection, heartbeat)
+{
if(ZEND_NUM_ARGS() > 0)
{
WRONG_PARAM_COUNT;
@@ -132,7 +167,7 @@ ZEND_METHOD(Ice_Connection, flushBatchRequests)
try
{
- _this->flushBatchRequests();
+ _this->heartbeat();
}
catch(const IceUtil::Exception& ex)
{
@@ -407,18 +442,19 @@ static zend_function_entry _interfaceMethods[] =
};
static zend_function_entry _connectionClassMethods[] =
{
- ZEND_ME(Ice_Connection, __construct, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
- ZEND_ME(Ice_Connection, __toString, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Connection, close, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Connection, getEndpoint, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Connection, flushBatchRequests, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Connection, setACM, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Connection, getACM, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Connection, type, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Connection, timeout, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Connection, toString, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Connection, getInfo, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Connection, setBufferSize, NULL, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Connection, __construct, ICE_NULLPTR, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
+ ZEND_ME(Ice_Connection, __toString, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Connection, close, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Connection, getEndpoint, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Connection, flushBatchRequests, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Connection, heartbeat, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Connection, setACM, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Connection, getACM, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Connection, type, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Connection, timeout, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Connection, toString, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Connection, getInfo, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Connection, setBufferSize, ICE_NULLPTR, ZEND_ACC_PUBLIC)
{0, 0, 0}
};
@@ -432,7 +468,7 @@ ZEND_METHOD(Ice_ConnectionInfo, __construct)
//
static zend_function_entry _connectionInfoClassMethods[] =
{
- ZEND_ME(Ice_ConnectionInfo, __construct, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
+ ZEND_ME(Ice_ConnectionInfo, __construct, ICE_NULLPTR, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
{0, 0, 0}
};
//
@@ -512,6 +548,8 @@ IcePHP::connectionInit(TSRMLS_D)
ce.create_object = handleConnectionInfoAlloc;
connectionInfoClassEntry = zend_register_internal_class(&ce TSRMLS_CC);
memcpy(&_connectionInfoHandlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
+ zend_declare_property_null(connectionInfoClassEntry, STRCAST("underlying"), sizeof("underlying") - 1,
+ ZEND_ACC_PUBLIC TSRMLS_CC);
zend_declare_property_bool(connectionInfoClassEntry, STRCAST("incoming"), sizeof("incoming") - 1, 0,
ZEND_ACC_PUBLIC TSRMLS_CC);
zend_declare_property_string(connectionInfoClassEntry, STRCAST("adapterName"), sizeof("adapterName") - 1,
@@ -521,12 +559,12 @@ IcePHP::connectionInit(TSRMLS_D)
// Register the IPConnectionInfo class.
//
#ifdef ICEPHP_USE_NAMESPACES
- INIT_NS_CLASS_ENTRY(ce, "Ice", "IPConnectionInfo", NULL);
+ INIT_NS_CLASS_ENTRY(ce, "Ice", "IPConnectionInfo", ICE_NULLPTR);
#else
- INIT_CLASS_ENTRY(ce, "Ice_IPConnectionInfo", NULL);
+ INIT_CLASS_ENTRY(ce, "Ice_IPConnectionInfo", ICE_NULLPTR);
#endif
ce.create_object = handleConnectionInfoAlloc;
- ipConnectionInfoClassEntry = zend_register_internal_class_ex(&ce, connectionInfoClassEntry, NULL TSRMLS_CC);
+ ipConnectionInfoClassEntry = zend_register_internal_class_ex(&ce, connectionInfoClassEntry, ICE_NULLPTR TSRMLS_CC);
zend_declare_property_string(ipConnectionInfoClassEntry, STRCAST("localAddress"), sizeof("localAddress") - 1,
STRCAST(""), ZEND_ACC_PUBLIC TSRMLS_CC);
zend_declare_property_long(ipConnectionInfoClassEntry, STRCAST("localPort"), sizeof("localPort") - 1, 0,
@@ -540,23 +578,23 @@ IcePHP::connectionInit(TSRMLS_D)
// Register the TCPConnectionInfo class.
//
#ifdef ICEPHP_USE_NAMESPACES
- INIT_NS_CLASS_ENTRY(ce, "Ice", "TCPConnectionInfo", NULL);
+ INIT_NS_CLASS_ENTRY(ce, "Ice", "TCPConnectionInfo", ICE_NULLPTR);
#else
- INIT_CLASS_ENTRY(ce, "Ice_TCPConnectionInfo", NULL);
+ INIT_CLASS_ENTRY(ce, "Ice_TCPConnectionInfo", ICE_NULLPTR);
#endif
ce.create_object = handleConnectionInfoAlloc;
- tcpConnectionInfoClassEntry = zend_register_internal_class_ex(&ce, ipConnectionInfoClassEntry, NULL TSRMLS_CC);
+ tcpConnectionInfoClassEntry = zend_register_internal_class_ex(&ce, ipConnectionInfoClassEntry, ICE_NULLPTR TSRMLS_CC);
//
// Register the UDPConnectionInfo class.
//
#ifdef ICEPHP_USE_NAMESPACES
- INIT_NS_CLASS_ENTRY(ce, "Ice", "UDPConnectionInfo", NULL);
+ INIT_NS_CLASS_ENTRY(ce, "Ice", "UDPConnectionInfo", ICE_NULLPTR);
#else
- INIT_CLASS_ENTRY(ce, "Ice_UDPConnectionInfo", NULL);
+ INIT_CLASS_ENTRY(ce, "Ice_UDPConnectionInfo", ICE_NULLPTR);
#endif
ce.create_object = handleConnectionInfoAlloc;
- udpConnectionInfoClassEntry = zend_register_internal_class_ex(&ce, ipConnectionInfoClassEntry, NULL TSRMLS_CC);
+ udpConnectionInfoClassEntry = zend_register_internal_class_ex(&ce, ipConnectionInfoClassEntry, ICE_NULLPTR TSRMLS_CC);
zend_declare_property_string(udpConnectionInfoClassEntry, STRCAST("mcastAddress"), sizeof("mcastAddress") - 1,
STRCAST(""), ZEND_ACC_PUBLIC TSRMLS_CC);
zend_declare_property_long(udpConnectionInfoClassEntry, STRCAST("mcastPort"), sizeof("mcastPort") - 1, 0,
@@ -566,12 +604,12 @@ IcePHP::connectionInit(TSRMLS_D)
// Register the WSConnectionInfo class.
//
#ifdef ICEPHP_USE_NAMESPACES
- INIT_NS_CLASS_ENTRY(ce, "Ice", "WSConnectionInfo", NULL);
+ INIT_NS_CLASS_ENTRY(ce, "Ice", "WSConnectionInfo", ICE_NULLPTR);
#else
- INIT_CLASS_ENTRY(ce, "Ice_WSConnectionInfo", NULL);
+ INIT_CLASS_ENTRY(ce, "Ice_WSConnectionInfo", ICE_NULLPTR);
#endif
ce.create_object = handleConnectionInfoAlloc;
- wsConnectionInfoClassEntry = zend_register_internal_class_ex(&ce, ipConnectionInfoClassEntry, NULL TSRMLS_CC);
+ wsConnectionInfoClassEntry = zend_register_internal_class_ex(&ce, connectionInfoClassEntry, ICE_NULLPTR TSRMLS_CC);
zend_declare_property_string(wsConnectionInfoClassEntry, STRCAST("headers"), sizeof("headers") - 1,
STRCAST(""), ZEND_ACC_PUBLIC TSRMLS_CC);
@@ -579,12 +617,12 @@ IcePHP::connectionInit(TSRMLS_D)
// Register the SSLConnectionInfo class.
//
#ifdef ICEPHP_USE_NAMESPACES
- INIT_NS_CLASS_ENTRY(ce, "Ice", "SSLConnectionInfo", NULL);
+ INIT_NS_CLASS_ENTRY(ce, "Ice", "SSLConnectionInfo", ICE_NULLPTR);
#else
- INIT_CLASS_ENTRY(ce, "Ice_SSLConnectionInfo", NULL);
+ INIT_CLASS_ENTRY(ce, "Ice_SSLConnectionInfo", ICE_NULLPTR);
#endif
ce.create_object = handleConnectionInfoAlloc;
- sslConnectionInfoClassEntry = zend_register_internal_class_ex(&ce, ipConnectionInfoClassEntry, NULL TSRMLS_CC);
+ sslConnectionInfoClassEntry = zend_register_internal_class_ex(&ce, connectionInfoClassEntry, ICE_NULLPTR TSRMLS_CC);
zend_declare_property_string(sslConnectionInfoClassEntry, STRCAST("cipher"), sizeof("cipher") - 1,
STRCAST(""), ZEND_ACC_PUBLIC TSRMLS_CC);
zend_declare_property_string(sslConnectionInfoClassEntry, STRCAST("certs"), sizeof("certs") - 1,
@@ -592,20 +630,6 @@ IcePHP::connectionInit(TSRMLS_D)
zend_declare_property_bool(sslConnectionInfoClassEntry, STRCAST("verified"), sizeof("verified") - 1, 0,
ZEND_ACC_PUBLIC TSRMLS_CC);
- //
- // Register the WSConnectionInfo class.
- //
-#ifdef ICEPHP_USE_NAMESPACES
- INIT_NS_CLASS_ENTRY(ce, "Ice", "WSSConnectionInfo", NULL);
-#else
- INIT_CLASS_ENTRY(ce, "Ice_WSSConnectionInfo", NULL);
-#endif
- ce.create_object = handleConnectionInfoAlloc;
- wssConnectionInfoClassEntry = zend_register_internal_class_ex(&ce, sslConnectionInfoClassEntry, NULL TSRMLS_CC);
- zend_declare_property_string(wssConnectionInfoClassEntry, STRCAST("headers"), sizeof("headers") - 1,
- STRCAST(""), ZEND_ACC_PUBLIC TSRMLS_CC);
-
-
return true;
}
@@ -653,6 +677,12 @@ IcePHP::fetchConnection(zval* zv, Ice::ConnectionPtr& connection TSRMLS_DC)
bool
IcePHP::createConnectionInfo(zval* zv, const Ice::ConnectionInfoPtr& p TSRMLS_DC)
{
+ if(!p)
+ {
+ ZVAL_NULL(zv);
+ return true;
+ }
+
int status;
if(Ice::WSConnectionInfoPtr::dynamicCast(p))
{
@@ -674,7 +704,12 @@ IcePHP::createConnectionInfo(zval* zv, const Ice::ConnectionInfoPtr& p TSRMLS_DC
}
else if(Ice::TCPConnectionInfoPtr::dynamicCast(p))
{
- status = object_init_ex(zv, tcpConnectionInfoClassEntry);
+ Ice::TCPConnectionInfoPtr info = Ice::TCPConnectionInfoPtr::dynamicCast(p);
+ if((status = object_init_ex(zv, tcpConnectionInfoClassEntry)) == SUCCESS)
+ {
+ add_property_long(zv, STRCAST("rcvSize"), static_cast<long>(info->rcvSize));
+ add_property_long(zv, STRCAST("sndSize"), static_cast<long>(info->sndSize));
+ }
}
else if(Ice::UDPConnectionInfoPtr::dynamicCast(p))
{
@@ -683,24 +718,8 @@ IcePHP::createConnectionInfo(zval* zv, const Ice::ConnectionInfoPtr& p TSRMLS_DC
{
add_property_string(zv, STRCAST("mcastAddress"), const_cast<char*>(info->mcastAddress.c_str()), 1);
add_property_long(zv, STRCAST("mcastPort"), static_cast<long>(info->mcastPort));
- }
- }
- else if(IceSSL::WSSConnectionInfoPtr::dynamicCast(p))
- {
- IceSSL::WSSConnectionInfoPtr info = IceSSL::WSSConnectionInfoPtr::dynamicCast(p);
- if((status = object_init_ex(zv, wssConnectionInfoClassEntry)) == SUCCESS)
- {
- zval* zmap;
- MAKE_STD_ZVAL(zmap);
- AutoDestroy mapDestroyer(zmap);
- if(createStringMap(zmap, info->headers TSRMLS_CC))
- {
- add_property_zval(zv, STRCAST("headers"), zmap);
- }
- else
- {
- return false;
- }
+ add_property_long(zv, STRCAST("rcvSize"), static_cast<long>(info->rcvSize));
+ add_property_long(zv, STRCAST("sndSize"), static_cast<long>(info->sndSize));
}
}
else if(IceSSL::ConnectionInfoPtr::dynamicCast(p))
@@ -750,10 +769,17 @@ IcePHP::createConnectionInfo(zval* zv, const Ice::ConnectionInfoPtr& p TSRMLS_DC
add_property_long(zv, STRCAST("remotePort"), static_cast<long>(info->remotePort));
}
+ zval* underlying;
+ MAKE_STD_ZVAL(underlying);
+ AutoDestroy underlyingDestroyer(underlying);
+ if(!createConnectionInfo(underlying, p->underlying TSRMLS_CC))
+ {
+ runtimeError("unable to initialize connection info" TSRMLS_CC);
+ return false;
+ }
+ add_property_zval(zv, STRCAST("underlying"), underlying);
add_property_bool(zv, STRCAST("incoming"), p->incoming ? 1 : 0);
add_property_string(zv, STRCAST("adapterName"), const_cast<char*>(p->adapterName.c_str()), 1);
- add_property_long(zv, STRCAST("rcvSize"), static_cast<long>(p->rcvSize));
- add_property_long(zv, STRCAST("sndSize"), static_cast<long>(p->sndSize));
Wrapper<Ice::ConnectionInfoPtr>* obj = Wrapper<Ice::ConnectionInfoPtr>::extract(zv TSRMLS_CC);
assert(obj);
diff --git a/php/src/php5/Endpoint.cpp b/php/src/php5/Endpoint.cpp
index 8f1a8f07bbf..5aab9240dff 100644
--- a/php/src/php5/Endpoint.cpp
+++ b/php/src/php5/Endpoint.cpp
@@ -28,7 +28,6 @@ static zend_class_entry* udpEndpointInfoClassEntry = 0;
static zend_class_entry* wsEndpointInfoClassEntry = 0;
static zend_class_entry* opaqueEndpointInfoClassEntry = 0;
static zend_class_entry* sslEndpointInfoClassEntry = 0;
-static zend_class_entry* wssEndpointInfoClassEntry = 0;
//
// Ice::Endpoint support.
@@ -239,10 +238,10 @@ static zend_function_entry _interfaceMethods[] =
//
static zend_function_entry _endpointMethods[] =
{
- ZEND_ME(Ice_Endpoint, __construct, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
- ZEND_ME(Ice_Endpoint, __toString, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Endpoint, toString, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Endpoint, getInfo, NULL, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Endpoint, __construct, ICE_NULLPTR, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
+ ZEND_ME(Ice_Endpoint, __toString, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Endpoint, toString, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Endpoint, getInfo, ICE_NULLPTR, ZEND_ACC_PUBLIC)
{0, 0, 0}
};
@@ -251,10 +250,10 @@ static zend_function_entry _endpointMethods[] =
//
static zend_function_entry _endpointInfoMethods[] =
{
- ZEND_ME(Ice_EndpointInfo, __construct, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
- ZEND_ME(Ice_EndpointInfo, type, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_EndpointInfo, datagram, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_EndpointInfo, secure, NULL, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_EndpointInfo, __construct, ICE_NULLPTR, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
+ ZEND_ME(Ice_EndpointInfo, type, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_EndpointInfo, datagram, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_EndpointInfo, secure, ICE_NULLPTR, ZEND_ACC_PUBLIC)
{0, 0, 0}
};
@@ -307,6 +306,8 @@ IcePHP::endpointInit(TSRMLS_D)
ce.create_object = handleEndpointInfoAlloc;
endpointInfoClassEntry = zend_register_internal_class(&ce TSRMLS_CC);
memcpy(&_endpointInfoHandlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
+ zend_declare_property_null(endpointInfoClassEntry, STRCAST("underlying"), sizeof("underlying") - 1,
+ ZEND_ACC_PUBLIC TSRMLS_CC);
zend_declare_property_long(endpointInfoClassEntry, STRCAST("timeout"), sizeof("timeout") - 1, 0,
ZEND_ACC_PUBLIC TSRMLS_CC);
zend_declare_property_bool(endpointInfoClassEntry, STRCAST("compress"), sizeof("compress") - 1, 0,
@@ -316,12 +317,12 @@ IcePHP::endpointInit(TSRMLS_D)
// Define the IPEndpointInfo class.
//
#ifdef ICEPHP_USE_NAMESPACES
- INIT_NS_CLASS_ENTRY(ce, "Ice", "IPEndpointInfo", NULL);
+ INIT_NS_CLASS_ENTRY(ce, "Ice", "IPEndpointInfo", ICE_NULLPTR);
#else
- INIT_CLASS_ENTRY(ce, "Ice_IPEndpointInfo", NULL);
+ INIT_CLASS_ENTRY(ce, "Ice_IPEndpointInfo", ICE_NULLPTR);
#endif
ce.create_object = handleEndpointInfoAlloc;
- ipEndpointInfoClassEntry = zend_register_internal_class_ex(&ce, endpointInfoClassEntry, NULL TSRMLS_CC);
+ ipEndpointInfoClassEntry = zend_register_internal_class_ex(&ce, endpointInfoClassEntry, ICE_NULLPTR TSRMLS_CC);
zend_declare_property_string(ipEndpointInfoClassEntry, STRCAST("host"), sizeof("host") - 1, STRCAST(""),
ZEND_ACC_PUBLIC TSRMLS_CC);
zend_declare_property_long(ipEndpointInfoClassEntry, STRCAST("port"), sizeof("port") - 1, 0,
@@ -333,23 +334,23 @@ IcePHP::endpointInit(TSRMLS_D)
// Define the TCPEndpointInfo class.
//
#ifdef ICEPHP_USE_NAMESPACES
- INIT_NS_CLASS_ENTRY(ce, "Ice", "TCPEndpointInfo", NULL);
+ INIT_NS_CLASS_ENTRY(ce, "Ice", "TCPEndpointInfo", ICE_NULLPTR);
#else
- INIT_CLASS_ENTRY(ce, "Ice_TCPEndpointInfo", NULL);
+ INIT_CLASS_ENTRY(ce, "Ice_TCPEndpointInfo", ICE_NULLPTR);
#endif
ce.create_object = handleEndpointInfoAlloc;
- tcpEndpointInfoClassEntry = zend_register_internal_class_ex(&ce, ipEndpointInfoClassEntry, NULL TSRMLS_CC);
+ tcpEndpointInfoClassEntry = zend_register_internal_class_ex(&ce, ipEndpointInfoClassEntry, ICE_NULLPTR TSRMLS_CC);
//
// Define the UDPEndpointInfo class.
//
#ifdef ICEPHP_USE_NAMESPACES
- INIT_NS_CLASS_ENTRY(ce, "Ice", "UDPEndpointInfo", NULL);
+ INIT_NS_CLASS_ENTRY(ce, "Ice", "UDPEndpointInfo", ICE_NULLPTR);
#else
- INIT_CLASS_ENTRY(ce, "Ice_UDPEndpointInfo", NULL);
+ INIT_CLASS_ENTRY(ce, "Ice_UDPEndpointInfo", ICE_NULLPTR);
#endif
ce.create_object = handleEndpointInfoAlloc;
- udpEndpointInfoClassEntry = zend_register_internal_class_ex(&ce, ipEndpointInfoClassEntry, NULL TSRMLS_CC);
+ udpEndpointInfoClassEntry = zend_register_internal_class_ex(&ce, ipEndpointInfoClassEntry, ICE_NULLPTR TSRMLS_CC);
zend_declare_property_string(udpEndpointInfoClassEntry, STRCAST("mcastInterface"), sizeof("mcastInterface") - 1,
STRCAST(""), ZEND_ACC_PUBLIC TSRMLS_CC);
zend_declare_property_long(udpEndpointInfoClassEntry, STRCAST("mcastTtl"), sizeof("mcastTtl") - 1, 0,
@@ -359,12 +360,12 @@ IcePHP::endpointInit(TSRMLS_D)
// Define the WSEndpointInfo class.
//
#ifdef ICEPHP_USE_NAMESPACES
- INIT_NS_CLASS_ENTRY(ce, "Ice", "WSEndpointInfo", NULL);
+ INIT_NS_CLASS_ENTRY(ce, "Ice", "WSEndpointInfo", ICE_NULLPTR);
#else
- INIT_CLASS_ENTRY(ce, "Ice_WSEndpointInfo", NULL);
+ INIT_CLASS_ENTRY(ce, "Ice_WSEndpointInfo", ICE_NULLPTR);
#endif
ce.create_object = handleEndpointInfoAlloc;
- wsEndpointInfoClassEntry = zend_register_internal_class_ex(&ce, ipEndpointInfoClassEntry, NULL TSRMLS_CC);
+ wsEndpointInfoClassEntry = zend_register_internal_class_ex(&ce, endpointInfoClassEntry, ICE_NULLPTR TSRMLS_CC);
zend_declare_property_string(wsEndpointInfoClassEntry, STRCAST("resource"), sizeof("resource") - 1,
STRCAST(""), ZEND_ACC_PUBLIC TSRMLS_CC);
@@ -372,12 +373,12 @@ IcePHP::endpointInit(TSRMLS_D)
// Define the OpaqueEndpointInfo class.
//
#ifdef ICEPHP_USE_NAMESPACES
- INIT_NS_CLASS_ENTRY(ce, "Ice", "OpaqueEndpointInfo", NULL);
+ INIT_NS_CLASS_ENTRY(ce, "Ice", "OpaqueEndpointInfo", ICE_NULLPTR);
#else
- INIT_CLASS_ENTRY(ce, "Ice_OpaqueEndpointInfo", NULL);
+ INIT_CLASS_ENTRY(ce, "Ice_OpaqueEndpointInfo", ICE_NULLPTR);
#endif
ce.create_object = handleEndpointInfoAlloc;
- opaqueEndpointInfoClassEntry = zend_register_internal_class_ex(&ce, endpointInfoClassEntry, NULL TSRMLS_CC);
+ opaqueEndpointInfoClassEntry = zend_register_internal_class_ex(&ce, endpointInfoClassEntry, ICE_NULLPTR TSRMLS_CC);
zend_declare_property_null(opaqueEndpointInfoClassEntry, STRCAST("rawEncoding"), sizeof("rawEncoding") - 1,
ZEND_ACC_PUBLIC TSRMLS_CC);
zend_declare_property_null(opaqueEndpointInfoClassEntry, STRCAST("rawBytes"), sizeof("rawBytes") - 1,
@@ -387,25 +388,12 @@ IcePHP::endpointInit(TSRMLS_D)
// Define the SSLEndpointInfo class.
//
#ifdef ICEPHP_USE_NAMESPACES
- INIT_NS_CLASS_ENTRY(ce, "Ice", "SSLEndpointInfo", NULL);
+ INIT_NS_CLASS_ENTRY(ce, "Ice", "SSLEndpointInfo", ICE_NULLPTR);
#else
- INIT_CLASS_ENTRY(ce, "Ice_SSLEndpointInfo", NULL);
+ INIT_CLASS_ENTRY(ce, "Ice_SSLEndpointInfo", ICE_NULLPTR);
#endif
ce.create_object = handleEndpointInfoAlloc;
- sslEndpointInfoClassEntry = zend_register_internal_class_ex(&ce, ipEndpointInfoClassEntry, NULL TSRMLS_CC);
-
- //
- // Define the WSSEndpointInfo class.
- //
-#ifdef ICEPHP_USE_NAMESPACES
- INIT_NS_CLASS_ENTRY(ce, "Ice", "WSSEndpointInfo", NULL);
-#else
- INIT_CLASS_ENTRY(ce, "Ice_WSSEndpointInfo", NULL);
-#endif
- ce.create_object = handleEndpointInfoAlloc;
- wssEndpointInfoClassEntry = zend_register_internal_class_ex(&ce, sslEndpointInfoClassEntry, NULL TSRMLS_CC);
- zend_declare_property_string(wssEndpointInfoClassEntry, STRCAST("resource"), sizeof("resource") - 1,
- STRCAST(""), ZEND_ACC_PUBLIC TSRMLS_CC);
+ sslEndpointInfoClassEntry = zend_register_internal_class_ex(&ce, endpointInfoClassEntry, ICE_NULLPTR TSRMLS_CC);
return true;
}
@@ -454,6 +442,12 @@ IcePHP::fetchEndpoint(zval* zv, Ice::EndpointPtr& endpoint TSRMLS_DC)
bool
IcePHP::createEndpointInfo(zval* zv, const Ice::EndpointInfoPtr& p TSRMLS_DC)
{
+ if(!p)
+ {
+ ZVAL_NULL(zv);
+ return true;
+ }
+
int status;
if(Ice::WSEndpointInfoPtr::dynamicCast(p))
{
@@ -498,14 +492,6 @@ IcePHP::createEndpointInfo(zval* zv, const Ice::EndpointInfoPtr& p TSRMLS_DC)
zval_ptr_dtor(&rawBytes); // add_property_zval increased the refcount of rawBytes
}
}
- else if(IceSSL::WSSEndpointInfoPtr::dynamicCast(p))
- {
- IceSSL::WSSEndpointInfoPtr info = IceSSL::WSSEndpointInfoPtr::dynamicCast(p);
- if((status = object_init_ex(zv, wssEndpointInfoClassEntry)) == SUCCESS)
- {
- add_property_string(zv, STRCAST("resource"), const_cast<char*>(info->resource.c_str()), 1);
- }
- }
else if(IceSSL::EndpointInfoPtr::dynamicCast(p))
{
status = object_init_ex(zv, sslEndpointInfoClassEntry);
@@ -533,6 +519,15 @@ IcePHP::createEndpointInfo(zval* zv, const Ice::EndpointInfoPtr& p TSRMLS_DC)
add_property_string(zv, STRCAST("sourceAddress"), const_cast<char*>(info->sourceAddress.c_str()), 1);
}
+ zval* underlying;
+ MAKE_STD_ZVAL(underlying);
+ AutoDestroy underlyingDestroyer(underlying);
+ if(!createEndpointInfo(underlying, p->underlying TSRMLS_CC))
+ {
+ runtimeError("unable to initialize endpoint info" TSRMLS_CC);
+ return false;
+ }
+ add_property_zval(zv, STRCAST("underlying"), underlying);
add_property_long(zv, STRCAST("timeout"), static_cast<long>(p->timeout));
add_property_bool(zv, STRCAST("compress"), static_cast<long>(p->compress));
diff --git a/php/src/php5/IcePHP.rc b/php/src/php5/IcePHP.rc
deleted file mode 100644
index 1cddc72dee2..00000000000
--- a/php/src/php5/IcePHP.rc
+++ /dev/null
@@ -1,38 +0,0 @@
-#include "winver.h"
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,3,0
- PRODUCTVERSION 3,6,3,0
- FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
-#ifdef _DEBUG
- FILEFLAGS VS_FF_DEBUG
- #define INTERNALNAME "php_iced\0"
- #define ORIGINALFILENAME "php_iced.dll\0"
-#else
- FILEFLAGS 0x0L
- #define INTERNALNAME "php_ice\0"
- #define ORIGINALFILENAME "php_ice.dll\0"
-#endif
- FILEOS 0x4L
- FILETYPE VFT_DLL
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "040904e4"
- BEGIN
- VALUE "CompanyName", "ZeroC, Inc.\0"
- VALUE "FileDescription", "Ice for PHP Extension\0"
- VALUE "FileVersion", "3.6.3\0"
- VALUE "InternalName", INTERNALNAME
- VALUE "LegalCopyright", "Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.\0"
- VALUE "OriginalFilename", ORIGINALFILENAME
- VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.3\0"
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x409, 1252
- END
-END
diff --git a/php/src/php5/Init.cpp b/php/src/php5/Init.cpp
index 28a53649d99..72cc2f548e7 100644
--- a/php/src/php5/Init.cpp
+++ b/php/src/php5/Init.cpp
@@ -28,80 +28,74 @@ ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(Ice_createProperties_arginfo, 1, ZEND_RETURN_VALUE, static_cast<zend_uint>(-1))
ZEND_END_ARG_INFO()
-#define ICEPHP_COMMUNICATOR_FUNCTIONS \
- ZEND_FE(Ice_initialize, Ice_initialize_arginfo) \
- ZEND_FE(Ice_register, NULL) \
- ZEND_FE(Ice_unregister, NULL) \
- ZEND_FE(Ice_find, NULL) \
- ZEND_FE(Ice_getProperties, NULL) \
- ZEND_FE(Ice_identityToString, NULL) \
- ZEND_FE(Ice_stringToIdentity, NULL) \
-
#ifdef ICEPHP_USE_NAMESPACES
-# define ICEPHP_COMMUNICATOR_NS_FUNCTIONS \
- ZEND_NS_FALIAS("Ice", initialize, Ice_initialize, Ice_initialize_arginfo) \
- ZEND_NS_FALIAS("Ice", register, Ice_register, NULL) \
- ZEND_NS_FALIAS("Ice", unregister, Ice_unregister, NULL) \
- ZEND_NS_FALIAS("Ice", find, Ice_find, NULL) \
- ZEND_NS_FALIAS("Ice", getProperties, Ice_getProperties, NULL) \
- ZEND_NS_FALIAS("Ice", identityToString, Ice_identityToString, NULL) \
- ZEND_NS_FALIAS("Ice", stringToIdentity, Ice_stringToIdentity, NULL)
+# define ICEPHP_COMMUNICATOR_FUNCTIONS \
+ ZEND_NS_NAMED_FE("Ice", initialize, ZEND_FN(Ice_initialize), Ice_initialize_arginfo) \
+ ZEND_NS_NAMED_FE("Ice", register, ZEND_FN(Ice_register), ICE_NULLPTR) \
+ ZEND_NS_NAMED_FE("Ice", unregister, ZEND_FN(Ice_unregister), ICE_NULLPTR) \
+ ZEND_NS_NAMED_FE("Ice", find, ZEND_FN(Ice_find), ICE_NULLPTR) \
+ ZEND_NS_NAMED_FE("Ice", getProperties, ZEND_FN(Ice_getProperties), ICE_NULLPTR) \
+ ZEND_NS_NAMED_FE("Ice", identityToString, ZEND_FN(Ice_identityToString), ICE_NULLPTR) \
+ ZEND_NS_NAMED_FE("Ice", stringToIdentity, ZEND_FN(Ice_stringToIdentity), ICE_NULLPTR)
#else
-# define ICEPHP_COMMUNICATOR_NS_FUNCTIONS
+# define ICEPHP_COMMUNICATOR_FUNCTIONS \
+ ZEND_FE(Ice_initialize, Ice_initialize_arginfo) \
+ ZEND_FE(Ice_register, ICE_NULLPTR) \
+ ZEND_FE(Ice_unregister, ICE_NULLPTR) \
+ ZEND_FE(Ice_find, ICE_NULLPTR) \
+ ZEND_FE(Ice_getProperties, ICE_NULLPTR) \
+ ZEND_FE(Ice_identityToString, ICE_NULLPTR) \
+ ZEND_FE(Ice_stringToIdentity, ICE_NULLPTR)
#endif
#define ICEPHP_OPERATION_FUNCTIONS \
- ZEND_FE(IcePHP_defineOperation, NULL)
-
-#define ICEPHP_PROPERTIES_FUNCTIONS \
- ZEND_FE(Ice_createProperties, Ice_createProperties_arginfo)
+ ZEND_FE(IcePHP_defineOperation, ICE_NULLPTR)
#ifdef ICEPHP_USE_NAMESPACES
-# define ICEPHP_PROPERTIES_NS_FUNCTIONS \
- ZEND_NS_FALIAS("Ice", createProperties, Ice_createProperties, Ice_createProperties_arginfo)
+# define ICEPHP_PROPERTIES_FUNCTIONS \
+ ZEND_NS_NAMED_FE("Ice", createProperties, ZEND_FN(Ice_createProperties), Ice_createProperties_arginfo)
#else
-# define ICEPHP_PROPERTIES_NS_FUNCTIONS
+# define ICEPHP_PROPERTIES_FUNCTIONS \
+ ZEND_FE(Ice_createProperties, Ice_createProperties_arginfo)
#endif
#define ICEPHP_TYPE_FUNCTIONS \
- ZEND_FE(IcePHP_defineEnum, NULL) \
- ZEND_FE(IcePHP_defineStruct, NULL) \
- ZEND_FE(IcePHP_defineSequence, NULL) \
- ZEND_FE(IcePHP_defineDictionary, NULL) \
- ZEND_FE(IcePHP_declareProxy, NULL) \
- ZEND_FE(IcePHP_defineProxy, NULL) \
- ZEND_FE(IcePHP_declareClass, NULL) \
- ZEND_FE(IcePHP_defineClass, NULL) \
- ZEND_FE(IcePHP_defineException, NULL) \
- ZEND_FE(IcePHP_stringify, NULL) \
- ZEND_FE(IcePHP_stringifyException, NULL)
-
-#define ICEPHP_UTIL_FUNCTIONS \
- ZEND_FE(Ice_stringVersion, NULL) \
- ZEND_FE(Ice_intVersion, NULL) \
- ZEND_FE(Ice_generateUUID, NULL) \
- ZEND_FE(Ice_currentProtocol, NULL) \
- ZEND_FE(Ice_currentProtocolEncoding, NULL) \
- ZEND_FE(Ice_currentEncoding, NULL) \
- ZEND_FE(Ice_protocolVersionToString, NULL) \
- ZEND_FE(Ice_stringToProtocolVersion, NULL) \
- ZEND_FE(Ice_encodingVersionToString, NULL) \
- ZEND_FE(Ice_stringToEncodingVersion, NULL)
+ ZEND_FE(IcePHP_defineEnum, ICE_NULLPTR) \
+ ZEND_FE(IcePHP_defineStruct, ICE_NULLPTR) \
+ ZEND_FE(IcePHP_defineSequence, ICE_NULLPTR) \
+ ZEND_FE(IcePHP_defineDictionary, ICE_NULLPTR) \
+ ZEND_FE(IcePHP_declareProxy, ICE_NULLPTR) \
+ ZEND_FE(IcePHP_defineProxy, ICE_NULLPTR) \
+ ZEND_FE(IcePHP_declareClass, ICE_NULLPTR) \
+ ZEND_FE(IcePHP_defineClass, ICE_NULLPTR) \
+ ZEND_FE(IcePHP_defineException, ICE_NULLPTR) \
+ ZEND_FE(IcePHP_stringify, ICE_NULLPTR) \
+ ZEND_FE(IcePHP_stringifyException, ICE_NULLPTR)
#ifdef ICEPHP_USE_NAMESPACES
-# define ICEPHP_UTIL_NS_FUNCTIONS \
- ZEND_NS_FALIAS("Ice", stringVersion, Ice_stringVersion, NULL) \
- ZEND_NS_FALIAS("Ice", intVersion, Ice_intVersion, NULL) \
- ZEND_NS_FALIAS("Ice", generateUUID, Ice_generateUUID, NULL) \
- ZEND_NS_FALIAS("Ice", currentProtocol, Ice_currentProtocol, NULL) \
- ZEND_NS_FALIAS("Ice", currentProtocolEncoding, Ice_currentProtocolEncoding, NULL) \
- ZEND_NS_FALIAS("Ice", currentEncoding, Ice_currentEncoding, NULL) \
- ZEND_NS_FALIAS("Ice", protocolVersionToString, Ice_protocolVersionToString, NULL) \
- ZEND_NS_FALIAS("Ice", stringToProtocolVersion, Ice_stringToProtocolVersion, NULL) \
- ZEND_NS_FALIAS("Ice", encodingVersionToString, Ice_encodingVersionToString, NULL) \
- ZEND_NS_FALIAS("Ice", stringToEncodingVersion, Ice_stringToEncodingVersion, NULL)
+# define ICEPHP_UTIL_FUNCTIONS \
+ ZEND_NS_NAMED_FE("Ice", stringVersion, ZEND_FN(Ice_stringVersion), ICE_NULLPTR) \
+ ZEND_NS_NAMED_FE("Ice", intVersion, ZEND_FN(Ice_intVersion), ICE_NULLPTR) \
+ ZEND_NS_NAMED_FE("Ice", generateUUID, ZEND_FN(Ice_generateUUID), ICE_NULLPTR) \
+ ZEND_NS_NAMED_FE("Ice", currentProtocol, ZEND_FN(Ice_currentProtocol), ICE_NULLPTR) \
+ ZEND_NS_NAMED_FE("Ice", currentProtocolEncoding, ZEND_FN(Ice_currentProtocolEncoding), ICE_NULLPTR) \
+ ZEND_NS_NAMED_FE("Ice", currentEncoding, ZEND_FN(Ice_currentEncoding), ICE_NULLPTR) \
+ ZEND_NS_NAMED_FE("Ice", protocolVersionToString, ZEND_FN(Ice_protocolVersionToString), ICE_NULLPTR) \
+ ZEND_NS_NAMED_FE("Ice", stringToProtocolVersion, ZEND_FN(Ice_stringToProtocolVersion), ICE_NULLPTR) \
+ ZEND_NS_NAMED_FE("Ice", encodingVersionToString, ZEND_FN(Ice_encodingVersionToString), ICE_NULLPTR) \
+ ZEND_NS_NAMED_FE("Ice", stringToEncodingVersion, ZEND_FN(Ice_stringToEncodingVersion), ICE_NULLPTR)
#else
-# define ICEPHP_UTIL_NS_FUNCTIONS
+# define ICEPHP_UTIL_FUNCTIONS \
+ ZEND_FE(Ice_stringVersion, ICE_NULLPTR) \
+ ZEND_FE(Ice_intVersion, ICE_NULLPTR) \
+ ZEND_FE(Ice_generateUUID, ICE_NULLPTR) \
+ ZEND_FE(Ice_currentProtocol, ICE_NULLPTR) \
+ ZEND_FE(Ice_currentProtocolEncoding, ICE_NULLPTR) \
+ ZEND_FE(Ice_currentEncoding, ICE_NULLPTR) \
+ ZEND_FE(Ice_protocolVersionToString, ICE_NULLPTR) \
+ ZEND_FE(Ice_stringToProtocolVersion, ICE_NULLPTR) \
+ ZEND_FE(Ice_encodingVersionToString, ICE_NULLPTR) \
+ ZEND_FE(Ice_stringToEncodingVersion, ICE_NULLPTR)
#endif
//
@@ -117,13 +111,10 @@ ZEND_END_ARG_INFO()
zend_function_entry ice_functions[] =
{
ICEPHP_COMMUNICATOR_FUNCTIONS
- ICEPHP_COMMUNICATOR_NS_FUNCTIONS
ICEPHP_OPERATION_FUNCTIONS
ICEPHP_PROPERTIES_FUNCTIONS
- ICEPHP_PROPERTIES_NS_FUNCTIONS
ICEPHP_TYPE_FUNCTIONS
ICEPHP_UTIL_FUNCTIONS
- ICEPHP_UTIL_NS_FUNCTIONS
{0, 0, 0}
};
//
diff --git a/php/src/php5/Logger.cpp b/php/src/php5/Logger.cpp
index 888a95bb672..2c92bda3a71 100644
--- a/php/src/php5/Logger.cpp
+++ b/php/src/php5/Logger.cpp
@@ -240,13 +240,13 @@ static zend_function_entry _interfaceMethods[] =
};
static zend_function_entry _classMethods[] =
{
- ZEND_ME(Ice_Logger, __construct, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
- ZEND_ME(Ice_Logger, __toString, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Logger, print, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Logger, trace, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Logger, warning, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Logger, error, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Logger, cloneWithPrefix, NULL, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Logger, __construct, ICE_NULLPTR, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
+ ZEND_ME(Ice_Logger, __toString, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Logger, print, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Logger, trace, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Logger, warning, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Logger, error, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Logger, cloneWithPrefix, ICE_NULLPTR, ZEND_ACC_PUBLIC)
{0, 0, 0}
};
//
diff --git a/php/src/php5/Makefile b/php/src/php5/Makefile
deleted file mode 100644
index 4256b75e41c..00000000000
--- a/php/src/php5/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-# **********************************************************************
-#
-# Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
-#
-# This copy of Ice is licensed to you under the terms described in the
-# ICE_LICENSE file included in this distribution.
-#
-# **********************************************************************
-
-top_srcdir = ../..
-
-LIBNAME = $(call mkphplibname,IcePHP)
-SONAME = $(LIBNAME)
-
-TARGETS = $(libdir)/$(LIBNAME)
-
-OBJS = Communicator.o \
- Connection.o \
- Endpoint.o \
- Init.o \
- Logger.o \
- Operation.o \
- Properties.o \
- Proxy.o \
- Types.o \
- Util.o
-
-include $(top_srcdir)/config/Make.rules.php
-
-CPPFLAGS := -I. $(CPPFLAGS) $(ICE_FLAGS) $(shell $(PHP_CONFIG) --includes)
-
-LINKWITH := $(ICE_LIBS) $(CXXLIBS)
-
-$(libdir)/$(LIBNAME): $(OBJS)
- rm -f $@
- $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH))
-
-install:: all
- $(call installphplib,$(libdir)/$(LIBNAME),$(DESTDIR)$(install_libdir))
diff --git a/php/src/php5/Makefile.mak b/php/src/php5/Makefile.mak
deleted file mode 100644
index 4abacaddcc9..00000000000
--- a/php/src/php5/Makefile.mak
+++ /dev/null
@@ -1,53 +0,0 @@
-# **********************************************************************
-#
-# Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
-#
-# This copy of Ice is licensed to you under the terms described in the
-# ICE_LICENSE file included in this distribution.
-#
-# **********************************************************************
-
-top_srcdir = ..\..
-
-LIBNAME = php_ice$(LIBSUFFIX).lib
-DLLNAME = $(libdir)\php_ice$(LIBSUFFIX).dll
-
-TARGETS = $(LIBNAME) $(DLLNAME)
-
-OBJS = .\Communicator.obj \
- .\Connection.obj \
- .\Endpoint.obj \
- .\Init.obj \
- .\Logger.obj \
- .\Operation.obj \
- .\Properties.obj \
- .\Proxy.obj \
- .\Types.obj \
- .\Util.obj
-
-!include $(top_srcdir)\config\Make.rules.mak.php
-
-CPPFLAGS = -I. -I.. $(CPPFLAGS) $(ICE_CPPFLAGS) $(PHP_CPPFLAGS)
-
-!if "$(ARCH)" == "x86"
-CPPFLAGS = $(CPPFLAGS) -D_USE_32BIT_TIME_T
-!endif
-
-!if "$(OPTIMIZE)" != "yes"
-PDBFLAGS = /pdb:$(LIBNAME:.lib=.pdb)
-!endif
-
-LINKWITH = $(ICE_LIBS) $(PHP_LIBS) $(CXXLIBS) icediscovery$(LIBSUFFIX).lib icelocatordiscovery$(LIBSUFFIX).lib
-
-$(LIBNAME): $(DLLNAME)
-
-$(DLLNAME): $(OBJS) IcePHP.res
- $(LINK) $(ICE_LDFLAGS) $(PHP_LDFLAGS) $(LD_DLLFLAGS) $(PDBFLAGS) $(OBJS) \
- $(PREOUT)$(DLLNAME) $(PRELIBS)$(LINKWITH) IcePHP.res
- move $(DLLNAME:.dll=.lib) $(LIBNAME)
-
-clean::
- -del /q IcePHP.res
-
-install:: all
- copy $(DLLNAME) "$(install_libdir)"
diff --git a/php/src/php5/Makefile.mk b/php/src/php5/Makefile.mk
new file mode 100644
index 00000000000..6c03f15d5f4
--- /dev/null
+++ b/php/src/php5/Makefile.mk
@@ -0,0 +1,22 @@
+# **********************************************************************
+#
+# Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+#
+# This copy of Ice is licensed to you under the terms described in the
+# ICE_LICENSE file included in this distribution.
+#
+# **********************************************************************
+
+$(project)_libraries := IcePHP
+
+IcePHP_target := php-module
+IcePHP_targetname := IcePHP
+IcePHP_targetdir := lib
+IcePHP_installdir := $(install_phplibdir)
+IcePHP_cppflags := -I$(project) -I$(top_srcdir)/cpp/src $(php_cpp_includes) $(php_cppflags)
+IcePHP_ldflags := $(php_ldflags)
+IcePHP_dependencies := IceDiscovery IceLocatorDiscovery IceSSL Ice
+IcePHP_extra_sources := $(top_srcdir)/cpp/src/Slice/PHPUtil.cpp
+
+projects += $(project)
+srcs:: $(project)
diff --git a/php/src/php5/Operation.cpp b/php/src/php5/Operation.cpp
index ebb76389c7c..07003b7b4d6 100644
--- a/php/src/php5/Operation.cpp
+++ b/php/src/php5/Operation.cpp
@@ -129,7 +129,7 @@ protected:
OperationIPtr _op;
- bool prepareRequest(int, zval**, Ice::OutputStreamPtr&, pair<const Ice::Byte*, const Ice::Byte*>& TSRMLS_DC);
+ bool prepareRequest(int, zval**, Ice::OutputStream*, pair<const Ice::Byte*, const Ice::Byte*>& TSRMLS_DC);
void unmarshalResults(int, zval**, zval*, const pair<const Ice::Byte*, const Ice::Byte*>& TSRMLS_DC);
zval* unmarshalException(const pair<const Ice::Byte*, const Ice::Byte*>& TSRMLS_DC);
bool validateException(const ExceptionInfoPtr& TSRMLS_DC) const;
@@ -148,11 +148,11 @@ public:
virtual void invoke(INTERNAL_FUNCTION_PARAMETERS);
};
-class UserExceptionReaderFactoryI : public Ice::UserExceptionReaderFactory
+class UserExceptionFactory : public Ice::UserExceptionFactory
{
public:
- UserExceptionReaderFactoryI(const CommunicatorInfoPtr& communicator TSRMLS_DC) :
+ UserExceptionFactory(const CommunicatorInfoPtr& communicator TSRMLS_DC) :
_communicator(communicator)
{
#ifdef ZTS
@@ -160,7 +160,7 @@ public:
#endif
}
- virtual void createAndThrow(const string& id) const
+ virtual void createAndThrow(const string& id)
{
ExceptionInfoPtr info = getExceptionInfo(id TSRMLS_CC);
if(info)
@@ -390,19 +390,19 @@ IcePHP::OperationI::convertParam(zval* p, int pos TSRMLS_DC)
{
assert(Z_TYPE_P(p) == IS_ARRAY);
HashTable* arr = Z_ARRVAL_P(p);
- assert(zend_hash_num_elements(arr) == 3);
ParamInfoPtr param = new ParamInfo;
zval** m;
zend_hash_index_find(arr, 0, reinterpret_cast<void**>(&m));
param->type = Wrapper<TypeInfoPtr>::value(*m TSRMLS_CC);
- zend_hash_index_find(arr, 1, reinterpret_cast<void**>(&m));
- assert(Z_TYPE_PP(m) == IS_BOOL);
- param->optional = Z_BVAL_PP(m) ? true : false;
- zend_hash_index_find(arr, 2, reinterpret_cast<void**>(&m));
- assert(Z_TYPE_PP(m) == IS_LONG);
- param->tag = Z_LVAL_PP(m);
+ param->optional = zend_hash_num_elements(arr) > 1;
+ if(param->optional)
+ {
+ zend_hash_index_find(arr, 1, reinterpret_cast<void**>(&m));
+ assert(Z_TYPE_PP(m) == IS_LONG);
+ param->tag = Z_LVAL_PP(m);
+ }
param->pos = pos;
return param;
@@ -460,7 +460,7 @@ IcePHP::TypedInvocation::TypedInvocation(const Ice::ObjectPrx& prx, const Commun
}
bool
-IcePHP::TypedInvocation::prepareRequest(int argc, zval** args, Ice::OutputStreamPtr& os,
+IcePHP::TypedInvocation::prepareRequest(int argc, zval** args, Ice::OutputStream* os,
pair<const Ice::Byte*, const Ice::Byte*>& params TSRMLS_DC)
{
//
@@ -488,7 +488,6 @@ IcePHP::TypedInvocation::prepareRequest(int argc, zval** args, Ice::OutputStream
//
// Marshal the in parameters.
//
- os = Ice::createOutputStream(_communicator->getCommunicator());
os->startEncapsulation(_prx->ice_getEncodingVersion(), _op->format);
ObjectMap objectMap;
@@ -537,7 +536,7 @@ IcePHP::TypedInvocation::prepareRequest(int argc, zval** args, Ice::OutputStream
if(_op->sendsClasses)
{
- os->writePendingObjects();
+ os->writePendingValues();
}
os->endEncapsulation();
@@ -561,17 +560,17 @@ void
IcePHP::TypedInvocation::unmarshalResults(int argc, zval** args, zval* ret,
const pair<const Ice::Byte*, const Ice::Byte*>& bytes TSRMLS_DC)
{
- Ice::InputStreamPtr is = Ice::wrapInputStream(_communicator->getCommunicator(), bytes);
+ Ice::InputStream is(_communicator->getCommunicator(), bytes);
//
- // Store a pointer to a local SlicedDataUtil object as the stream's closure.
+ // Store a pointer to a local StreamUtil object as the stream's closure.
// This is necessary to support object unmarshaling (see ObjectReader).
//
- SlicedDataUtil util;
- assert(!is->closure());
- is->closure(&util);
+ StreamUtil util;
+ assert(!is.getClosure());
+ is.setClosure(&util);
- is->startEncapsulation();
+ is.startEncapsulation();
ParamInfoList::iterator p;
@@ -594,7 +593,7 @@ IcePHP::TypedInvocation::unmarshalResults(int argc, zval** args, zval* ret,
{
ResultCallbackPtr cb = new ResultCallback;
outParamCallbacks[info->pos] = cb;
- info->type->unmarshal(is, cb, _communicator, 0, 0, false TSRMLS_CC);
+ info->type->unmarshal(&is, cb, _communicator, 0, 0, false TSRMLS_CC);
}
}
@@ -604,7 +603,7 @@ IcePHP::TypedInvocation::unmarshalResults(int argc, zval** args, zval* ret,
if(_op->returnType && !_op->returnType->optional)
{
retCallback = new ResultCallback;
- _op->returnType->type->unmarshal(is, retCallback, _communicator, 0, 0, false TSRMLS_CC);
+ _op->returnType->type->unmarshal(&is, retCallback, _communicator, 0, 0, false TSRMLS_CC);
}
//
@@ -624,9 +623,9 @@ IcePHP::TypedInvocation::unmarshalResults(int argc, zval** args, zval* ret,
outParamCallbacks[info->pos] = cb;
}
- if(is->readOptional(info->tag, info->type->optionalFormat()))
+ if(is.readOptional(info->tag, info->type->optionalFormat()))
{
- info->type->unmarshal(is, cb, _communicator, 0, 0, true TSRMLS_CC);
+ info->type->unmarshal(&is, cb, _communicator, 0, 0, true TSRMLS_CC);
}
else
{
@@ -636,12 +635,12 @@ IcePHP::TypedInvocation::unmarshalResults(int argc, zval** args, zval* ret,
if(_op->returnsClasses)
{
- is->readPendingObjects();
+ is.readPendingValues();
}
- is->endEncapsulation();
+ is.endEncapsulation();
- util.update(TSRMLS_C);
+ util.updateSlicedData(TSRMLS_C);
int i = static_cast<int>(_op->inParams.size());
for(ResultCallbackList::iterator q = outParamCallbacks.begin(); q != outParamCallbacks.end(); ++q, ++i)
@@ -668,38 +667,38 @@ IcePHP::TypedInvocation::unmarshalResults(int argc, zval** args, zval* ret,
zval*
IcePHP::TypedInvocation::unmarshalException(const pair<const Ice::Byte*, const Ice::Byte*>& bytes TSRMLS_DC)
{
- Ice::InputStreamPtr is = Ice::wrapInputStream(_communicator->getCommunicator(), bytes);
+ Ice::InputStream is(_communicator->getCommunicator(), bytes);
//
- // Store a pointer to a local SlicedDataUtil object as the stream's closure.
+ // Store a pointer to a local StreamUtil object as the stream's closure.
// This is necessary to support object unmarshaling (see ObjectReader).
//
- SlicedDataUtil util;
- assert(!is->closure());
- is->closure(&util);
+ StreamUtil util;
+ assert(!is.getClosure());
+ is.setClosure(&util);
- is->startEncapsulation();
+ is.startEncapsulation();
try
{
- Ice::UserExceptionReaderFactoryPtr factory = new UserExceptionReaderFactoryI(_communicator TSRMLS_CC);
- is->throwException(factory);
+ Ice::UserExceptionFactoryPtr factory = new UserExceptionFactory(_communicator TSRMLS_CC);
+ is.throwException(factory);
}
catch(const ExceptionReader& r)
{
- is->endEncapsulation();
+ is.endEncapsulation();
zval* ex = r.getException();
ExceptionInfoPtr info = r.getInfo();
if(validateException(info TSRMLS_CC))
{
- util.update(TSRMLS_C);
+ util.updateSlicedData(TSRMLS_C);
Ice::SlicedDataPtr slicedData = r.getSlicedData();
if(slicedData)
{
- SlicedDataUtil::setMember(ex, slicedData TSRMLS_CC);
+ StreamUtil::setSlicedDataMember(ex, slicedData TSRMLS_CC);
}
return ex;
@@ -771,9 +770,9 @@ IcePHP::SyncTypedInvocation::invoke(INTERNAL_FUNCTION_PARAMETERS)
return;
}
- Ice::OutputStreamPtr os;
+ Ice::OutputStream os(_prx->ice_getCommunicator());
pair<const Ice::Byte*, const Ice::Byte*> params;
- if(!prepareRequest(ZEND_NUM_ARGS(), *args, os, params TSRMLS_CC))
+ if(!prepareRequest(ZEND_NUM_ARGS(), *args, &os, params TSRMLS_CC))
{
return;
}
@@ -876,11 +875,13 @@ ZEND_FUNCTION(IcePHP_defineOperation)
}
TypeInfoPtr type = Wrapper<TypeInfoPtr>::value(cls TSRMLS_CC);
- ClassInfoPtr c = ClassInfoPtr::dynamicCast(type);
+ ProxyInfoPtr c = ProxyInfoPtr::dynamicCast(type);
assert(c);
- OperationIPtr op = new OperationI(name, static_cast<Ice::OperationMode>(mode),
- static_cast<Ice::OperationMode>(sendMode), static_cast<Ice::FormatType>(format),
+ OperationIPtr op = new OperationI(name,
+ static_cast<Ice::OperationMode>(mode),
+ static_cast<Ice::OperationMode>(sendMode),
+ static_cast<Ice::FormatType>(format),
inParams, outParams, returnType, exceptions TSRMLS_CC);
c->addOperation(name, op);
@@ -889,17 +890,17 @@ ZEND_FUNCTION(IcePHP_defineOperation)
ZEND_FUNCTION(IcePHP_Operation_call)
{
Ice::ObjectPrx proxy;
- ClassInfoPtr cls;
+ ProxyInfoPtr info;
CommunicatorInfoPtr comm;
#ifndef NDEBUG
bool b =
#endif
- fetchProxy(getThis(), proxy, cls, comm TSRMLS_CC);
+ fetchProxy(getThis(), proxy, info, comm TSRMLS_CC);
assert(b);
assert(proxy);
- assert(cls);
+ assert(info);
- OperationPtr op = cls->getOperation(get_active_function_name(TSRMLS_C));
+ OperationPtr op = info->getOperation(get_active_function_name(TSRMLS_C));
assert(op); // handleGetMethod should have already verified the operation's existence.
OperationIPtr opi = OperationIPtr::dynamicCast(op);
assert(opi);
diff --git a/php/src/php5/Properties.cpp b/php/src/php5/Properties.cpp
index 065292c4dfb..9f181f4408a 100644
--- a/php/src/php5/Properties.cpp
+++ b/php/src/php5/Properties.cpp
@@ -603,21 +603,21 @@ static zend_function_entry _interfaceMethods[] =
};
static zend_function_entry _classMethods[] =
{
- ZEND_ME(Ice_Properties, __construct, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
- ZEND_ME(Ice_Properties, __toString, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Properties, getProperty, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Properties, getPropertyWithDefault, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Properties, getPropertyAsInt, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Properties, getPropertyAsIntWithDefault, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Properties, getPropertyAsList, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Properties, getPropertyAsListWithDefault, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Properties, getPropertiesForPrefix, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Properties, setProperty, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Properties, getCommandLineOptions, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Properties, parseCommandLineOptions, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Properties, parseIceCommandLineOptions, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Properties, load, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_Properties, clone, NULL, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Properties, __construct, ICE_NULLPTR, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
+ ZEND_ME(Ice_Properties, __toString, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Properties, getProperty, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Properties, getPropertyWithDefault, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Properties, getPropertyAsInt, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Properties, getPropertyAsIntWithDefault, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Properties, getPropertyAsList, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Properties, getPropertyAsListWithDefault, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Properties, getPropertiesForPrefix, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Properties, setProperty, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Properties, getCommandLineOptions, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Properties, parseCommandLineOptions, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Properties, parseIceCommandLineOptions, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Properties, load, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_Properties, clone, ICE_NULLPTR, ZEND_ACC_PUBLIC)
{0, 0, 0}
};
diff --git a/php/src/php5/Proxy.cpp b/php/src/php5/Proxy.cpp
index 25ad7a19d81..5ba77e7e8e1 100644
--- a/php/src/php5/Proxy.cpp
+++ b/php/src/php5/Proxy.cpp
@@ -67,8 +67,6 @@ static union _zend_function* handleGetMethod(zval**, char*, int, const _zend_lit
static int handleCompare(zval*, zval* TSRMLS_DC);
}
-static ClassInfoPtr lookupClass(const string& TSRMLS_DC);
-
namespace IcePHP
{
@@ -79,15 +77,15 @@ class Proxy : public IceUtil::Shared
{
public:
- Proxy(const Ice::ObjectPrx&, const ClassInfoPtr&, const CommunicatorInfoPtr& TSRMLS_DC);
+ Proxy(const Ice::ObjectPrx&, const ProxyInfoPtr&, const CommunicatorInfoPtr& TSRMLS_DC);
~Proxy();
bool clone(zval*, const Ice::ObjectPrx& TSRMLS_DC);
bool cloneUntyped(zval*, const Ice::ObjectPrx& TSRMLS_DC);
- static bool create(zval*, const Ice::ObjectPrx&, const ClassInfoPtr&, const CommunicatorInfoPtr& TSRMLS_DC);
+ static bool create(zval*, const Ice::ObjectPrx&, const ProxyInfoPtr&, const CommunicatorInfoPtr& TSRMLS_DC);
Ice::ObjectPrx proxy;
- ClassInfoPtr info;
+ ProxyInfoPtr info;
CommunicatorInfoPtr communicator;
zval* connection;
zval* cachedConnection;
@@ -763,7 +761,7 @@ ZEND_METHOD(Ice_ObjectPrx, ice_getRouter)
Ice::RouterPrx router = _this->proxy->ice_getRouter();
if(router)
{
- ClassInfoPtr info = lookupClass("::Ice::Router" TSRMLS_CC);
+ ProxyInfoPtr info = getProxyInfo("::Ice::Router" TSRMLS_CC);
if(!info)
{
RETURN_NULL();
@@ -801,7 +799,7 @@ ZEND_METHOD(Ice_ObjectPrx, ice_router)
}
Ice::ObjectPrx proxy;
- ClassInfoPtr def;
+ ProxyInfoPtr def;
if(zprx && !fetchProxy(zprx, proxy, def TSRMLS_CC))
{
RETURN_NULL();
@@ -847,7 +845,7 @@ ZEND_METHOD(Ice_ObjectPrx, ice_getLocator)
Ice::LocatorPrx locator = _this->proxy->ice_getLocator();
if(locator)
{
- ClassInfoPtr info = lookupClass("::Ice::Locator" TSRMLS_CC);
+ ProxyInfoPtr info = getProxyInfo("::Ice::Locator" TSRMLS_CC);
if(!info)
{
RETURN_NULL();
@@ -883,7 +881,7 @@ ZEND_METHOD(Ice_ObjectPrx, ice_locator)
}
Ice::ObjectPrx proxy;
- ClassInfoPtr def;
+ ProxyInfoPtr def;
if(zprx && !fetchProxy(zprx, proxy, def TSRMLS_CC))
{
RETURN_NULL();
@@ -1194,6 +1192,31 @@ ZEND_METHOD(Ice_ObjectPrx, ice_timeout)
}
}
+ZEND_METHOD(Ice_ObjectPrx, ice_invocationTimeout)
+{
+ ProxyPtr _this = Wrapper<ProxyPtr>::value(getThis() TSRMLS_CC);
+ assert(_this);
+
+ try
+ {
+ long l;
+ if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast<char*>("l"), &l) != SUCCESS)
+ {
+ RETURN_NULL();
+ }
+ // TODO: range check?
+ if(!_this->clone(return_value, _this->proxy->ice_invocationTimeout(l) TSRMLS_CC))
+ {
+ RETURN_NULL();
+ }
+ }
+ catch(const IceUtil::Exception& ex)
+ {
+ throwException(ex TSRMLS_CC);
+ RETURN_NULL();
+ }
+}
+
ZEND_METHOD(Ice_ObjectPrx, ice_connectionId)
{
ProxyPtr _this = Wrapper<ProxyPtr>::value(getThis() TSRMLS_CC);
@@ -1290,30 +1313,6 @@ ZEND_METHOD(Ice_ObjectPrx, ice_flushBatchRequests)
}
}
-static ClassInfoPtr
-lookupClass(const string& id TSRMLS_DC)
-{
- ClassInfoPtr info = getClassInfoById(id TSRMLS_CC);
- if(!info)
- {
- if(!id.empty() && id[id.size() - 1] == '*')
- {
- info = getClassInfoById(id.substr(0, id.size() - 1) TSRMLS_CC);
- }
- }
-
- if(info && !info->defined)
- {
- runtimeError("%s is declared but not defined" TSRMLS_CC, id.c_str());
- }
- else if(!info)
- {
- runtimeError("no definition found for class or interface %s" TSRMLS_CC, id.c_str());
- }
-
- return info;
-}
-
static void
do_cast(INTERNAL_FUNCTION_PARAMETERS, bool check)
{
@@ -1359,7 +1358,7 @@ do_cast(INTERNAL_FUNCTION_PARAMETERS, bool check)
try
{
- ClassInfoPtr info = lookupClass(id TSRMLS_CC);
+ ProxyInfoPtr info = getProxyInfo(id TSRMLS_CC);
if(!info)
{
RETURN_NULL();
@@ -1413,7 +1412,7 @@ ZEND_METHOD(Ice_ObjectPrx, ice_checkedCast)
do_cast(INTERNAL_FUNCTION_PARAM_PASSTHRU, true);
}
-IcePHP::Proxy::Proxy(const Ice::ObjectPrx& p, const ClassInfoPtr& i, const CommunicatorInfoPtr& comm TSRMLS_DC) :
+IcePHP::Proxy::Proxy(const Ice::ObjectPrx& p, const ProxyInfoPtr& i, const CommunicatorInfoPtr& comm TSRMLS_DC) :
proxy(p), info(i), communicator(comm), connection(0), cachedConnection(0)
{
#ifdef ZTS
@@ -1453,14 +1452,14 @@ IcePHP::Proxy::cloneUntyped(zval* zv, const Ice::ObjectPrx& p TSRMLS_DC)
}
bool
-IcePHP::Proxy::create(zval* zv, const Ice::ObjectPrx& p, const ClassInfoPtr& info, const CommunicatorInfoPtr& comm
+IcePHP::Proxy::create(zval* zv, const Ice::ObjectPrx& p, const ProxyInfoPtr& info, const CommunicatorInfoPtr& comm
TSRMLS_DC)
{
- ClassInfoPtr cls = info;
- if(!cls)
+ ProxyInfoPtr prx = info;
+ if(!prx)
{
- cls = getClassInfoById("::Ice::Object" TSRMLS_CC);
- assert(cls);
+ prx = getProxyInfo("::Ice::Object" TSRMLS_CC);
+ assert(prx);
}
if(object_init_ex(zv, proxyClassEntry) != SUCCESS)
@@ -1470,7 +1469,7 @@ IcePHP::Proxy::create(zval* zv, const Ice::ObjectPrx& p, const ClassInfoPtr& inf
}
Wrapper<ProxyPtr>* obj = Wrapper<ProxyPtr>::extract(zv TSRMLS_CC);
- ProxyPtr proxy = new Proxy(p, cls, comm TSRMLS_CC);
+ ProxyPtr proxy = new Proxy(p, prx, comm TSRMLS_CC);
assert(!obj->ptr);
obj->ptr = new ProxyPtr(proxy);
@@ -1571,7 +1570,7 @@ handleGetMethod(zval** zv, char* method, int len, const _zend_literal* key TSRML
assert(obj->ptr);
ProxyPtr _this = *obj->ptr;
- ClassInfoPtr info = _this->info;
+ ProxyInfoPtr info = _this->info;
assert(info);
OperationPtr op = info->getOperation(method);
@@ -1635,55 +1634,56 @@ handleCompare(zval* zobj1, zval* zobj2 TSRMLS_DC)
//
static zend_function_entry _proxyMethods[] =
{
- ZEND_ME(Ice_ObjectPrx, __construct, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
- ZEND_ME(Ice_ObjectPrx, __toString, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_getCommunicator, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_toString, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_getIdentity, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_identity, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_getContext, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_context, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_getFacet, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_facet, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_getAdapterId, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_adapterId, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_getEndpoints, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_endpoints, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_getLocatorCacheTimeout, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_getConnectionId, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_locatorCacheTimeout, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_isConnectionCached, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_connectionCached, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_getEndpointSelection, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_endpointSelection, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_isSecure, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_secure, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_getEncodingVersion, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_encodingVersion, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_isPreferSecure, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_preferSecure, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_getRouter, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_router, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_getLocator, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_locator, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_twoway, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_isTwoway, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_oneway, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_isOneway, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_batchOneway, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_isBatchOneway, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_datagram, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_isDatagram, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_batchDatagram, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_isBatchDatagram, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_compress, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_timeout, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_connectionId, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_getConnection, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_getCachedConnection, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_flushBatchRequests, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_uncheckedCast, NULL, ZEND_ACC_PUBLIC)
- ZEND_ME(Ice_ObjectPrx, ice_checkedCast, NULL, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, __construct, ICE_NULLPTR, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
+ ZEND_ME(Ice_ObjectPrx, __toString, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_getCommunicator, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_toString, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_getIdentity, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_identity, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_getContext, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_context, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_getFacet, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_facet, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_getAdapterId, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_adapterId, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_getEndpoints, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_endpoints, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_getLocatorCacheTimeout, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_getConnectionId, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_locatorCacheTimeout, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_isConnectionCached, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_connectionCached, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_getEndpointSelection, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_endpointSelection, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_isSecure, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_secure, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_getEncodingVersion, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_encodingVersion, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_isPreferSecure, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_preferSecure, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_getRouter, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_router, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_getLocator, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_locator, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_twoway, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_isTwoway, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_oneway, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_isOneway, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_batchOneway, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_isBatchOneway, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_datagram, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_isDatagram, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_batchDatagram, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_isBatchDatagram, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_compress, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_timeout, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_invocationTimeout, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_connectionId, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_getConnection, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_getCachedConnection, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_flushBatchRequests, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_uncheckedCast, ICE_NULLPTR, ZEND_ACC_PUBLIC)
+ ZEND_ME(Ice_ObjectPrx, ice_checkedCast, ICE_NULLPTR, ZEND_ACC_PUBLIC)
{0, 0, 0}
};
@@ -1724,21 +1724,21 @@ IcePHP::createProxy(zval* zv, const Ice::ObjectPrx& p, const CommunicatorInfoPtr
}
bool
-IcePHP::createProxy(zval* zv, const Ice::ObjectPrx& p, const ClassInfoPtr& info, const CommunicatorInfoPtr& comm
+IcePHP::createProxy(zval* zv, const Ice::ObjectPrx& p, const ProxyInfoPtr& info, const CommunicatorInfoPtr& comm
TSRMLS_DC)
{
return Proxy::create(zv, p, info, comm TSRMLS_CC);
}
bool
-IcePHP::fetchProxy(zval* zv, Ice::ObjectPrx& prx, ClassInfoPtr& cls TSRMLS_DC)
+IcePHP::fetchProxy(zval* zv, Ice::ObjectPrx& prx, ProxyInfoPtr& info TSRMLS_DC)
{
CommunicatorInfoPtr comm;
- return fetchProxy(zv, prx, cls, comm TSRMLS_CC);
+ return fetchProxy(zv, prx, info, comm TSRMLS_CC);
}
bool
-IcePHP::fetchProxy(zval* zv, Ice::ObjectPrx& prx, ClassInfoPtr& cls, CommunicatorInfoPtr& comm TSRMLS_DC)
+IcePHP::fetchProxy(zval* zv, Ice::ObjectPrx& prx, ProxyInfoPtr& info, CommunicatorInfoPtr& comm TSRMLS_DC)
{
if(!ZVAL_IS_NULL(zv))
{
@@ -1755,7 +1755,7 @@ IcePHP::fetchProxy(zval* zv, Ice::ObjectPrx& prx, ClassInfoPtr& cls, Communicato
}
assert(obj->ptr);
prx = (*obj->ptr)->proxy;
- cls = (*obj->ptr)->info;
+ info = (*obj->ptr)->info;
comm = (*obj->ptr)->communicator;
}
return true;
diff --git a/php/src/php5/Proxy.h b/php/src/php5/Proxy.h
index a310400df7f..bd1cec725b0 100644
--- a/php/src/php5/Proxy.h
+++ b/php/src/php5/Proxy.h
@@ -20,9 +20,9 @@ namespace IcePHP
bool proxyInit(TSRMLS_D);
bool createProxy(zval*, const Ice::ObjectPrx&, const CommunicatorInfoPtr& TSRMLS_DC);
-bool createProxy(zval*, const Ice::ObjectPrx&, const ClassInfoPtr&, const CommunicatorInfoPtr& TSRMLS_DC);
-bool fetchProxy(zval*, Ice::ObjectPrx&, ClassInfoPtr& TSRMLS_DC);
-bool fetchProxy(zval*, Ice::ObjectPrx&, ClassInfoPtr&, CommunicatorInfoPtr& TSRMLS_DC);
+bool createProxy(zval*, const Ice::ObjectPrx&, const ProxyInfoPtr&, const CommunicatorInfoPtr& TSRMLS_DC);
+bool fetchProxy(zval*, Ice::ObjectPrx&, ProxyInfoPtr& TSRMLS_DC);
+bool fetchProxy(zval*, Ice::ObjectPrx&, ProxyInfoPtr&, CommunicatorInfoPtr& TSRMLS_DC);
//
// Class entry.
diff --git a/php/src/php5/Types.cpp b/php/src/php5/Types.cpp
index 1a9cca700e4..4e58a36e221 100644
--- a/php/src/php5/Types.cpp
+++ b/php/src/php5/Types.cpp
@@ -75,8 +75,8 @@ addProxyInfo(const ProxyInfoPtr& p TSRMLS_DC)
//
// getProxyInfo()
//
-static IcePHP::ProxyInfoPtr
-getProxyInfo(const string& id TSRMLS_DC)
+IcePHP::ProxyInfoPtr
+IcePHP::getProxyInfo(const string& id TSRMLS_DC)
{
if(ICE_G(proxyInfoMap))
{
@@ -227,38 +227,13 @@ IcePHP::getExceptionInfo(const string& id TSRMLS_DC)
return 0;
}
-namespace IcePHP
-{
-
-class ReadObjectCallback : public Ice::ReadObjectCallback
-{
-public:
-
- ReadObjectCallback(const ClassInfoPtr&, const UnmarshalCallbackPtr&, zval*, void* TSRMLS_DC);
- ~ReadObjectCallback();
-
- virtual void invoke(const ::Ice::ObjectPtr&);
-
-private:
-
- ClassInfoPtr _info;
- UnmarshalCallbackPtr _cb;
- zval* _target;
- void* _closure;
-#if ZTS
- TSRMLS_D;
-#endif
-};
-
-}
-
//
-// SlicedDataUtil implementation
+// StreamUtil implementation
//
-zend_class_entry* IcePHP::SlicedDataUtil::_slicedDataType = 0;
-zend_class_entry* IcePHP::SlicedDataUtil::_sliceInfoType = 0;
+zend_class_entry* IcePHP::StreamUtil::_slicedDataType = 0;
+zend_class_entry* IcePHP::StreamUtil::_sliceInfoType = 0;
-IcePHP::SlicedDataUtil::~SlicedDataUtil()
+IcePHP::StreamUtil::~StreamUtil()
{
//
// Make sure we break any cycles among the ObjectReaders in preserved slices.
@@ -269,35 +244,41 @@ IcePHP::SlicedDataUtil::~SlicedDataUtil()
for(Ice::SliceInfoSeq::const_iterator q = slicedData->slices.begin(); q != slicedData->slices.end(); ++q)
{
//
- // Don't just call (*q)->objects.clear(), as releasing references
- // to the objects could have unexpected side effects. We exchange
+ // Don't just call (*q)->instances.clear(), as releasing references
+ // to the instances could have unexpected side effects. We exchange
// the vector into a temporary and then let the temporary fall out
// of scope.
//
vector<Ice::ObjectPtr> tmp;
- tmp.swap((*q)->objects);
+ tmp.swap((*q)->instances);
}
}
}
void
-IcePHP::SlicedDataUtil::add(const ObjectReaderPtr& reader)
+IcePHP::StreamUtil::add(const ReadObjectCallbackPtr& callback)
+{
+ _callbacks.push_back(callback);
+}
+
+void
+IcePHP::StreamUtil::add(const ObjectReaderPtr& reader)
{
assert(reader->getSlicedData());
_readers.insert(reader);
}
void
-IcePHP::SlicedDataUtil::update(TSRMLS_D)
+IcePHP::StreamUtil::updateSlicedData(TSRMLS_D)
{
for(set<ObjectReaderPtr>::iterator p = _readers.begin(); p != _readers.end(); ++p)
{
- setMember((*p)->getObject(), (*p)->getSlicedData() TSRMLS_CC);
+ setSlicedDataMember((*p)->getObject(), (*p)->getSlicedData() TSRMLS_CC);
}
}
void
-IcePHP::SlicedDataUtil::setMember(zval* obj, const Ice::SlicedDataPtr& slicedData TSRMLS_DC)
+IcePHP::StreamUtil::setSlicedDataMember(zval* obj, const Ice::SlicedDataPtr& slicedData TSRMLS_DC)
{
//
// Create a PHP equivalent of the SlicedData object.
@@ -393,28 +374,28 @@ IcePHP::SlicedDataUtil::setMember(zval* obj, const Ice::SlicedDataPtr& slicedDat
}
//
- // objects
+ // instances
//
- zval* objects;
- MAKE_STD_ZVAL(objects);
- array_init(objects);
- AutoDestroy objectsDestroyer(objects);
- if(add_property_zval(slice, STRCAST("objects"), objects) != SUCCESS)
+ zval* instances;
+ MAKE_STD_ZVAL(instances);
+ array_init(instances);
+ AutoDestroy instancesDestroyer(instances);
+ if(add_property_zval(slice, STRCAST("instances"), instances) != SUCCESS)
{
throw AbortMarshaling();
}
- for(vector<Ice::ObjectPtr>::const_iterator q = (*p)->objects.begin(); q != (*p)->objects.end(); ++q)
+ for(vector<Ice::ObjectPtr>::const_iterator q = (*p)->instances.begin(); q != (*p)->instances.end(); ++q)
{
//
- // Each element in the objects list is an instance of ObjectReader that wraps a PHP object.
+ // Each element in the instances list is an instance of ObjectReader that wraps a PHP object.
//
assert(*q);
ObjectReaderPtr r = ObjectReaderPtr::dynamicCast(*q);
assert(r);
zval* o = r->getObject();
assert(Z_TYPE_P(o) == IS_OBJECT); // Should be non-nil.
- add_next_index_zval(objects, o); // Steals a reference.
+ add_next_index_zval(instances, o); // Steals a reference.
Z_ADDREF_P(o);
}
@@ -454,7 +435,7 @@ IcePHP::SlicedDataUtil::setMember(zval* obj, const Ice::SlicedDataPtr& slicedDat
// named _ice_slicedData which is an instance of the PHP class Ice_SlicedData.
//
Ice::SlicedDataPtr
-IcePHP::SlicedDataUtil::getMember(zval* obj, ObjectMap* objectMap TSRMLS_DC)
+IcePHP::StreamUtil::getSlicedDataMember(zval* obj, ObjectMap* objectMap TSRMLS_DC)
{
Ice::SlicedDataPtr slicedData;
@@ -538,11 +519,11 @@ IcePHP::SlicedDataUtil::getMember(zval* obj, ObjectMap* objectMap TSRMLS_DC)
#ifndef NDEBUG
status =
#endif
- zend_hash_find(Z_OBJPROP_P(s), STRCAST("objects"), sizeof("objects"), &data);
+ zend_hash_find(Z_OBJPROP_P(s), STRCAST("instances"), sizeof("instances"), &data);
assert(status == SUCCESS);
- zval* objects = *(reinterpret_cast<zval**>(data));
- assert(Z_TYPE_P(objects) == IS_ARRAY);
- HashTable* oarr = Z_ARRVAL_P(objects);
+ zval* instances = *(reinterpret_cast<zval**>(data));
+ assert(Z_TYPE_P(instances) == IS_ARRAY);
+ HashTable* oarr = Z_ARRVAL_P(instances);
HashPosition opos;
zend_hash_internal_pointer_reset_ex(oarr, &opos);
@@ -564,7 +545,7 @@ IcePHP::SlicedDataUtil::getMember(zval* obj, ObjectMap* objectMap TSRMLS_DC)
writer = i->second;
}
- info->objects.push_back(writer);
+ info->instances.push_back(writer);
zend_hash_move_forward_ex(oarr, &opos);
}
@@ -887,7 +868,7 @@ IcePHP::PrimitiveInfo::optionalFormat() const
}
void
-IcePHP::PrimitiveInfo::marshal(zval* zv, const Ice::OutputStreamPtr& os, ObjectMap*, bool TSRMLS_DC)
+IcePHP::PrimitiveInfo::marshal(zval* zv, Ice::OutputStream* os, ObjectMap*, bool TSRMLS_DC)
{
switch(kind)
{
@@ -995,7 +976,7 @@ IcePHP::PrimitiveInfo::marshal(zval* zv, const Ice::OutputStreamPtr& os, ObjectM
}
void
-IcePHP::PrimitiveInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb,
+IcePHP::PrimitiveInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb,
const CommunicatorInfoPtr&, zval* target, void* closure, bool TSRMLS_DC)
{
zval* zv;
@@ -1165,7 +1146,7 @@ IcePHP::EnumInfo::optionalFormat() const
}
void
-IcePHP::EnumInfo::marshal(zval* zv, const Ice::OutputStreamPtr& os, ObjectMap*, bool TSRMLS_DC)
+IcePHP::EnumInfo::marshal(zval* zv, Ice::OutputStream* os, ObjectMap*, bool TSRMLS_DC)
{
assert(Z_TYPE_P(zv) == IS_LONG); // validate() should have caught this.
const Ice::Int val = static_cast<Ice::Int>(Z_LVAL_P(zv));
@@ -1175,7 +1156,7 @@ IcePHP::EnumInfo::marshal(zval* zv, const Ice::OutputStreamPtr& os, ObjectMap*,
}
void
-IcePHP::EnumInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb,
+IcePHP::EnumInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb,
const CommunicatorInfoPtr&, zval* target, void* closure, bool TSRMLS_DC)
{
zval* zv;
@@ -1410,7 +1391,7 @@ IcePHP::StructInfo::usesClasses() const
}
void
-IcePHP::StructInfo::marshal(zval* zv, const Ice::OutputStreamPtr& os, ObjectMap* objectMap, bool optional TSRMLS_DC)
+IcePHP::StructInfo::marshal(zval* zv, Ice::OutputStream* os, ObjectMap* objectMap, bool optional TSRMLS_DC)
{
assert(Z_TYPE_P(zv) == IS_NULL || (Z_TYPE_P(zv) == IS_OBJECT && Z_OBJCE_P(zv) == zce));
@@ -1474,7 +1455,7 @@ IcePHP::StructInfo::marshal(zval* zv, const Ice::OutputStreamPtr& os, ObjectMap*
}
void
-IcePHP::StructInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb,
+IcePHP::StructInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb,
const CommunicatorInfoPtr& comm, zval* target, void* closure, bool optional TSRMLS_DC)
{
zval* zv;
@@ -1606,7 +1587,7 @@ IcePHP::SequenceInfo::usesClasses() const
}
void
-IcePHP::SequenceInfo::marshal(zval* zv, const Ice::OutputStreamPtr& os, ObjectMap* objectMap, bool optional TSRMLS_DC)
+IcePHP::SequenceInfo::marshal(zval* zv, Ice::OutputStream* os, ObjectMap* objectMap, bool optional TSRMLS_DC)
{
Ice::Int sz = 0;
HashTable* arr = 0;
@@ -1670,7 +1651,7 @@ IcePHP::SequenceInfo::marshal(zval* zv, const Ice::OutputStreamPtr& os, ObjectMa
}
void
-IcePHP::SequenceInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb,
+IcePHP::SequenceInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb,
const CommunicatorInfoPtr& comm, zval* target, void* closure, bool optional TSRMLS_DC)
{
if(optional)
@@ -1766,8 +1747,7 @@ IcePHP::SequenceInfo::destroy()
}
void
-IcePHP::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, zval* zv, const Ice::OutputStreamPtr& os
- TSRMLS_DC)
+IcePHP::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, zval* zv, Ice::OutputStream* os TSRMLS_DC)
{
HashTable* arr = Z_ARRVAL_P(zv);
@@ -1980,14 +1960,14 @@ IcePHP::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, zval*
seq[i++] = s;
zend_hash_move_forward_ex(arr, &pos);
}
- os->write(seq, true);
+ os->write(seq);
break;
}
}
}
void
-IcePHP::SequenceInfo::unmarshalPrimitiveSequence(const PrimitiveInfoPtr& pi, const Ice::InputStreamPtr& is,
+IcePHP::SequenceInfo::unmarshalPrimitiveSequence(const PrimitiveInfoPtr& pi, Ice::InputStream* is,
const UnmarshalCallbackPtr& cb, zval* target, void* closure TSRMLS_DC)
{
zval* zv;
@@ -2166,7 +2146,7 @@ IcePHP::DictionaryInfo::usesClasses() const
}
void
-IcePHP::DictionaryInfo::marshal(zval* zv, const Ice::OutputStreamPtr& os, ObjectMap* objectMap, bool optional TSRMLS_DC)
+IcePHP::DictionaryInfo::marshal(zval* zv, Ice::OutputStream* os, ObjectMap* objectMap, bool optional TSRMLS_DC)
{
Ice::Int sz = 0;
HashTable* arr = 0;
@@ -2313,7 +2293,7 @@ IcePHP::DictionaryInfo::marshal(zval* zv, const Ice::OutputStreamPtr& os, Object
}
void
-IcePHP::DictionaryInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb,
+IcePHP::DictionaryInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb,
const CommunicatorInfoPtr& comm, zval* target, void* closure, bool optional TSRMLS_DC)
{
if(optional)
@@ -2507,17 +2487,17 @@ IcePHP::DictionaryInfo::destroy()
// ClassInfo implementation.
//
IcePHP::ClassInfo::ClassInfo(const string& ident TSRMLS_DC) :
- id(ident), compactId(-1), isAbstract(false), preserve(false), zce(0), defined(false)
+ id(ident), compactId(-1), preserve(false), interface(false), zce(0), defined(false)
{
}
void
-IcePHP::ClassInfo::define(const string& n, Ice::Int compact, bool isAbs, bool pres, zval* b, zval* i, zval* m TSRMLS_DC)
+IcePHP::ClassInfo::define(const string& n, Ice::Int compact, bool pres, bool intf, zval* b, zval* m TSRMLS_DC)
{
const_cast<string&>(name) = n;
const_cast<Ice::Int&>(compactId) = static_cast<Ice::Int>(compact);
- const_cast<bool&>(isAbstract) = isAbs;
const_cast<bool&>(preserve) = pres;
+ const_cast<bool&>(interface) = intf;
if(b)
{
@@ -2526,23 +2506,6 @@ IcePHP::ClassInfo::define(const string& n, Ice::Int compact, bool isAbs, bool pr
assert(base);
}
- if(i)
- {
- HashTable* interfacesArray = Z_ARRVAL_P(i);
- void* data;
- HashPosition pos;
- zend_hash_internal_pointer_reset_ex(interfacesArray, &pos);
- while(zend_hash_get_current_data_ex(interfacesArray, &data, &pos) != FAILURE)
- {
- zval** interfaceType = reinterpret_cast<zval**>(data);
- TypeInfoPtr t = Wrapper<TypeInfoPtr>::value(*interfaceType TSRMLS_CC);
- ClassInfoPtr c = ClassInfoPtr::dynamicCast(t);
- assert(c);
- const_cast<ClassInfoList&>(interfaces).push_back(c);
- zend_hash_move_forward_ex(interfacesArray, &pos);
- }
- }
-
if(m)
{
convertDataMembers(m, const_cast<DataMemberList&>(members), const_cast<DataMemberList&>(optionalMembers),
@@ -2550,8 +2513,14 @@ IcePHP::ClassInfo::define(const string& n, Ice::Int compact, bool isAbs, bool pr
}
const_cast<bool&>(defined) = true;
- const_cast<zend_class_entry*&>(zce) = nameToClass(name TSRMLS_CC);
- assert(zce || id == "::Ice::LocalObject"); // LocalObject does not have a native PHP equivalent.
+#ifdef ICEPHP_USE_NAMESPACES
+ const string valueClass = "Ice\\Value";
+#else
+ const string valueClass = "Ice_Value";
+#endif
+ const_cast<zend_class_entry*&>(zce) = nameToClass(interface ? valueClass : name TSRMLS_CC);
+ // LocalObject and interfaces does not have a native PHP equivalent.
+ assert(zce || id == "::Ice::LocalObject" || interface);
}
string
@@ -2595,7 +2564,7 @@ IcePHP::ClassInfo::usesClasses() const
}
void
-IcePHP::ClassInfo::marshal(zval* zv, const Ice::OutputStreamPtr& os, ObjectMap* objectMap, bool TSRMLS_DC)
+IcePHP::ClassInfo::marshal(zval* zv, Ice::OutputStream* os, ObjectMap* objectMap, bool TSRMLS_DC)
{
if(!defined)
{
@@ -2605,7 +2574,8 @@ IcePHP::ClassInfo::marshal(zval* zv, const Ice::OutputStreamPtr& os, ObjectMap*
if(Z_TYPE_P(zv) == IS_NULL)
{
- os->writeObject(0);
+ Ice::ObjectPtr nil;
+ os->write(nil);
return;
}
@@ -2634,11 +2604,24 @@ IcePHP::ClassInfo::marshal(zval* zv, const Ice::OutputStreamPtr& os, ObjectMap*
//
// Give the writer to the stream. The stream will eventually call write() on it.
//
- os->writeObject(writer);
+ os->write(writer);
+}
+
+namespace
+{
+
+void
+patchObject(void* addr, const Ice::ObjectPtr& v)
+{
+ ReadObjectCallback* cb = static_cast<ReadObjectCallback*>(addr);
+ assert(cb);
+ cb->invoke(v);
+}
+
}
void
-IcePHP::ClassInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb,
+IcePHP::ClassInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb,
const CommunicatorInfoPtr& comm, zval* target, void* closure, bool TSRMLS_DC)
{
if(!defined)
@@ -2647,7 +2630,16 @@ IcePHP::ClassInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallb
throw AbortMarshaling();
}
- is->readObject(new ReadObjectCallback(this, cb, target, closure TSRMLS_CC));
+ //
+ // This callback is notified when the Slice value is actually read. The StreamUtil object
+ // attached to the stream keeps a reference to the callback object to ensure it lives
+ // long enough.
+ //
+ ReadObjectCallbackPtr rocb = new ReadObjectCallback(this, cb, target, closure TSRMLS_CC);
+ StreamUtil* util = reinterpret_cast<StreamUtil*>(is->getClosure());
+ assert(util);
+ util->add(rocb);
+ is->read(patchObject, rocb.get());
}
void
@@ -2686,7 +2678,6 @@ void
IcePHP::ClassInfo::destroy()
{
const_cast<ClassInfoPtr&>(base) = 0;
- const_cast<ClassInfoList&>(interfaces).clear();
if(!members.empty())
{
DataMemberList ml = members;
@@ -2758,63 +2749,44 @@ IcePHP::ClassInfo::isA(const string& typeId) const
return true;
}
- if(base && base->isA(typeId))
- {
- return true;
- }
-
- for(ClassInfoList::const_iterator p = interfaces.begin(); p != interfaces.end(); ++p)
- {
- if((*p)->isA(typeId))
- {
- return true;
- }
- }
-
- return false;
+ return base && base->isA(typeId);
}
-void
-IcePHP::ClassInfo::addOperation(const string& name, const OperationPtr& op)
+//
+// ProxyInfo implementation.
+//
+IcePHP::ProxyInfo::ProxyInfo(const string& ident TSRMLS_DC) :
+ id(ident), defined(false)
{
- operations.insert(OperationMap::value_type(Slice::PHP::fixIdent(name), op));
}
-IcePHP::OperationPtr
-IcePHP::ClassInfo::getOperation(const string& name) const
+void
+IcePHP::ProxyInfo::define(zval* b, zval* i TSRMLS_DC)
{
- OperationPtr op;
- OperationMap::const_iterator p = operations.find(name);
- if(p != operations.end())
- {
- op = p->second;
- }
- if(!op && base)
+ if(b)
{
- op = base->getOperation(name);
+ TypeInfoPtr p = Wrapper<TypeInfoPtr>::value(b);
+ const_cast<ProxyInfoPtr&>(base) = ProxyInfoPtr::dynamicCast(p);
+ assert(base);
}
- if(!op && !interfaces.empty())
+
+ if(i)
{
- for(ClassInfoList::const_iterator q = interfaces.begin(); q != interfaces.end() && !op; ++q)
+ HashTable* interfacesArray = Z_ARRVAL_P(i);
+ void* data;
+ HashPosition pos;
+ zend_hash_internal_pointer_reset_ex(interfacesArray, &pos);
+ while(zend_hash_get_current_data_ex(interfacesArray, &data, &pos) != FAILURE)
{
- op = (*q)->getOperation(name);
+ zval** interfaceType = reinterpret_cast<zval**>(data);
+ TypeInfoPtr t = Wrapper<TypeInfoPtr>::value(*interfaceType TSRMLS_CC);
+ ProxyInfoPtr c = ProxyInfoPtr::dynamicCast(t);
+ assert(c);
+ const_cast<ProxyInfoList&>(interfaces).push_back(c);
+ zend_hash_move_forward_ex(interfacesArray, &pos);
}
}
- return op;
-}
-//
-// ProxyInfo implementation.
-//
-IcePHP::ProxyInfo::ProxyInfo(const string& ident TSRMLS_DC) :
- id(ident), defined(false)
-{
-}
-
-void
-IcePHP::ProxyInfo::define(const ClassInfoPtr& c TSRMLS_DC)
-{
- const_cast<ClassInfoPtr&>(cls) = c;
const_cast<bool&>(defined) = true;
}
@@ -2862,7 +2834,7 @@ IcePHP::ProxyInfo::optionalFormat() const
}
void
-IcePHP::ProxyInfo::marshal(zval* zv, const Ice::OutputStreamPtr& os, ObjectMap*, bool optional TSRMLS_DC)
+IcePHP::ProxyInfo::marshal(zval* zv, Ice::OutputStream* os, ObjectMap*, bool optional TSRMLS_DC)
{
Ice::OutputStream::size_type sizePos = 0;
if(optional)
@@ -2878,7 +2850,7 @@ IcePHP::ProxyInfo::marshal(zval* zv, const Ice::OutputStreamPtr& os, ObjectMap*,
{
assert(Z_TYPE_P(zv) == IS_OBJECT && Z_OBJCE_P(zv) == proxyClassEntry); // validate() should have caught this.
Ice::ObjectPrx proxy;
- ClassInfoPtr info;
+ ProxyInfoPtr info;
if(!fetchProxy(zv, proxy, info TSRMLS_CC))
{
throw AbortMarshaling();
@@ -2898,7 +2870,7 @@ IcePHP::ProxyInfo::marshal(zval* zv, const Ice::OutputStreamPtr& os, ObjectMap*,
}
void
-IcePHP::ProxyInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallbackPtr& cb,
+IcePHP::ProxyInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallbackPtr& cb,
const CommunicatorInfoPtr& comm, zval* target, void* closure, bool optional TSRMLS_DC)
{
zval* zv;
@@ -2920,13 +2892,13 @@ IcePHP::ProxyInfo::unmarshal(const Ice::InputStreamPtr& is, const UnmarshalCallb
return;
}
- if(!cls->defined)
+ if(!defined)
{
- runtimeError("class or interface %s is declared but not defined" TSRMLS_CC, id.c_str());
+ runtimeError("proxy %s is declared but not defined" TSRMLS_CC, id.c_str());
throw AbortMarshaling();
}
- if(!createProxy(zv, proxy, cls, comm TSRMLS_CC))
+ if(!createProxy(zv, proxy, this, comm TSRMLS_CC))
{
throw AbortMarshaling();
}
@@ -2949,8 +2921,8 @@ IcePHP::ProxyInfo::print(zval* zv, IceUtilInternal::Output& out, PrintObjectHist
else
{
Ice::ObjectPrx proxy;
- ClassInfoPtr cls;
- if(!fetchProxy(zv, proxy, cls TSRMLS_CC))
+ ProxyInfoPtr info;
+ if(!fetchProxy(zv, proxy, info TSRMLS_CC))
{
return;
}
@@ -2961,14 +2933,68 @@ IcePHP::ProxyInfo::print(zval* zv, IceUtilInternal::Output& out, PrintObjectHist
void
IcePHP::ProxyInfo::destroy()
{
- const_cast<ClassInfoPtr&>(cls) = 0;
+ const_cast<ProxyInfoPtr&>(base) = 0;
+ const_cast<ProxyInfoList&>(interfaces).clear();
+}
+
+bool
+IcePHP::ProxyInfo::isA(const string& typeId) const
+{
+ if(id == typeId)
+ {
+ return true;
+ }
+
+ if(base && base->isA(typeId))
+ {
+ return true;
+ }
+
+ for(ProxyInfoList::const_iterator p = interfaces.begin(); p != interfaces.end(); ++p)
+ {
+ if((*p)->isA(typeId))
+ {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+void
+IcePHP::ProxyInfo::addOperation(const string& name, const OperationPtr& op)
+{
+ operations.insert(OperationMap::value_type(Slice::PHP::fixIdent(name), op));
+}
+
+IcePHP::OperationPtr
+IcePHP::ProxyInfo::getOperation(const string& name) const
+{
+ OperationPtr op;
+ OperationMap::const_iterator p = operations.find(name);
+ if(p != operations.end())
+ {
+ op = p->second;
+ }
+ if(!op && base)
+ {
+ op = base->getOperation(name);
+ }
+ if(!op && !interfaces.empty())
+ {
+ for(ProxyInfoList::const_iterator q = interfaces.begin(); q != interfaces.end() && !op; ++q)
+ {
+ op = (*q)->getOperation(name);
+ }
+ }
+ return op;
}
//
// ObjectWriter implementation.
//
IcePHP::ObjectWriter::ObjectWriter(zval* object, ObjectMap* objectMap, const ClassInfoPtr& formal TSRMLS_DC) :
- _object(object), _map(objectMap)
+ _object(object), _map(objectMap), _formal(formal)
{
#ifdef ZTS
this->TSRMLS_C = TSRMLS_C;
@@ -2976,15 +3002,18 @@ IcePHP::ObjectWriter::ObjectWriter(zval* object, ObjectMap* objectMap, const Cla
Z_ADDREF_P(_object);
- //
- // We need to determine the most-derived Slice type supported by this object.
- // This is typically a Slice class, but it can also be an interface.
- //
- // The caller may have provided a ClassInfo representing the formal type, in
- // which case we ensure that the actual type is compatible with the formal type.
- //
- _info = getClassInfoByClass(Z_OBJCE_P(object), formal ? const_cast<zend_class_entry*>(formal->zce) : 0 TSRMLS_CC);
- assert(_info);
+ if(!_formal || !_formal->interface)
+ {
+ //
+ // For no interface types We need to determine the most-derived Slice type supported by this object.
+ // This is typically a Slice class, but it can also be an interface.
+ //
+ // The caller may have provided a ClassInfo representing the formal type, in
+ // which case we ensure that the actual type is compatible with the formal type.
+ //
+ _info = getClassInfoByClass(Z_OBJCE_P(object), formal ? const_cast<zend_class_entry*>(formal->zce) : 0 TSRMLS_CC);
+ assert(_info);
+ }
}
IcePHP::ObjectWriter::~ObjectWriter()
@@ -3006,43 +3035,92 @@ IcePHP::ObjectWriter::ice_preMarshal()
}
void
-IcePHP::ObjectWriter::write(const Ice::OutputStreamPtr& os) const
+IcePHP::ObjectWriter::_iceWrite(Ice::OutputStream* os) const
{
Ice::SlicedDataPtr slicedData;
- if(_info->preserve)
+ if(_info && _info->preserve)
{
//
// Retrieve the SlicedData object that we stored as a hidden member of the PHP object.
//
- slicedData = SlicedDataUtil::getMember(_object, const_cast<ObjectMap*>(_map) TSRMLS_CC);
+ slicedData = StreamUtil::getSlicedDataMember(_object, const_cast<ObjectMap*>(_map) TSRMLS_CC);
}
- os->startObject(slicedData);
+ os->startValue(slicedData);
- if(_info->id != "::Ice::UnknownSlicedObject")
+ if(_formal && _formal->interface)
{
- ClassInfoPtr info = _info;
- while(info && info->id != Ice::Object::ice_staticId())
+ //
+ // For an interface by value we just marshal the Ice type id
+ // of the object in its own slice.
+ //
+ zval* ret = 0;
+
+ zend_try
+ {
+ const char* func = "ice_id";
+ zval* obj = const_cast<zval*>(_object);
+ zend_call_method(&obj, 0, 0, const_cast<char*>(func), static_cast<int>(strlen(func)), &ret, 0, 0,
+ 0 TSRMLS_CC);
+ }
+ zend_catch
{
- assert(info->base); // All classes have the Ice::Object base type.
- const bool lastSlice = info->base->id == Ice::Object::ice_staticId();
- os->startSlice(info->id, info->compactId, lastSlice);
+ ret = 0;
+ }
+ zend_end_try();
- writeMembers(os, info->members);
- writeMembers(os, info->optionalMembers); // The optional members have already been sorted by tag.
+ //
+ // Bail out if an exception has already been thrown.
+ //
+ if(!ret || EG(exception))
+ {
+ throw AbortMarshaling();
+ }
- os->endSlice();
+ AutoDestroy destroy(ret);
+
+ if(Z_TYPE_P(ret) != IS_STRING)
+ {
+ throw AbortMarshaling();
+ }
- info = info->base;
+ string id(Z_STRVAL_P(ret), Z_STRLEN_P(ret));
+ os->startSlice(id, -1, true);
+ os->endSlice();
+ }
+ else
+ {
+ if(_info->id != "::Ice::UnknownSlicedValue")
+ {
+ ClassInfoPtr info = _info;
+ while(info && info->id != Ice::Object::ice_staticId())
+ {
+ assert(info->base); // All classes have the Ice::Object base type.
+ const bool lastSlice = info->base->id == Ice::Object::ice_staticId();
+ os->startSlice(info->id, info->compactId, lastSlice);
+
+ writeMembers(os, info->members);
+ writeMembers(os, info->optionalMembers); // The optional members have already been sorted by tag.
+
+ os->endSlice();
+
+ info = info->base;
+ }
}
}
- os->endObject();
+ os->endValue();
+}
+
+void
+IcePHP::ObjectWriter::_iceRead(Ice::InputStream*)
+{
+ assert(false);
}
void
-IcePHP::ObjectWriter::writeMembers(const Ice::OutputStreamPtr& os, const DataMemberList& members) const
+IcePHP::ObjectWriter::writeMembers(Ice::OutputStream* os, const DataMemberList& members) const
{
for(DataMemberList::const_iterator q = members.begin(); q != members.end(); ++q)
{
@@ -3107,11 +3185,17 @@ IcePHP::ObjectReader::ice_postUnmarshal()
}
void
-IcePHP::ObjectReader::read(const Ice::InputStreamPtr& is)
+IcePHP::ObjectReader::_iceWrite(Ice::OutputStream*) const
+{
+ assert(false);
+}
+
+void
+IcePHP::ObjectReader::_iceRead(Ice::InputStream* is)
{
- is->startObject();
+ is->startValue();
- const bool unknown = _info->id == "::Ice::UnknownSlicedObject";
+ const bool unknown = _info->id == "::Ice::UnknownSlicedValue";
//
// Unmarshal the slices of a user-defined class.
@@ -3157,11 +3241,11 @@ IcePHP::ObjectReader::read(const Ice::InputStreamPtr& is)
}
}
- _slicedData = is->endObject(_info->preserve);
+ _slicedData = is->endValue(_info->preserve);
if(_slicedData)
{
- SlicedDataUtil* util = reinterpret_cast<SlicedDataUtil*>(is->closure());
+ StreamUtil* util = reinterpret_cast<StreamUtil*>(is->getClosure());
assert(util);
util->add(this);
@@ -3241,7 +3325,7 @@ IcePHP::ReadObjectCallback::invoke(const Ice::ObjectPtr& p)
// Verify that the unmarshaled object is compatible with the formal type.
//
zval* obj = reader->getObject();
- if(!reader->getInfo()->isA(_info->id))
+ if(!_info->interface && !reader->getInfo()->isA(_info->id))
{
Ice::UnexpectedObjectException ex(__FILE__, __LINE__);
ex.reason = "unmarshaled object is not an instance of " + _info->id;
@@ -3266,7 +3350,7 @@ IcePHP::ReadObjectCallback::invoke(const Ice::ObjectPtr& p)
// ExceptionInfo implementation.
//
zval*
-IcePHP::ExceptionInfo::unmarshal(const Ice::InputStreamPtr& is, const CommunicatorInfoPtr& comm TSRMLS_DC)
+IcePHP::ExceptionInfo::unmarshal(Ice::InputStream* is, const CommunicatorInfoPtr& comm TSRMLS_DC)
{
zval* zv;
MAKE_STD_ZVAL(zv);
@@ -3431,7 +3515,7 @@ IcePHP::ExceptionInfo::isA(const string& typeId) const
//
IcePHP::ExceptionReader::ExceptionReader(const CommunicatorInfoPtr& communicatorInfo, const ExceptionInfoPtr& info
TSRMLS_DC) :
- Ice::UserExceptionReader(communicatorInfo->getCommunicator()), _communicatorInfo(communicatorInfo), _info(info)
+ _communicatorInfo(communicatorInfo), _info(info)
{
#ifdef ZTS
this->TSRMLS_C = TSRMLS_C;
@@ -3443,24 +3527,8 @@ IcePHP::ExceptionReader::~ExceptionReader()
{
}
-void
-IcePHP::ExceptionReader::read(const Ice::InputStreamPtr& is) const
-{
- is->startException();
-
- const_cast<zval*&>(_ex) = _info->unmarshal(is, _communicatorInfo TSRMLS_CC);
-
- const_cast<Ice::SlicedDataPtr&>(_slicedData) = is->endException(_info->preserve);
-}
-
-bool
-IcePHP::ExceptionReader::usesClasses() const
-{
- return _info->usesClasses;
-}
-
string
-IcePHP::ExceptionReader::ice_name() const
+IcePHP::ExceptionReader::ice_id() const
{
return _info->id;
}
@@ -3478,6 +3546,28 @@ IcePHP::ExceptionReader::ice_throw() const
throw *this;
}
+void
+IcePHP::ExceptionReader::_write(Ice::OutputStream*) const
+{
+ assert(false);
+}
+
+void
+IcePHP::ExceptionReader::_read(Ice::InputStream* is)
+{
+ is->startException();
+
+ const_cast<zval*&>(_ex) = _info->unmarshal(is, _communicatorInfo TSRMLS_CC);
+
+ const_cast<Ice::SlicedDataPtr&>(_slicedData) = is->endException(_info->preserve);
+}
+
+bool
+IcePHP::ExceptionReader::_usesClasses() const
+{
+ return _info->usesClasses;
+}
+
ExceptionInfoPtr
IcePHP::ExceptionReader::getInfo() const
{
@@ -3673,25 +3763,26 @@ ZEND_FUNCTION(IcePHP_declareProxy)
ZEND_FUNCTION(IcePHP_defineProxy)
{
- zval* cls;
+ char* id;
+ size_t idLen;
+ zval* base;
+ zval* interfaces;
- if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast<char*>("o"), &cls) == FAILURE)
+
+ if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast<char*>("so!a!"), &id, &idLen, &base, &interfaces) ==
+ FAILURE)
{
return;
}
- TypeInfoPtr p = Wrapper<TypeInfoPtr>::value(cls TSRMLS_CC);
- ClassInfoPtr c = ClassInfoPtr::dynamicCast(p);
- assert(c);
-
- ProxyInfoPtr type = getProxyInfo(c->id TSRMLS_CC);
+ ProxyInfoPtr type = getProxyInfo(id TSRMLS_CC);
if(!type)
{
- type = new ProxyInfo(c->id TSRMLS_CC);
+ type = new ProxyInfo(id TSRMLS_CC);
addProxyInfo(type TSRMLS_CC);
}
- type->define(c TSRMLS_CC);
+ type->define(base, interfaces TSRMLS_CC);
if(!createTypeInfo(return_value, type TSRMLS_CC))
{
@@ -3729,14 +3820,13 @@ ZEND_FUNCTION(IcePHP_defineClass)
char* name;
int nameLen;
long compactId;
- zend_bool isAbstract;
zend_bool preserve;
+ zend_bool interface;
zval* base;
- zval* interfaces;
zval* members;
- if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast<char*>("sslbbo!a!a!"), &id, &idLen, &name, &nameLen,
- &compactId, &isAbstract, &preserve, &base, &interfaces, &members) == FAILURE)
+ if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast<char*>("sslbbo!a!"), &id, &idLen, &name, &nameLen,
+ &compactId, &preserve, &interface, &base, &members) == FAILURE)
{
return;
}
@@ -3748,17 +3838,23 @@ ZEND_FUNCTION(IcePHP_defineClass)
addClassInfoById(type TSRMLS_CC);
}
- type->define(name, static_cast<Ice::Int>(compactId), isAbstract ? true : false, preserve ? true : false, base,
- interfaces, members TSRMLS_CC);
- addClassInfoByName(type TSRMLS_CC);
+ type->define(name, static_cast<Ice::Int>(compactId), preserve ? true : false, interface ? true : false, base,
+ members TSRMLS_CC);
+ if(!interface)
+ {
+ addClassInfoByName(type TSRMLS_CC);
+ }
- CompactIdMap* m = reinterpret_cast<CompactIdMap*>(ICE_G(compactIdToClassInfoMap));
- if(!m)
+ if(type->compactId != -1)
{
- m = new CompactIdMap;
- ICE_G(compactIdToClassInfoMap) = m;
+ CompactIdMap* m = reinterpret_cast<CompactIdMap*>(ICE_G(compactIdToClassInfoMap));
+ if(!m)
+ {
+ m = new CompactIdMap;
+ ICE_G(compactIdToClassInfoMap) = m;
+ }
+ m->insert(CompactIdMap::value_type(type->compactId, type));
}
- m->insert(CompactIdMap::value_type(type->compactId, type));
if(!createTypeInfo(return_value, type TSRMLS_CC))
{
diff --git a/php/src/php5/Types.h b/php/src/php5/Types.h
index 83b3e6bc144..956bd8fa9af 100644
--- a/php/src/php5/Types.h
+++ b/php/src/php5/Types.h
@@ -13,7 +13,6 @@
#include <Config.h>
#include <Communicator.h>
#include <Operation.h>
-#include <Ice/Stream.h>
#include <IceUtil/OutputUtil.h>
//
@@ -44,35 +43,18 @@ class AbortMarshaling
{
};
+class ClassInfo;
+typedef IceUtil::Handle<ClassInfo> ClassInfoPtr;
+
+class ProxyInfo;
+typedef IceUtil::Handle<ProxyInfo> ProxyInfoPtr;
+typedef std::vector<ProxyInfoPtr> ProxyInfoList;
+
typedef std::map<unsigned int, Ice::ObjectPtr> ObjectMap;
class ObjectReader;
typedef IceUtil::Handle<ObjectReader> ObjectReaderPtr;
-//
-// This class keeps track of PHP objects (instances of Slice classes
-// and exceptions) that have preserved slices.
-//
-class SlicedDataUtil
-{
-public:
-
- ~SlicedDataUtil();
-
- void add(const ObjectReaderPtr&);
-
- void update(TSRMLS_D);
-
- static void setMember(zval*, const Ice::SlicedDataPtr& TSRMLS_DC);
- static Ice::SlicedDataPtr getMember(zval*, ObjectMap* TSRMLS_DC);
-
-private:
-
- std::set<ObjectReaderPtr> _readers;
- static zend_class_entry* _slicedDataType;
- static zend_class_entry* _sliceInfoType;
-};
-
struct PrintObjectHistory
{
int index;
@@ -103,6 +85,64 @@ public:
typedef IceUtil::Handle<UnmarshalCallback> UnmarshalCallbackPtr;
//
+// ReadObjectCallback retains all of the information necessary to store an unmarshaled
+// Slice value as a PHP object.
+//
+class ReadObjectCallback : public IceUtil::Shared
+{
+public:
+
+ ReadObjectCallback(const ClassInfoPtr&, const UnmarshalCallbackPtr&, zval*, void* TSRMLS_DC);
+ ~ReadObjectCallback();
+
+ virtual void invoke(const ::Ice::ObjectPtr&);
+
+private:
+
+ ClassInfoPtr _info;
+ UnmarshalCallbackPtr _cb;
+ zval* _target;
+ void* _closure;
+#if ZTS
+ TSRMLS_D;
+#endif
+};
+typedef IceUtil::Handle<ReadObjectCallback> ReadObjectCallbackPtr;
+
+//
+// This class keeps track of PHP objects (instances of Slice classes
+// and exceptions) that have preserved slices.
+//
+class StreamUtil
+{
+public:
+
+ ~StreamUtil();
+
+ //
+ // Keep a reference to a ReadObjectCallback for patching purposes.
+ //
+ void add(const ReadObjectCallbackPtr&);
+
+ //
+ // Keep track of object instances that have preserved slices.
+ //
+ void add(const ObjectReaderPtr&);
+
+ void updateSlicedData(TSRMLS_D);
+
+ static void setSlicedDataMember(zval*, const Ice::SlicedDataPtr& TSRMLS_DC);
+ static Ice::SlicedDataPtr getSlicedDataMember(zval*, ObjectMap* TSRMLS_DC);
+
+private:
+
+ std::vector<ReadObjectCallbackPtr> _callbacks;
+ std::set<ObjectReaderPtr> _readers;
+ static zend_class_entry* _slicedDataType;
+ static zend_class_entry* _sliceInfoType;
+};
+
+//
// Base class for type information.
//
class TypeInfo : public UnmarshalCallback
@@ -133,8 +173,8 @@ public:
// The marshal and unmarshal functions can raise Ice exceptions, and may raise
// AbortMarshaling if an error occurs.
//
- virtual void marshal(zval*, const Ice::OutputStreamPtr&, ObjectMap*, bool TSRMLS_DC) = 0;
- virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, const CommunicatorInfoPtr&,
+ virtual void marshal(zval*, Ice::OutputStream*, ObjectMap*, bool TSRMLS_DC) = 0;
+ virtual void unmarshal(Ice::InputStream*, const UnmarshalCallbackPtr&, const CommunicatorInfoPtr&,
zval*, void*, bool TSRMLS_DC) = 0;
virtual void print(zval*, IceUtilInternal::Output&, PrintObjectHistory* TSRMLS_DC) = 0;
@@ -156,8 +196,8 @@ public:
virtual int wireSize() const;
virtual Ice::OptionalFormat optionalFormat() const;
- virtual void marshal(zval*, const Ice::OutputStreamPtr&, ObjectMap*, bool TSRMLS_DC);
- virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, const CommunicatorInfoPtr&,
+ virtual void marshal(zval*, Ice::OutputStream*, ObjectMap*, bool TSRMLS_DC);
+ virtual void unmarshal(Ice::InputStream*, const UnmarshalCallbackPtr&, const CommunicatorInfoPtr&,
zval*, void*, bool TSRMLS_DC);
virtual void print(zval*, IceUtilInternal::Output&, PrintObjectHistory* TSRMLS_DC);
@@ -195,8 +235,8 @@ public:
virtual int wireSize() const;
virtual Ice::OptionalFormat optionalFormat() const;
- virtual void marshal(zval*, const Ice::OutputStreamPtr&, ObjectMap*, bool TSRMLS_DC);
- virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, const CommunicatorInfoPtr&,
+ virtual void marshal(zval*, Ice::OutputStream*, ObjectMap*, bool TSRMLS_DC);
+ virtual void unmarshal(Ice::InputStream*, const UnmarshalCallbackPtr&, const CommunicatorInfoPtr&,
zval*, void*, bool TSRMLS_DC);
virtual void print(zval*, IceUtilInternal::Output&, PrintObjectHistory* TSRMLS_DC);
@@ -243,8 +283,8 @@ public:
virtual bool usesClasses() const;
- virtual void marshal(zval*, const Ice::OutputStreamPtr&, ObjectMap*, bool TSRMLS_DC);
- virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, const CommunicatorInfoPtr&,
+ virtual void marshal(zval*, Ice::OutputStream*, ObjectMap*, bool TSRMLS_DC);
+ virtual void unmarshal(Ice::InputStream*, const UnmarshalCallbackPtr&, const CommunicatorInfoPtr&,
zval*, void*, bool TSRMLS_DC);
virtual void print(zval*, IceUtilInternal::Output&, PrintObjectHistory* TSRMLS_DC);
@@ -283,8 +323,8 @@ public:
virtual bool usesClasses() const;
- virtual void marshal(zval*, const Ice::OutputStreamPtr&, ObjectMap*, bool TSRMLS_DC);
- virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, const CommunicatorInfoPtr&,
+ virtual void marshal(zval*, Ice::OutputStream*, ObjectMap*, bool TSRMLS_DC);
+ virtual void unmarshal(Ice::InputStream*, const UnmarshalCallbackPtr&, const CommunicatorInfoPtr&,
zval*, void*, bool TSRMLS_DC);
virtual void print(zval*, IceUtilInternal::Output&, PrintObjectHistory* TSRMLS_DC);
@@ -298,8 +338,8 @@ public:
private:
- void marshalPrimitiveSequence(const PrimitiveInfoPtr&, zval*, const Ice::OutputStreamPtr& TSRMLS_DC);
- void unmarshalPrimitiveSequence(const PrimitiveInfoPtr&, const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&,
+ void marshalPrimitiveSequence(const PrimitiveInfoPtr&, zval*, Ice::OutputStream* TSRMLS_DC);
+ void unmarshalPrimitiveSequence(const PrimitiveInfoPtr&, Ice::InputStream*, const UnmarshalCallbackPtr&,
zval*, void* TSRMLS_DC);
};
typedef IceUtil::Handle<SequenceInfo> SequenceInfoPtr;
@@ -323,8 +363,8 @@ public:
virtual bool usesClasses() const;
- virtual void marshal(zval*, const Ice::OutputStreamPtr&, ObjectMap*, bool TSRMLS_DC);
- virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, const CommunicatorInfoPtr&,
+ virtual void marshal(zval*, Ice::OutputStream*, ObjectMap*, bool TSRMLS_DC);
+ virtual void unmarshal(Ice::InputStream*, const UnmarshalCallbackPtr&, const CommunicatorInfoPtr&,
zval*, void*, bool TSRMLS_DC);
virtual void print(zval*, IceUtilInternal::Output&, PrintObjectHistory* TSRMLS_DC);
@@ -372,10 +412,6 @@ class ExceptionInfo;
typedef IceUtil::Handle<ExceptionInfo> ExceptionInfoPtr;
typedef std::vector<ExceptionInfoPtr> ExceptionInfoList;
-class ClassInfo;
-typedef IceUtil::Handle<ClassInfo> ClassInfoPtr;
-typedef std::vector<ClassInfoPtr> ClassInfoList;
-
typedef std::vector<TypeInfoPtr> TypeInfoList;
class ClassInfo : public TypeInfo
@@ -384,7 +420,7 @@ public:
ClassInfo(const std::string& TSRMLS_DC);
- void define(const std::string&, Ice::Int, bool, bool, zval*, zval*, zval* TSRMLS_DC);
+ void define(const std::string&, Ice::Int, bool, bool, zval*, zval* TSRMLS_DC);
virtual std::string getId() const;
@@ -396,8 +432,8 @@ public:
virtual bool usesClasses() const;
- virtual void marshal(zval*, const Ice::OutputStreamPtr&, ObjectMap*, bool TSRMLS_DC);
- virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, const CommunicatorInfoPtr&,
+ virtual void marshal(zval*, Ice::OutputStream*, ObjectMap*, bool TSRMLS_DC);
+ virtual void unmarshal(Ice::InputStream*, const UnmarshalCallbackPtr&, const CommunicatorInfoPtr&,
zval*, void*, bool TSRMLS_DC);
virtual void print(zval*, IceUtilInternal::Output&, PrintObjectHistory* TSRMLS_DC);
@@ -408,23 +444,16 @@ public:
bool isA(const std::string&) const;
- void addOperation(const std::string&, const OperationPtr&);
- OperationPtr getOperation(const std::string&) const;
-
const std::string id;
const std::string name; // PHP class name
const Ice::Int compactId;
- const bool isAbstract;
const bool preserve;
+ const bool interface;
const ClassInfoPtr base;
- const ClassInfoList interfaces;
const DataMemberList members;
const DataMemberList optionalMembers;
const zend_class_entry* zce;
bool defined;
-
- typedef std::map<std::string, OperationPtr> OperationMap;
- OperationMap operations;
};
//
@@ -436,7 +465,7 @@ public:
ProxyInfo(const std::string& TSRMLS_DC);
- void define(const ClassInfoPtr& TSRMLS_DC);
+ void define(zval*, zval* TSRMLS_DC);
virtual std::string getId() const;
@@ -446,17 +475,25 @@ public:
virtual int wireSize() const;
virtual Ice::OptionalFormat optionalFormat() const;
- virtual void marshal(zval*, const Ice::OutputStreamPtr&, ObjectMap*, bool TSRMLS_DC);
- virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, const CommunicatorInfoPtr&,
+ virtual void marshal(zval*, Ice::OutputStream*, ObjectMap*, bool TSRMLS_DC);
+ virtual void unmarshal(Ice::InputStream*, const UnmarshalCallbackPtr&, const CommunicatorInfoPtr&,
zval*, void*, bool TSRMLS_DC);
virtual void print(zval*, IceUtilInternal::Output&, PrintObjectHistory* TSRMLS_DC);
virtual void destroy();
+ bool isA(const std::string&) const;
+
+ void addOperation(const std::string&, const OperationPtr&);
+ OperationPtr getOperation(const std::string&) const;
+
const std::string id;
- const ClassInfoPtr cls;
+ const ProxyInfoPtr base;
+ const ProxyInfoList interfaces;
bool defined;
+ typedef std::map<std::string, OperationPtr> OperationMap;
+ OperationMap operations;
};
typedef IceUtil::Handle<ProxyInfo> ProxyInfoPtr;
@@ -467,7 +504,7 @@ class ExceptionInfo : public IceUtil::Shared
{
public:
- zval* unmarshal(const Ice::InputStreamPtr&, const CommunicatorInfoPtr& TSRMLS_DC);
+ zval* unmarshal(Ice::InputStream*, const CommunicatorInfoPtr& TSRMLS_DC);
void print(zval*, IceUtilInternal::Output& TSRMLS_DC);
void printMembers(zval*, IceUtilInternal::Output&, PrintObjectHistory* TSRMLS_DC);
@@ -486,6 +523,7 @@ public:
ClassInfoPtr getClassInfoById(const std::string& TSRMLS_DC);
ClassInfoPtr getClassInfoByName(const std::string& TSRMLS_DC);
+ProxyInfoPtr getProxyInfo(const std::string& TSRMLS_DC);
ExceptionInfoPtr getExceptionInfo(const std::string& TSRMLS_DC);
bool isUnset(zval* TSRMLS_DC);
@@ -498,7 +536,7 @@ bool typesRequestShutdown(TSRMLS_D);
//
// ObjectWriter wraps a PHP object for marshaling.
//
-class ObjectWriter : public Ice::ObjectWriter
+class ObjectWriter : public Ice::Object
{
public:
@@ -507,15 +545,17 @@ public:
virtual void ice_preMarshal();
- virtual void write(const Ice::OutputStreamPtr&) const;
+ virtual void _iceWrite(Ice::OutputStream*) const;
+ virtual void _iceRead(Ice::InputStream*);
private:
- void writeMembers(const Ice::OutputStreamPtr&, const DataMemberList&) const;
+ void writeMembers(Ice::OutputStream*, const DataMemberList&) const;
zval* _object;
ObjectMap* _map;
ClassInfoPtr _info;
+ ClassInfoPtr _formal;
#if ZTS
TSRMLS_D;
#endif
@@ -524,7 +564,7 @@ private:
//
// ObjectReader unmarshals the state of an Ice object.
//
-class ObjectReader : public Ice::ObjectReader
+class ObjectReader : public Ice::Object
{
public:
@@ -533,7 +573,8 @@ public:
virtual void ice_postUnmarshal();
- virtual void read(const Ice::InputStreamPtr&);
+ virtual void _iceWrite(Ice::OutputStream*) const;
+ virtual void _iceRead(Ice::InputStream*);
virtual ClassInfoPtr getInfo() const;
@@ -555,26 +596,32 @@ private:
//
// ExceptionReader creates a PHP user exception and unmarshals it.
//
-class ExceptionReader : public Ice::UserExceptionReader
+class ExceptionReader : public Ice::UserException
{
public:
ExceptionReader(const CommunicatorInfoPtr&, const ExceptionInfoPtr& TSRMLS_DC);
~ExceptionReader() throw();
- virtual void read(const Ice::InputStreamPtr&) const;
- virtual bool usesClasses() const;
-
- virtual std::string ice_name() const;
+ virtual std::string ice_id() const;
virtual ExceptionReader* ice_clone() const;
virtual void ice_throw() const;
+ virtual void _write(Ice::OutputStream*) const;
+ virtual void _read(Ice::InputStream*);
+ virtual bool _usesClasses() const;
+
ExceptionInfoPtr getInfo() const;
zval* getException() const;
Ice::SlicedDataPtr getSlicedData() const;
+protected:
+
+ virtual void _writeImpl(Ice::OutputStream*) const {}
+ virtual void _readImpl(Ice::InputStream*) {}
+
private:
CommunicatorInfoPtr _communicatorInfo;
diff --git a/php/src/php5/Util.cpp b/php/src/php5/Util.cpp
index 3840902b265..affb9428136 100644
--- a/php/src/php5/Util.cpp
+++ b/php/src/php5/Util.cpp
@@ -8,7 +8,7 @@
// **********************************************************************
#include <Util.h>
-#include <IceUtil/UUID.h>
+#include <Ice/UUID.h>
#include <Slice/PHPUtil.h>
#include <algorithm>
#include <ctype.h>
@@ -323,7 +323,7 @@ IcePHP::createStringMap(zval* zv, const map<string, string>& ctx TSRMLS_DC)
for(map<string, string>::const_iterator p = ctx.begin(); p != ctx.end(); ++p)
{
if(add_assoc_stringl_ex(zv, const_cast<char*>(p->first.c_str()), p->first.length() + 1,
- const_cast<char*>(p->second.c_str()),
+ const_cast<char*>(p->second.c_str()),
static_cast<uint>(p->second.length()), 1) == FAILURE)
{
return false;
@@ -595,7 +595,7 @@ convertLocalException(const Ice::LocalException& ex, zval* zex TSRMLS_DC)
zend_update_property(cls, zex, const_cast<char*>("supported"), sizeof("supported") - 1, v TSRMLS_CC);
zval_ptr_dtor(&v);
}
- catch(const Ice::NoObjectFactoryException& e)
+ catch(const Ice::NoValueFactoryException& e)
{
setStringMember(zex, "reason", e.reason TSRMLS_CC);
setStringMember(zex, "type", e.type TSRMLS_CC);
@@ -618,6 +618,10 @@ convertLocalException(const Ice::LocalException& ex, zval* zex TSRMLS_DC)
{
setStringMember(zex, "reason", e.reason TSRMLS_CC);
}
+ catch(const Ice::ConnectionManuallyClosedException& e)
+ {
+ add_property_bool(zex, "graceful", e.graceful ? 1 : 0);
+ }
catch(const Ice::LocalException&)
{
//
@@ -645,7 +649,7 @@ IcePHP::convertException(const Ice::Exception& ex TSRMLS_DC)
}
catch(const Ice::LocalException& e)
{
- zend_class_entry* cls = idToClass(e.ice_name() TSRMLS_CC);
+ zend_class_entry* cls = idToClass(e.ice_id() TSRMLS_CC);
if(cls)
{
if(object_init_ex(zex, cls) != SUCCESS)
@@ -924,7 +928,7 @@ ZEND_FUNCTION(Ice_generateUUID)
WRONG_PARAM_COUNT;
}
- string uuid = IceUtil::generateUUID();
+ string uuid = Ice::generateUUID();
RETURN_STRINGL(STRCAST(uuid.c_str()), static_cast<int>(uuid.size()), 1);
}