[07/10] webservices: Implement WsCreateServiceProxyFromTemplate.
Hans Leidekker
hans at codeweavers.com
Fri Apr 22 02:42:44 CDT 2016
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
---
dlls/webservices/proxy.c | 60 +++++++++++++++++++++++++++++++++++++++
dlls/webservices/webservices.spec | 2 +-
2 files changed, 61 insertions(+), 1 deletion(-)
diff --git a/dlls/webservices/proxy.c b/dlls/webservices/proxy.c
index b0c09f5..1563ac9 100644
--- a/dlls/webservices/proxy.c
+++ b/dlls/webservices/proxy.c
@@ -122,6 +122,66 @@ HRESULT WINAPI WsCreateServiceProxy( const WS_CHANNEL_TYPE type, const WS_CHANNE
}
/**************************************************************************
+ * WsCreateServiceProxyFromTemplate [webservices.@]
+ */
+HRESULT WINAPI WsCreateServiceProxyFromTemplate( WS_CHANNEL_TYPE channel_type,
+ const WS_PROXY_PROPERTY *properties, const ULONG count,
+ WS_BINDING_TEMPLATE_TYPE type, void *value, ULONG size,
+ const void *desc, ULONG desc_size, WS_SERVICE_PROXY **handle,
+ WS_ERROR *error )
+{
+ const WS_CHANNEL_PROPERTY *channel_props = NULL;
+ ULONG channel_props_count = 0;
+ WS_CHANNEL_BINDING binding;
+ struct channel *channel;
+ HRESULT hr;
+
+ TRACE( "%u %p %u %u %p %u %p %u %p %p\n", channel_type, properties, count, type, value, size, desc,
+ desc_size, handle, error );
+ if (error) FIXME( "ignoring error parameter\n" );
+
+ if (!desc || !handle) return E_INVALIDARG;
+ FIXME( "ignoring description\n" );
+
+ switch (type)
+ {
+ case WS_HTTP_BINDING_TEMPLATE_TYPE:
+ {
+ WS_HTTP_BINDING_TEMPLATE *http = value;
+ if (http)
+ {
+ channel_props = http->channelProperties.properties;
+ channel_props_count = http->channelProperties.propertyCount;
+ }
+ binding = WS_HTTP_CHANNEL_BINDING;
+ break;
+ }
+ case WS_HTTP_SSL_BINDING_TEMPLATE_TYPE:
+ {
+ WS_HTTP_SSL_BINDING_TEMPLATE *https = value;
+ if (https)
+ {
+ channel_props = https->channelProperties.properties;
+ channel_props_count = https->channelProperties.propertyCount;
+ }
+ binding = WS_HTTP_CHANNEL_BINDING;
+ break;
+ }
+ default:
+ FIXME( "template type %u not implemented\n", type );
+ return E_NOTIMPL;
+ }
+
+ if ((hr = create_channel( type, binding, channel_props, channel_props_count, &channel )) != S_OK)
+ return hr;
+
+ if ((hr = create_proxy( channel, properties, count, handle )) != S_OK)
+ free_channel( channel );
+
+ return hr;
+}
+
+/**************************************************************************
* WsFreeServiceProxy [webservices.@]
*/
void WINAPI WsFreeServiceProxy( WS_SERVICE_PROXY *handle )
diff --git a/dlls/webservices/webservices.spec b/dlls/webservices/webservices.spec
index 81c7c87..b39f715 100644
--- a/dlls/webservices/webservices.spec
+++ b/dlls/webservices/webservices.spec
@@ -33,7 +33,7 @@
@ stub WsCreateServiceEndpointFromTemplate
@ stub WsCreateServiceHost
@ stdcall WsCreateServiceProxy(long long ptr ptr long ptr long ptr ptr)
-@ stub WsCreateServiceProxyFromTemplate
+@ stdcall WsCreateServiceProxyFromTemplate(long ptr long long ptr long ptr long ptr ptr)
@ stdcall WsCreateWriter(ptr long ptr ptr)
@ stdcall WsCreateXmlBuffer(ptr ptr long ptr ptr)
@ stub WsCreateXmlSecurityToken
--
2.8.0.rc3
More information about the wine-patches
mailing list