Owen Rudge : wsdapi: Implement Get/SetRetransmitParams.

Alexandre Julliard julliard at winehq.org
Wed Jun 28 15:10:26 CDT 2017


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

Author: Owen Rudge <orudge at codeweavers.com>
Date:   Mon Jun 26 22:35:49 2017 +0100

wsdapi: Implement Get/SetRetransmitParams.

Signed-off-by: Owen Rudge <orudge at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wsdapi/msgparams.c       | 34 +++++++++++++++++++++++++++++----
 dlls/wsdapi/tests/msgparams.c | 44 +++++++++++++++++++++++--------------------
 2 files changed, 54 insertions(+), 24 deletions(-)

diff --git a/dlls/wsdapi/msgparams.c b/dlls/wsdapi/msgparams.c
index 6675fa5..e5ec8b1 100644
--- a/dlls/wsdapi/msgparams.c
+++ b/dlls/wsdapi/msgparams.c
@@ -38,6 +38,7 @@ typedef struct IWSDMessageParametersImpl {
 
 typedef struct IWSDUdpMessageParametersImpl {
     IWSDMessageParametersImpl base;
+    WSDUdpRetransmitParams    retransmitParams;
 } IWSDUdpMessageParametersImpl;
 
 static inline IWSDMessageParametersImpl *impl_from_IWSDMessageParameters(IWSDMessageParameters *iface)
@@ -248,14 +249,32 @@ static HRESULT WINAPI IWSDUdpMessageParametersImpl_GetLowerParameters(IWSDUdpMes
 
 static HRESULT WINAPI IWSDUdpMessageParametersImpl_SetRetransmitParams(IWSDUdpMessageParameters *This, const WSDUdpRetransmitParams *pParams)
 {
-    FIXME("(%p, %p)\n", This, pParams);
-    return E_NOTIMPL;
+    IWSDUdpMessageParametersImpl *impl = impl_from_IWSDUdpMessageParameters(This);
+
+    TRACE("(%p, %p)\n", impl, pParams);
+
+    if (pParams == NULL)
+    {
+        return E_INVALIDARG;
+    }
+
+    impl->retransmitParams = *pParams;
+    return S_OK;
 }
 
 static HRESULT WINAPI IWSDUdpMessageParametersImpl_GetRetransmitParams(IWSDUdpMessageParameters *This, WSDUdpRetransmitParams *pParams)
 {
-    FIXME("(%p, %p)\n", This, pParams);
-    return E_NOTIMPL;
+    IWSDUdpMessageParametersImpl *impl = impl_from_IWSDUdpMessageParameters(This);
+
+    TRACE("(%p, %p)\n", impl, pParams);
+
+    if (pParams == NULL)
+    {
+        return E_POINTER;
+    }
+
+    * pParams = impl->retransmitParams;
+    return S_OK;
 }
 
 static const IWSDUdpMessageParametersVtbl udpMsgParamsVtbl =
@@ -297,6 +316,13 @@ HRESULT WINAPI WSDCreateUdpMessageParameters(IWSDUdpMessageParameters **ppTxPara
     obj->base.IWSDMessageParameters_iface.lpVtbl = (IWSDMessageParametersVtbl *)&udpMsgParamsVtbl;
     obj->base.ref = 1;
 
+    /* Populate default retransmit parameters */
+    obj->retransmitParams.ulSendDelay = 0;
+    obj->retransmitParams.ulRepeat = 1;
+    obj->retransmitParams.ulRepeatMinDelay = 50;
+    obj->retransmitParams.ulRepeatMaxDelay = 250;
+    obj->retransmitParams.ulRepeatUpperDelay = 450;
+
     *ppTxParams = (IWSDUdpMessageParameters *)&obj->base.IWSDMessageParameters_iface;
     TRACE("Returning iface %p\n", *ppTxParams);
 
diff --git a/dlls/wsdapi/tests/msgparams.c b/dlls/wsdapi/tests/msgparams.c
index 55ca7f3..0621950 100644
--- a/dlls/wsdapi/tests/msgparams.c
+++ b/dlls/wsdapi/tests/msgparams.c
@@ -197,17 +197,17 @@ static void RetransmitParams_tests(void)
     ok(udpMessageParams != NULL, "WSDCreateUdpMessageParameters(NULL, &udpMessageParams) failed: udpMessageParams == NULL\n");
 
     rc = IWSDUdpMessageParameters_GetRetransmitParams(udpMessageParams, NULL);
-    todo_wine ok(rc == E_POINTER, "GetRetransmitParams returned unexpected result: %08x\n", rc);
+    ok(rc == E_POINTER, "GetRetransmitParams returned unexpected result: %08x\n", rc);
 
     /* Check if the default values are returned */
     rc = IWSDUdpMessageParameters_GetRetransmitParams(udpMessageParams, &returnedParams);
-    todo_wine ok(rc == S_OK, "GetRetransmitParams failed: %08x\n", rc);
+    ok(rc == S_OK, "GetRetransmitParams failed: %08x\n", rc);
 
     ok(returnedParams.ulSendDelay == 0, "ulSendDelay = %d\n", returnedParams.ulSendDelay);
-    todo_wine ok(returnedParams.ulRepeat == 1, "ulRepeat = %d\n", returnedParams.ulRepeat);
-    todo_wine ok(returnedParams.ulRepeatMinDelay == 50, "ulRepeatMinDelay = %d\n", returnedParams.ulRepeatMinDelay);
-    todo_wine ok(returnedParams.ulRepeatMaxDelay == 250, "ulRepeatMaxDelay = %d\n", returnedParams.ulRepeatMaxDelay);
-    todo_wine ok(returnedParams.ulRepeatUpperDelay == 450, "ulRepeatUpperDelay = %d\n", returnedParams.ulRepeatUpperDelay);
+    ok(returnedParams.ulRepeat == 1, "ulRepeat = %d\n", returnedParams.ulRepeat);
+    ok(returnedParams.ulRepeatMinDelay == 50, "ulRepeatMinDelay = %d\n", returnedParams.ulRepeatMinDelay);
+    ok(returnedParams.ulRepeatMaxDelay == 250, "ulRepeatMaxDelay = %d\n", returnedParams.ulRepeatMaxDelay);
+    ok(returnedParams.ulRepeatUpperDelay == 450, "ulRepeatUpperDelay = %d\n", returnedParams.ulRepeatUpperDelay);
 
     /* Now try setting some custom parameters */
     origParams.ulSendDelay = 100;
@@ -217,18 +217,22 @@ static void RetransmitParams_tests(void)
     origParams.ulRepeatUpperDelay = 500;
 
     rc = IWSDUdpMessageParameters_SetRetransmitParams(udpMessageParams, &origParams);
-    todo_wine ok(rc == S_OK, "SetRetransmitParams failed: %08x\n", rc);
+    ok(rc == S_OK, "SetRetransmitParams failed: %08x\n", rc);
 
     ZeroMemory(&returnedParams, sizeof(WSDUdpRetransmitParams));
 
     rc = IWSDUdpMessageParameters_GetRetransmitParams(udpMessageParams, &returnedParams);
-    todo_wine ok(rc == S_OK, "GetRetransmitParams failed: %08x\n", rc);
+    ok(rc == S_OK, "GetRetransmitParams failed: %08x\n", rc);
 
-    todo_wine ok(origParams.ulSendDelay == returnedParams.ulSendDelay, "ulSendDelay = %d\n", returnedParams.ulSendDelay);
-    todo_wine ok(origParams.ulRepeat == returnedParams.ulRepeat, "ulRepeat = %d\n", returnedParams.ulRepeat);
-    todo_wine ok(origParams.ulRepeatMinDelay == returnedParams.ulRepeatMinDelay, "ulRepeatMinDelay = %d\n", returnedParams.ulRepeatMinDelay);
-    todo_wine ok(origParams.ulRepeatMaxDelay == returnedParams.ulRepeatMaxDelay, "ulRepeatMaxDelay = %d\n", returnedParams.ulRepeatMaxDelay);
-    todo_wine ok(origParams.ulRepeatUpperDelay == returnedParams.ulRepeatUpperDelay, "ulRepeatUpperDelay = %d\n", returnedParams.ulRepeatUpperDelay);
+    ok(origParams.ulSendDelay == returnedParams.ulSendDelay, "ulSendDelay = %d\n", returnedParams.ulSendDelay);
+    ok(origParams.ulRepeat == returnedParams.ulRepeat, "ulRepeat = %d\n", returnedParams.ulRepeat);
+    ok(origParams.ulRepeatMinDelay == returnedParams.ulRepeatMinDelay, "ulRepeatMinDelay = %d\n", returnedParams.ulRepeatMinDelay);
+    ok(origParams.ulRepeatMaxDelay == returnedParams.ulRepeatMaxDelay, "ulRepeatMaxDelay = %d\n", returnedParams.ulRepeatMaxDelay);
+    ok(origParams.ulRepeatUpperDelay == returnedParams.ulRepeatUpperDelay, "ulRepeatUpperDelay = %d\n", returnedParams.ulRepeatUpperDelay);
+
+    /* Try setting a null parameter */
+    rc = IWSDUdpMessageParameters_SetRetransmitParams(udpMessageParams, NULL);
+    ok(rc == E_INVALIDARG, "SetRetransmitParams returned unexpected result: %08x\n", rc);
 
     /* Now attempt to set some invalid parameters - these appear to be accepted */
     origParams.ulSendDelay = INFINITE;
@@ -238,18 +242,18 @@ static void RetransmitParams_tests(void)
     origParams.ulRepeatUpperDelay = 100;
 
     rc = IWSDUdpMessageParameters_SetRetransmitParams(udpMessageParams, &origParams);
-    todo_wine ok(rc == S_OK, "SetRetransmitParams failed: %08x\n", rc);
+    ok(rc == S_OK, "SetRetransmitParams failed: %08x\n", rc);
 
     ZeroMemory(&returnedParams, sizeof(WSDUdpRetransmitParams));
 
     rc = IWSDUdpMessageParameters_GetRetransmitParams(udpMessageParams, &returnedParams);
-    todo_wine ok(rc == S_OK, "GetRetransmitParams failed: %08x\n", rc);
+    ok(rc == S_OK, "GetRetransmitParams failed: %08x\n", rc);
 
-    todo_wine ok(origParams.ulSendDelay == returnedParams.ulSendDelay, "ulSendDelay = %d\n", returnedParams.ulSendDelay);
-    todo_wine ok(origParams.ulRepeat == returnedParams.ulRepeat, "ulRepeat = %d\n", returnedParams.ulRepeat);
-    todo_wine ok(origParams.ulRepeatMinDelay == returnedParams.ulRepeatMinDelay, "ulRepeatMinDelay = %d\n", returnedParams.ulRepeatMinDelay);
-    todo_wine ok(origParams.ulRepeatMaxDelay == returnedParams.ulRepeatMaxDelay, "ulRepeatMaxDelay = %d\n", returnedParams.ulRepeatMaxDelay);
-    todo_wine ok(origParams.ulRepeatUpperDelay == returnedParams.ulRepeatUpperDelay, "ulRepeatUpperDelay = %d\n", returnedParams.ulRepeatUpperDelay);
+    ok(origParams.ulSendDelay == returnedParams.ulSendDelay, "ulSendDelay = %d\n", returnedParams.ulSendDelay);
+    ok(origParams.ulRepeat == returnedParams.ulRepeat, "ulRepeat = %d\n", returnedParams.ulRepeat);
+    ok(origParams.ulRepeatMinDelay == returnedParams.ulRepeatMinDelay, "ulRepeatMinDelay = %d\n", returnedParams.ulRepeatMinDelay);
+    ok(origParams.ulRepeatMaxDelay == returnedParams.ulRepeatMaxDelay, "ulRepeatMaxDelay = %d\n", returnedParams.ulRepeatMaxDelay);
+    ok(origParams.ulRepeatUpperDelay == returnedParams.ulRepeatUpperDelay, "ulRepeatUpperDelay = %d\n", returnedParams.ulRepeatUpperDelay);
 
     ret = IWSDUdpMessageParameters_Release(udpMessageParams);
     ok(ret == 0, "IWSDUdpMessageParameters_Release() has %d references, should have 0\n", ret);




More information about the wine-cvs mailing list