Hans Leidekker : webservices: Implement WsGetListenerProperty and WsSetListenerProperty.

Alexandre Julliard julliard at winehq.org
Wed Apr 5 16:17:07 CDT 2017


Module: wine
Branch: master
Commit: 92fdb3ffb55fd408c5590b75b2f2c41d73a26dee
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=92fdb3ffb55fd408c5590b75b2f2c41d73a26dee

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Wed Apr  5 11:40:26 2017 +0200

webservices: Implement WsGetListenerProperty and WsSetListenerProperty.

Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/webservices/listener.c       | 75 +++++++++++++++++++++++++++++++++++++++
 dlls/webservices/webservices.spec |  4 +--
 2 files changed, 77 insertions(+), 2 deletions(-)

diff --git a/dlls/webservices/listener.c b/dlls/webservices/listener.c
index 205f7bc..4adddf4 100644
--- a/dlls/webservices/listener.c
+++ b/dlls/webservices/listener.c
@@ -172,3 +172,78 @@ void WINAPI WsFreeListener( WS_LISTENER *handle )
     LeaveCriticalSection( &listener->cs );
     free_listener( listener );
 }
+
+/**************************************************************************
+ *          WsGetListenerProperty		[webservices.@]
+ */
+HRESULT WINAPI WsGetListenerProperty( WS_LISTENER *handle, WS_LISTENER_PROPERTY_ID id, void *buf,
+                                      ULONG size, WS_ERROR *error )
+{
+    struct listener *listener = (struct listener *)handle;
+    HRESULT hr = S_OK;
+
+    TRACE( "%p %u %p %u %p\n", handle, id, buf, size, error );
+    if (error) FIXME( "ignoring error parameter\n" );
+
+    if (!listener) return E_INVALIDARG;
+
+    EnterCriticalSection( &listener->cs );
+
+    if (listener->magic != LISTENER_MAGIC)
+    {
+        LeaveCriticalSection( &listener->cs );
+        return E_INVALIDARG;
+    }
+
+    switch (id)
+    {
+    case WS_LISTENER_PROPERTY_STATE:
+        if (!buf || size != sizeof(listener->state)) hr = E_INVALIDARG;
+        else *(WS_LISTENER_STATE *)buf = listener->state;
+        break;
+
+    case WS_LISTENER_PROPERTY_CHANNEL_TYPE:
+        if (!buf || size != sizeof(listener->type)) hr = E_INVALIDARG;
+        else *(WS_CHANNEL_TYPE *)buf = listener->type;
+        break;
+
+    case WS_LISTENER_PROPERTY_CHANNEL_BINDING:
+        if (!buf || size != sizeof(listener->binding)) hr = E_INVALIDARG;
+        else *(WS_CHANNEL_BINDING *)buf = listener->binding;
+        break;
+
+    default:
+        hr = prop_get( listener->prop, listener->prop_count, id, buf, size );
+    }
+
+    LeaveCriticalSection( &listener->cs );
+    return hr;
+}
+
+/**************************************************************************
+ *          WsSetListenerProperty		[webservices.@]
+ */
+HRESULT WINAPI WsSetListenerProperty( WS_LISTENER *handle, WS_LISTENER_PROPERTY_ID id, const void *value,
+                                      ULONG size, WS_ERROR *error )
+{
+    struct listener *listener = (struct listener *)handle;
+    HRESULT hr;
+
+    TRACE( "%p %u %p %u\n", handle, id, value, size );
+    if (error) FIXME( "ignoring error parameter\n" );
+
+    if (!listener) return E_INVALIDARG;
+
+    EnterCriticalSection( &listener->cs );
+
+    if (listener->magic != LISTENER_MAGIC)
+    {
+        LeaveCriticalSection( &listener->cs );
+        return E_INVALIDARG;
+    }
+
+    hr = prop_set( listener->prop, listener->prop_count, id, value, size );
+
+    LeaveCriticalSection( &listener->cs );
+    return hr;
+}
diff --git a/dlls/webservices/webservices.spec b/dlls/webservices/webservices.spec
index 9f1fc3e..7e8dbee 100644
--- a/dlls/webservices/webservices.spec
+++ b/dlls/webservices/webservices.spec
@@ -69,7 +69,7 @@
 @ stub WsGetHeader
 @ stub WsGetHeaderAttributes
 @ stdcall WsGetHeapProperty(ptr long ptr long ptr)
-@ stub WsGetListenerProperty
+@ stdcall WsGetListenerProperty(ptr long ptr long ptr)
 @ stub WsGetMappedHeader
 @ stdcall WsGetMessageProperty(ptr long ptr long ptr)
 @ stub WsGetMetadataEndpoints
@@ -152,7 +152,7 @@
 @ stdcall WsSetHeader(ptr long long long ptr long ptr)
 @ stdcall WsSetInput(ptr ptr ptr ptr long ptr)
 @ stdcall WsSetInputToBuffer(ptr ptr ptr long ptr)
-@ stub WsSetListenerProperty
+@ stdcall WsSetListenerProperty(ptr long ptr long ptr)
 @ stdcall WsSetMessageProperty(ptr long ptr long ptr)
 @ stdcall WsSetOutput(ptr ptr ptr ptr long ptr)
 @ stdcall WsSetOutputToBuffer(ptr ptr ptr long ptr)




More information about the wine-cvs mailing list