/*
* EasySoap++ - A C++ library for SOAP (Simple Object Access Protocol)
* Copyright (C) 2001 David Crowley; SciTegic, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#if !defined(AFX_USERLANDVALIDATORHANDLER_H__D2938615_0A93_4675_9446_13E981BEF182__INCLUDED_)
#define AFX_USERLANDVALIDATORHANDLER_H__D2938615_0A93_4675_9446_13E981BEF182__INCLUDED_
#include <easysoap/SOAP.h>
#include <easysoap/SOAPDispatchHandler.h>
USING_EASYSOAP_NAMESPACE
class UserlandValidatorHandler :
public SOAPDispatchHandler<UserlandValidatorHandler>
{
public:
UserlandValidatorHandler()
{
DispatchMethod("countTheEntities", &UserlandValidatorHandler::countTheEntities);
DispatchMethod("easyStructTest", &UserlandValidatorHandler::easyStructTest);
DispatchMethod("echoStructTest", &UserlandValidatorHandler::echoStructTest);
DispatchMethod("manyTypesTest", &UserlandValidatorHandler::manyTypesTest);
DispatchMethod("moderateSizeArrayCheck",&UserlandValidatorHandler::moderateSizeArrayCheck);
DispatchMethod("nestedStructTest", &UserlandValidatorHandler::nestedStructTest);
DispatchMethod("simpleStructReturnTest",&UserlandValidatorHandler::simpleStructReturnTest);
}
UserlandValidatorHandler* GetTarget(const SOAPEnvelope& request)
{
return this;
}
void countTheEntities(const SOAPMethod& req, SOAPMethod& resp);
void easyStructTest(const SOAPMethod& req, SOAPMethod& resp);
void echoStructTest(const SOAPMethod& req, SOAPMethod& resp);
void manyTypesTest(const SOAPMethod& req, SOAPMethod& resp);
void moderateSizeArrayCheck(const SOAPMethod& req, SOAPMethod& resp);
void nestedStructTest(const SOAPMethod& req, SOAPMethod& resp);
void simpleStructReturnTest(const SOAPMethod& req, SOAPMethod& resp);
// The first struct we have to handle
struct stooges
{
int larry;
int curly;
int moe;
};
// struct we use for the echoStructTest
// It's just a bunch of stooges
struct echostruct
{
stooges substruct0;
stooges substruct1;
stooges substruct2;
stooges substruct3;
stooges substruct4;
stooges substruct5;
stooges substruct6;
stooges substruct7;
stooges substruct8;
stooges substruct9;
};
};
// how we de-serialize the stooges struct
inline const SOAPParameter&
operator>>(const SOAPParameter& param, UserlandValidatorHandler::stooges& st)
{
param.GetParameter("larry") >> st.larry;
param.GetParameter("curly") >> st.curly;
param.GetParameter("moe") >> st.moe;
return param;
}
// how we serialize ths stooges struct;
inline SOAPParameter&
operator<<(SOAPParameter& param, const UserlandValidatorHandler::stooges& st)
{
param.AddParameter("larry") << st.larry;
param.AddParameter("curly") << st.curly;
param.AddParameter("moe") << st.moe;
param.SetIsStruct();
return param;
}
// how we de-serialze the echo struct.
// notice how easy it is with operator overloading :)
inline const SOAPParameter&
operator>>(const SOAPParameter& param, UserlandValidatorHandler::echostruct& st)
{
param.GetParameter("substruct0") >> st.substruct0;
param.GetParameter("substruct1") >> st.substruct1;
param.GetParameter("substruct2") >> st.substruct2;
param.GetParameter("substruct3") >> st.substruct3;
param.GetParameter("substruct4") >> st.substruct4;
param.GetParameter("substruct5") >> st.substruct5;
param.GetParameter("substruct6") >> st.substruct6;
param.GetParameter("substruct7") >> st.substruct7;
param.GetParameter("substruct8") >> st.substruct8;
param.GetParameter("substruct9") >> st.substruct9;
return param;
}
// and here we serialize it. It's so easy.
inline SOAPParameter&
operator<<(SOAPParameter& param, const UserlandValidatorHandler::echostruct& st)
{
param.AddParameter("substruct0") << st.substruct0;
param.AddParameter("substruct1") << st.substruct1;
param.AddParameter("substruct2") << st.substruct2;
param.AddParameter("substruct3") << st.substruct3;
param.AddParameter("substruct4") << st.substruct4;
param.AddParameter("substruct5") << st.substruct5;
param.AddParameter("substruct6") << st.substruct6;
param.AddParameter("substruct7") << st.substruct7;
param.AddParameter("substruct8") << st.substruct8;
param.AddParameter("substruct9") << st.substruct9;
param.SetIsStruct();
return param;
}
#endif // !defined(AFX_USERLANDVALIDATORHANDLER_H__D2938615_0A93_4675_9446_13E981BEF182__INCLUDED_)
syntax highlighted by Code2HTML, v. 0.9.1