//
///////////////////////////////////////////////////////////////////////////////
//
// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY IT BY HAND.
//
///////////////////////////////////////////////////////////////////////////////
//
//
#include
//
//
#include "FileService.h"
//
//
#include "FileServiceTypes.h"
//
//
//
// Port type http://www.example.com/ncd/FileService/FileService
// Message type declarations
//
extern WSDXML_TYPE REQUESTTYPE_GetFileList;
extern WSDXML_TYPE RESPONSETYPE_GetFileList;
extern WSDXML_TYPE REQUESTTYPE_GetFile;
extern WSDXML_TYPE RESPONSETYPE_GetFile;
extern WSDXML_TYPE RESPONSETYPE_FileChangeEvent;
//
// Port type http://www.example.com/ncd/FileService/FileDevice
// Message type declarations
//
//
//
HRESULT CreateFileServiceHost(
LPCWSTR pszDeviceAddress,
const WSD_THIS_DEVICE_METADATA* pThisDeviceMetadata,
IFileService* pIFileService,
IWSDDeviceHost** ppHostOut,
IWSDXMLContext** ppContextOut)
{
HRESULT hr = S_OK;
IWSDXMLContext* pContext = NULL;
IWSDDeviceHost* pHost = NULL;
//
// Validate parameters
//
if( NULL == pszDeviceAddress )
{
return E_INVALIDARG;
}
if( NULL == pThisDeviceMetadata )
{
return E_INVALIDARG;
}
// pIFileService is optional
if( NULL == ppHostOut )
{
return E_POINTER;
}
// ppContextOut is optional
*ppHostOut = NULL;
if( NULL != ppContextOut )
{
*ppContextOut = NULL;
}
//
// Create XML context for namespace and type registration
//
hr = WSDXMLCreateContext(&pContext);
//
// Register types used by the service
//
if( S_OK == hr )
{
hr = FileServiceRegisterTypes(pContext);
}
//
// Register namespaces used by the service
//
if( S_OK == hr )
{
hr = FileServiceRegisterNamespaces(pContext);
}
//
// Create device host
//
if( S_OK == hr )
{
hr = WSDCreateDeviceHost(pszDeviceAddress, pContext, &pHost);
}
//
// Register port types
//
if( S_OK == hr )
{
hr = pHost->RegisterPortType(&PortType_FileService);
}
//
// Set metadata
//
if( S_OK == hr )
{
hr = pHost->SetMetadata(&thisModelMetadata, pThisDeviceMetadata, &hostMetadata, NULL);
}
//
// Register services and set discoverability
//
if( S_OK == hr && pIFileService != NULL )
{
hr = pHost->RegisterService(L"http://www.example.com/ncd/FileService/FileService0", pIFileService);
}
//
// Cleanup
//
if( S_OK == hr && ppContextOut )
{
*ppContextOut = pContext;
}
else
{
if( NULL != pContext )
{
pContext->Release();
}
}
if( S_OK == hr )
{
*ppHostOut = pHost;
}
else
{
if( NULL != pHost )
{
pHost->Release();
}
}
return hr;
}
//
//
HRESULT __stdcall
Stub_GetFileList
( IUnknown* server
, IWSDServiceMessaging* service
, WSD_EVENT* event
)
{
HRESULT hr = S_OK;
IFileService* pServer = NULL;
RESPONSEBODY_FileService_GetFileList result;
::ZeroMemory(&result,sizeof(result));
hr = server->QueryInterface( __uuidof(IFileService), (void**)&pServer );
if( S_OK == hr )
{
hr =
pServer->GetFileList
( &result.parameters
);
pServer->Release();
pServer = NULL;
}
if (SUCCEEDED(hr))
{
hr = service->SendResponse(&result,event->Operation,event->MessageParameters);
}
if (FAILED(hr))
{
hr = service->FaultRequest(&event->Soap->Header,event->MessageParameters, NULL);
}
// Clean up memory from outparams
if (NULL != result.parameters)
{
WSDFreeLinkedMemory( (void*) (result.parameters) );
}
return hr;
}
HRESULT __stdcall
Stub_GetFile
( IUnknown* server
, IWSDServiceMessaging* service
, WSD_EVENT* event
)
{
HRESULT hr = S_OK;
IFileService* pServer = NULL;
REQUESTBODY_FileService_GetFile* p = reinterpret_cast(event->Soap->Body);
RESPONSEBODY_FileService_GetFile result;
::ZeroMemory(&result,sizeof(result));
hr = server->QueryInterface( __uuidof(IFileService), (void**)&pServer );
if( S_OK == hr )
{
hr =
pServer->GetFile
( p->parameters
, &result.parameters
);
pServer->Release();
pServer = NULL;
}
if (SUCCEEDED(hr))
{
hr = service->SendResponse(&result,event->Operation,event->MessageParameters);
}
if (FAILED(hr))
{
hr = service->FaultRequest(&event->Soap->Header,event->MessageParameters, NULL);
}
// Clean up memory from outparams
if (NULL != result.parameters)
{
WSDFreeLinkedMemory( (void*) (result.parameters) );
}
return hr;
}
//
//
HRESULT __stdcall
Stub_FileChangeEvent
( IUnknown* server
, IWSDServiceMessaging* service
, WSD_EVENT* event
)
{
HRESULT hr = S_OK;
IFileServiceEventNotify* pServer = NULL;
RESPONSEBODY_FileService_FileChangeEvent* p = reinterpret_cast(event->Soap->Body);
hr = server->QueryInterface( __uuidof(IFileServiceEventNotify), (void**)&pServer );
if( S_OK == hr )
{
pServer->FileChangeEvent
( p->result
);
pServer->Release();
pServer = NULL;
}
return hr;
}
//