⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.cpp

📁 Windows CE 6.0 Server 源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    HRESULT hr = S_OK;
    CClientFaultInfo *pFaultInfo;

#ifndef CE_NO_EXCEPTIONS
    try
#else
    __try
#endif 
    {
        if (!pbstrFaultstring)
            return E_INVALIDARG;
    
        *pbstrFaultstring = NULL;

        hr = RetrieveFaultInfo(&pFaultInfo);
        if (SUCCEEDED(hr))
        {
            if (pFaultInfo->HasFaultInfo())
            {
                *pbstrFaultstring = SysAllocString(pFaultInfo->getfaultstring());
                if (!(*pbstrFaultstring))
                    hr = E_OUTOFMEMORY;
            }
        }

        return hr;
    }        
#ifndef CE_NO_EXCEPTIONS
    catch (...)
#else
    __except(1)
#endif    
    {
        ASSERTTEXT (FALSE, "CSoapClient::get_faultstring - Unhandled Exception");
        return E_FAIL;
    }
}


////////////////////////////////////////////////////////////////////////////////////////////////////
//  function: HRESULT CSoapClient::get_faultactor(BSTR * pbstrActor)
//
//  parameters:
//
//  description:
//        Returns the faultactor value from SOAP fault message
//  returns:
//
////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT CSoapClient::get_faultactor(
                /* [out, retval] */ BSTR * pbstrActor)
{
    HRESULT hr = S_OK;
    CClientFaultInfo *pFaultInfo;

#ifndef CE_NO_EXCEPTIONS
    try
#else
    __try
#endif 
    {
        if (!pbstrActor)
            return E_INVALIDARG;
    
        *pbstrActor = NULL;

        hr = RetrieveFaultInfo(&pFaultInfo);
        if (SUCCEEDED(hr))
        {
            if (pFaultInfo->HasFaultInfo() && pFaultInfo->getfaultactor())
            {
                *pbstrActor = SysAllocString(pFaultInfo->getfaultactor());
                if (!(*pbstrActor))
                    hr = E_OUTOFMEMORY;
            }
        }
        return hr;
    }
#ifndef CE_NO_EXCEPTIONS
    catch (...)
#else
    __except(1)
#endif    
    {
        ASSERTTEXT (FALSE, "CSoapClient::get_faultstring - Unhandled Exception");
        return E_FAIL;
    }
}


////////////////////////////////////////////////////////////////////////////////////////////////////
//  function: HRESULT CSoapClient::get_detail(BSTR * pbstrDetail)
//
//  parameters:
//
//  description:
//        Returns the detail element from SOAP fault message
//  returns:
//
////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT CSoapClient::get_detail(
                /* [out, retval] */ BSTR * pbstrDetail)
{
    HRESULT hr = S_OK;
    CClientFaultInfo *pFaultInfo;

#ifndef CE_NO_EXCEPTIONS
    try
#else
    __try
#endif 
    {    
        if (!pbstrDetail)
            return E_INVALIDARG;

        *pbstrDetail = NULL;

        hr = RetrieveFaultInfo(&pFaultInfo);
        if (SUCCEEDED(hr))
        {
            if (pFaultInfo->HasFaultInfo() && pFaultInfo->getdetail())
            {
                *pbstrDetail = SysAllocString(pFaultInfo->getdetail());
                if (!(*pbstrDetail))
                    hr = E_OUTOFMEMORY;
            }
        }
        return hr;
    }
#ifndef CE_NO_EXCEPTIONS
    catch (...)
#else
    __except(1)
#endif    
    {
        ASSERTTEXT (FALSE, "CSoapClient::get_detail - Unhandled Exception");
        return E_FAIL;
    }
}



