[3/5] webservices: Implement WsWriteMessageStart.

Hans Leidekker hans at codeweavers.com
Tue Apr 25 04:31:28 CDT 2017


Signed-off-by: Hans Leidekker <hans at codeweavers.com>
---
 dlls/webservices/channel.c        | 32 ++++++++++++++++++++++++++++++++
 dlls/webservices/webservices.spec |  2 +-
 2 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/dlls/webservices/channel.c b/dlls/webservices/channel.c
index 0d8f78af96..bff9a4b15e 100644
--- a/dlls/webservices/channel.c
+++ b/dlls/webservices/channel.c
@@ -1107,6 +1107,38 @@ HRESULT WINAPI WsReadMessageEnd( WS_CHANNEL *handle, WS_MESSAGE *msg, const WS_A
     return hr;
 }
 
+/**************************************************************************
+ *          WsWriteMessageStart		[webservices.@]
+ */
+HRESULT WINAPI WsWriteMessageStart( WS_CHANNEL *handle, WS_MESSAGE *msg, const WS_ASYNC_CONTEXT *ctx,
+                                    WS_ERROR *error )
+{
+    struct channel *channel = (struct channel *)handle;
+    HRESULT hr;
+
+    TRACE( "%p %p %p %p\n", handle, msg, ctx, error );
+    if (error) FIXME( "ignoring error parameter\n" );
+    if (ctx) FIXME( "ignoring ctx parameter\n" );
+
+    if (!channel || !msg) return E_INVALIDARG;
+
+    EnterCriticalSection( &channel->cs );
+
+    if (channel->magic != CHANNEL_MAGIC)
+    {
+        LeaveCriticalSection( &channel->cs );
+        return E_INVALIDARG;
+    }
+
+    if ((hr = init_writer( channel )) != S_OK) goto done;
+    if ((hr = WsAddressMessage( msg, &channel->addr, NULL )) != S_OK) goto done;
+    hr = WsWriteEnvelopeStart( msg, channel->writer, NULL, NULL, NULL );
+
+done:
+    LeaveCriticalSection( &channel->cs );
+    return hr;
+}
+
 HRESULT channel_accept_tcp( SOCKET socket, WS_CHANNEL *handle )
 {
     struct channel *channel = (struct channel *)handle;
diff --git a/dlls/webservices/webservices.spec b/dlls/webservices/webservices.spec
index 5c9beba66d..204e3f209f 100644
--- a/dlls/webservices/webservices.spec
+++ b/dlls/webservices/webservices.spec
@@ -178,7 +178,7 @@
 @ stdcall WsWriteEnvelopeEnd(ptr ptr)
 @ stdcall WsWriteEnvelopeStart(ptr ptr ptr ptr ptr)
 @ stub WsWriteMessageEnd
-@ stub WsWriteMessageStart
+@ stdcall WsWriteMessageStart(ptr ptr ptr ptr)
 @ stdcall WsWriteNode(ptr ptr ptr)
 @ stub WsWriteQualifiedName
 @ stdcall WsWriteStartAttribute(ptr ptr ptr ptr long ptr)
-- 
2.11.0




More information about the wine-patches mailing list