00001
#ifndef XSOAP12Server_PROXY_H
00002
#define XSOAP12Server_PROXY_H
00003
00004
#include <map>
00005
#include <ostream>
00006
00007
#include <msl/Sptr.h>
00008
#include <msl/Mutex.h>
00009
00010
#include <wsit/ArgList.h>
00011
#include <wsit/Result.h>
00012
00013
#include <proteus/Invocation.h>
00014
#include <proteus/InvocationHandler.h>
00015
#include <proteus/VobjectFactory.h>
00016
00017
#include "HttpServiceHandler.hpp"
00018
#include "XSoap12RPCFault.hpp"
00019
#include "XSoap12Serializer.hpp"
00020
#include "XSoap12Deserializer.hpp"
00021
#include "XSoap12Proxy.hpp"
00022
00023
namespace xsoap {
00024
00026
00033 class XSoap12ServerProxy :
public XSoap12Proxy ,
00034
public HttpServiceHandler {
00035
00036
public:
00038 XSoap12ServerProxy(){}
00039
00040
public:
00041
00043
00050
void registerSkel(
const std::string& uniqueName,
00051 proteus::InvocationHandler* skel);
00052
00053
private:
00054
00055
XSoap12ServerProxy(
const XSoap12ServerProxy &);
00056
XSoap12ServerProxy &operator=(
const XSoap12ServerProxy&);
00057
00058
00059
private:
00060
00061
void handleMsg(
const std::string& msg,
HttpServerChannel& chan);
00062
00063
00064 proteus::Invocation unpackInvocation(
XSoap12Deserializer& unpacker);
00065
void packResult(
const string& name,
00066
const wsit::ValueResult_sptr &,
00067
XSoap12Serializer& packer);
00068
00069
00070
void packFault(
const XSoap12RPCFault &,
00071
XSoap12Serializer& packer);
00072
00073
00074 std::string soapFault2HttpStatus(
const std::string& soapFault);
00075
00076
00077
private:
00078
00079 std::map<std::string,proteus::InvocationHandler*> m_RMITable;
00080 };
00081
00082 }
00083
#endif
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095