00001
00002
00003
00004 #ifndef XMLRPC_SERVER_H
00005 #define XMLRPC_SERVER_H
00006
00007 #include <QTcpServer>
00008 #include <QPointer>
00009
00010 #include "variant.h"
00011
00012 namespace xmlrpc {
00013 class IncomingConnection;
00018 class Server : public QObject {
00019 friend class IncomingConnection;
00020 Q_OBJECT
00021 public:
00022 Server( QObject * parent = 0 );
00023 virtual ~Server();
00024
00025 bool listen ( quint16 port, const QHostAddress & address = QHostAddress::Any );
00026 bool isListening() const;
00027
00028 void registerMethod( QString methodName, QVariant::Type returnType,
00029 QList<QVariant::Type> parameterTypes );
00030
00031 void registerMethod( QString methodName, QVariant::Type returnType );
00032 void registerMethod( QString methodName, QVariant::Type returnType,
00033 QVariant::Type parameter1Type );
00034 void registerMethod( QString methodName, QVariant::Type returnType,
00035 QVariant::Type parameter1Type, QVariant::Type parameter2Type );
00036 void registerMethod( QString methodName, QVariant::Type returnType,
00037 QVariant::Type parameter1Type, QVariant::Type parameter2Type, QVariant::Type parameter3Type );
00038 void registerMethod( QString methodName, QVariant::Type returnType,
00039 QVariant::Type parameter1Type, QVariant::Type parameter2Type, QVariant::Type parameter3Type, QVariant::Type parameter4Type );
00040
00041 signals:
00042 void incomingRequest( int requestId, QString methodName, QList<xmlrpc::Variant> parameters );
00043
00044 public slots:
00045 void sendReturnValue( int requestId, const xmlrpc::Variant& value );
00046 void sendFault( int requestId, int faultCode, QString faultMessage );
00047
00048
00049 protected slots:
00050 void newConnection();
00051 void processRequest( QByteArray data, QTcpSocket *socket );
00052
00053 private:
00054 class Private;
00055 Private *d;
00056 };
00057
00058 }
00059
00060 #endif // XMLRPC_SERVER_H
00061
00062