////////////////////////////////////////////////////////////////////////////////////////////////////
//  function: HRESULT CSoapClient::get_ConnectorProperty(BSTR PropertyName, VARIANT *pPropertyValue)
//
//  parameters:
//
//  description:
//        Returns the requested connection property
//  returns:
//
////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT CSoapClient::get_ConnectorProperty(
                    /* [in] */ BSTR PropertyName,
                    /* [out, retval] */ VARIANT *pPropertyValue)
{
    HRESULT hr = S_OK;
    CClientThreadStore *pStore;
    CClientFaultInfo   *pFaultInfo = NULL;
    CComPointer<ISoapConnector> pConnector;

#ifndef CE_NO_EXCEPTIONS
    try
#else
    __try
#endif 
    {
        VariantClear(pPropertyValue);

        CHK(RetrieveThreadStore(&pStore, true));
        pFaultInfo = pStore->getFaultInfo();
        if (!pFaultInfo)
            CHK(OLE_E_BLANK);

        // Clear previous faults/errors
        pFaultInfo->Reset();
        SetErrorInfo(0L, NULL);

        if (!m_bflInitSuccess)
        {
            pStore->getFaultInfo()->FaultMsgFromResourceHr(SOAP_IDS_CLIENT,
                SOAP_CLIENT_NOT_INITED, OLE_E_BLANK, NULL, NULL);
            CHK(OLE_E_BLANK);

        }

        CHK(RetrieveConnector(&pConnector));
        ASSERT(pConnector != 0);

        CHK(pConnector->get_Property(PropertyName, pPropertyValue));

        hr = S_OK;

    Cleanup:
        if (pConnector)
        {
            ReturnConnector(pConnector);
        }
        if (FAILED(hr) && pFaultInfo)
        {
            pFaultInfo->FaultMsgFromResourceHr(SOAP_IDS_CLIENT, 0, hr, NULL, NULL);
        }
        return hr;
    }
#ifndef CE_NO_EXCEPTIONS
    catch (...)
#else
    __except(1)
#endif    
    {
        ASSERTTEXT (FALSE, "CSoapClient::get_ConnectorProperty - Unhandled Exception");
        return E_FAIL;
    }
}



////////////////////////////////////////////////////////////////////////////////////////////////////
//  function: HRESULT CSoapClient::put_ConnectorProperty(BSTR PropertyName, VARIANT PropertyValue)
//
//  parameters:
//
//  description:
//        Sets the requested connection property
//  returns:
//
////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT CSoapClient::put_ConnectorProperty(
                        /* [in] */ BSTR PropertyName,
                        /* [in] */ VARIANT PropertyValue)
{
    HRESULT hr = S_OK;
    CClientThreadStore *pStore     = 0;
    CClientFaultInfo   *pFaultInfo = 0;
    CComPointer<ISoapConnector> pConnector;

#ifndef CE_NO_EXCEPTIONS
    try
#else
    __try
#endif 
    {
        CHK(RetrieveThreadStore(&pStore, true));
        pFaultInfo = pStore->getFaultInfo();
        if (!pFaultInfo)
            CHK(OLE_E_BLANK);

        // Clear previous faults/errors
        pFaultInfo->Reset();
        SetErrorInfo(0L, NULL);

        if (!m_bflInitSuccess)
        {
            pStore->getFaultInfo()->FaultMsgFromResourceHr(SOAP_IDS_CLIENT,
                SOAP_CLIENT_NOT_INITED, OLE_E_BLANK, NULL, NULL);
            CHK(OLE_E_BLANK);
        }

        CHK(RetrieveConnector(&pConnector));
        ASSERT(pConnector != 0);

        CHK(pConnector->put_Property(PropertyName, PropertyValue));
        CHK(StoreProperty(PropertyName, PropertyValue));

        hr = S_OK;

    Cleanup:
        if (pConnector)
        {
            ReturnConnector(pConnector);
        }
        if (FAILED(hr) && pFaultInfo)
        {
            globalAddError(HrToMsgId(hr), SOAP_IDS_CLIENT, hr);
            pFaultInfo->FaultMsgFromResourceHr(SOAP_IDS_CLIENT, 0, hr, NULL, NULL);
        }
        return hr;
    }        
#ifndef CE_NO_EXCEPTIONS
    catch (...)
#else
    __except(1)
#endif    
    {
        ASSERTTEXT (FALSE, "CSoapClient::put_ConnectorProperty - Unhandled Exception");
        return E_FAIL;
    }
}



