diff options
Diffstat (limited to 'php/src/php5/Endpoint.cpp')
-rw-r--r-- | php/src/php5/Endpoint.cpp | 43 |
1 files changed, 19 insertions, 24 deletions
diff --git a/php/src/php5/Endpoint.cpp b/php/src/php5/Endpoint.cpp index f9f0ca00c26..831f602125d 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. @@ -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, @@ -364,7 +365,7 @@ IcePHP::endpointInit(TSRMLS_D) INIT_CLASS_ENTRY(ce, "Ice_WSEndpointInfo", NULL); #endif ce.create_object = handleEndpointInfoAlloc; - wsEndpointInfoClassEntry = zend_register_internal_class_ex(&ce, ipEndpointInfoClassEntry, NULL TSRMLS_CC); + wsEndpointInfoClassEntry = zend_register_internal_class_ex(&ce, endpointInfoClassEntry, NULL TSRMLS_CC); zend_declare_property_string(wsEndpointInfoClassEntry, STRCAST("resource"), sizeof("resource") - 1, STRCAST(""), ZEND_ACC_PUBLIC TSRMLS_CC); @@ -392,20 +393,7 @@ IcePHP::endpointInit(TSRMLS_D) INIT_CLASS_ENTRY(ce, "Ice_SSLEndpointInfo", NULL); #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, NULL 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)); |