| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 | /* *  ctkNetworkConnectorQtSoap.h *  ctkEventBus * *  Created by Daniele Giunchi on 14/07/10. *  Copyright 2010 B3C. All rights reserved. * *  See Licence at: http://tiny.cc/QXJ4D * */#ifndef CTKNETWORKCONNECTORQTSOAP_H#define CTKNETWORKCONNECTORQTSOAP_H// include list#include "ctkNetworkConnector.h"// Foundation Library include list#include <qtsoap.h>namespace ctkEventBus {/** Class name: ctkNetworkConnectorQtSoap This class is the implementation class for client/server objects that works over network with soap protocol. It has been implemented only client side. */class org_commontk_eventbus_EXPORT ctkNetworkConnectorQtSoap : public ctkNetworkConnector {    Q_OBJECTpublic:    /// object constructor.    ctkNetworkConnectorQtSoap();    /// object destructor.    /*virtual*/ ~ctkNetworkConnectorQtSoap();    /// create the unique instance of the client.    /*virtual*/ void createClient(const QString hostName, const unsigned int port);    /// set the url of the wsdl for querying the service.    void setWSDL(const QString wsdlUrl);    /// set the action for the http transport    void setAction(const QString action);    /// set the path, for example the end point or the wsdl    void setPath(const QString path);    /// register a further namespace which will be used in soap 1.1 for axis2 compatibility    void registerNamespace(QString prefix, QString namespaceURI);    /// create the unique instance of the server.    /*virtual*/ void createServer(const unsigned int port);    /// Start the server.    /*virtual*/ void startListen();    /// Allow to send a network request.    /** Need to convert the parameter list into another list of basic type to string which are used in QtSoap.*/    /*virtual*/ void send(const QString methodName, ctkEventArgumentsList *argList);    /// Marshalling of the datatypes    QtSoapType *marshall(const QString name, const QVariant ¶meter);    /// return the response retrieved from the service    QtSoapType *response();    /// register all the signalsand slots    /*virtual*/ void initializeForEventBus();    //retrieve an instance of the object    virtual ctkNetworkConnector *clone();Q_SIGNALS:    /// signal for the registration of the functions with parameters    void registerMethodsServer(mafRegisterMethodsMap registerMethodsList);public Q_SLOTS:    /// register methods on the server    void registerServerMethod(QString methodName, QList<QVariant::Type> types);private Q_SLOTS:    /// retrieve response from the service    void retrieveRemoteResponse();private:    /// stop and destroy the server instance.    void stopServer();    QtSoapHttpTransport *m_Http; ///< variable that represents the soap request from client to server    QtSoapMessage m_Request; ///< variable that represents the request    mafRegisterMethodsMap m_RegisterMethodsMap;    QString m_WSDLUrl; ///< represents the url of the wsdl    QString m_Action; ///< represents the action to put inside transport http    QString m_Path; ///< represents the path (for example the endpoint)    QtSoapType *m_Response;};/////////////////////////////////////////////////////////////// Inline methods/////////////////////////////////////////////////////////////inline void ctkNetworkConnectorQtSoap::setWSDL(const QString wsdlUrl) {    m_WSDLUrl = wsdlUrl;}inline void ctkNetworkConnectorQtSoap::setAction(const QString action) {    m_Action = action;}inline void ctkNetworkConnectorQtSoap::setPath(const QString path) {    m_Path = path;}inline QtSoapType *ctkNetworkConnectorQtSoap::response() {    return m_Response;}inline void ctkNetworkConnectorQtSoap::registerNamespace(QString prefix, QString namespaceURI) {    m_Request.useNamespace(prefix, namespaceURI);}} //namespace ctkEventBus#endif // CTKNETWORKCONNECTORQTSOAP_H
 |