////////////////////////////////////////////////////////////////////////////////////////////////////
//  function: HRESULT CSoapClient::get_ClientProperty(BSTR PropertyName, VARIANT *pPropertyValue)
//
//  parameters:
//
//  description:
//        Returns the requested client property
//  returns:
//
////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT CSoapClient::get_ClientProperty(
                    /* [in] */ BSTR PropertyName,
                    /* [out, retval] */ VARIANT *pPropertyValue)
{
    HRESULT hr = S_OK;
    CClientFaultInfo *pFaultInfo = NULL;

#ifndef CE_NO_EXCEPTIONS
    try
#else
    __try
#endif 
    {
        VariantClear(pPropertyValue);

        CHK(RetrieveFaultInfo(&pFaultInfo));
        CHK_BOOL( pFaultInfo, OLE_E_BLANK);

        // Clear previous faults/errors
        pFaultInfo->Reset();
        SetErrorInfo(0L, NULL);
#ifndef UNDER_CE
        if (wcscmp(PropertyName, _T("ServerHTTPRequest"))==0)
        {
            VariantInit(pPropertyValue);
            V_VT(pPropertyValue) = VT_BOOL;
            V_BOOL(pPropertyValue) = m_bUseServerHTTPRequest ?
                    VARIANT_TRUE : VARIANT_FALSE;

        }
        else if (wcscmp(PropertyName, g_pwstrConnectorProgID) == 0)
#else
        if (wcscmp(PropertyName, g_pwstrConnectorProgID) == 0)
#endif
        {
            VariantInit(pPropertyValue);
            V_VT(pPropertyValue) = VT_BSTR;
            V_BSTR(pPropertyValue) = ::SysAllocString(m_bstrCLSIDConnector);
         }
        else if (wcscmp(PropertyName, g_pwstrEncodingAttribute) == 0)
        {
            V_VT(pPropertyValue) = VT_BSTR;
            if (m_bstrpreferredEncoding.Len()>0)
            {
                V_BSTR(pPropertyValue) = ::SysAllocString(m_bstrpreferredEncoding);
            }
            else
            {
                V_BSTR(pPropertyValue) = ::SysAllocString(g_pwstrUTF8);
            }
            CHK_BOOL( V_BSTR(pPropertyValue), E_OUTOFMEMORY);
        }
        else
        {       // Unknown property

            pFaultInfo->FaultMsgFromResourceHr(SOAP_IDS_CLIENT,
                SOAP_UNKNOWN_PROPERTY, CLIENT_UNKNOWN_PROPERTY, NULL, NULL);
            CHK(CLIENT_UNKNOWN_PROPERTY);
        }

    Cleanup:
        if (FAILED(hr) && pFaultInfo)
        {
            globalAddError(HrToMsgId(hr), SOAP_IDS_CLIENT, hr);
            pFaultInfo->FaultMsgFromResourceHr(SOAP_IDS_CLIENT, 0, hr, NULL, NULL);
        }
        return hr;
    }        
#ifndef CE_NO_EXCEPTIONS
    catch (...)
#else
    __except(1)
#endif    
    {
        ASSERTTEXT (FALSE, "CSoapClient::get_ClientProperty - Unhandled Exception");
        return E_FAIL;
    }
}



////////////////////////////////////////////////////////////////////////////////////////////////////
//  function: HRESULT CSoapClient::put_ClientProperty(BSTR PropertyName, VARIANT PropertyValue)
//
//  parameters:
//
//  description:
//        Sets the requested client property
//  returns:
//
////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT CSoapClient::put_ClientProperty(
                        /* [in] */ BSTR PropertyName,
                        /* [in] */ VARIANT PropertyValue)
{
    HRESULT hr = E_INVALIDARG;
    CClientFaultInfo *pFaultInfo = NULL;

#ifndef CE_NO_EXCEPTIONS
    try
#else
    __try
#endif 
    {
        // Clear previous faults/errors
        CHK(RetrieveFaultInfo(&pFaultInfo));
        CHK_BOOL(pFaultInfo, OLE_E_BLANK);

        pFaultInfo->Reset();
        SetErrorInfo(0L, NULL);
        
#ifndef UNDER_CE
        if (wcscmp(PropertyName, _T("ServerHTTPRequest"))==0)
        {

            if (V_VT(&PropertyValue)==VT_BOOL)
            {
                m_bUseServerHTTPRequest = V_BOOL(&PropertyValue)==VARIANT_TRUE ? true : false;
            }
        }
        else if (wcscmp(PropertyName, g_pwstrConnectorProgID) == 0)
#else
        if (wcscmp(PropertyName, g_pwstrConnectorProgID) == 0)
#endif
        {
            if (V_VT(&PropertyValue) == VT_BSTR)
            {
                if (V_BSTR(&PropertyValue) == 0 || * V_BSTR(&PropertyValue) == L'\0' ||

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -