--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/smfservermodule/smfserver/transportmgr/smftransportmanagerutil.h Tue May 18 17:37:12 2010 +0530
@@ -0,0 +1,233 @@
+/**
+ * Copyright (c) 2010 Sasken Communication Technologies Ltd.
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html"
+ *
+ * Initial Contributors:
+ * Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
+ *
+ * Contributors:
+ * Manasij Roy, Nalina Hariharan
+ *
+ * Description:
+ * The Transport Manager Utility class provides the http/https transaction
+ * methods for the smf framework
+ *
+ */
+
+#ifndef SMFTRANSPORTMANAGERUTIL_H_
+#define SMFTRANSPORTMANAGERUTIL_H_
+
+#include <QNetworkReply>
+#include <smfglobal.h>
+#include <smfserverglobal.h>
+
+// Forward declaration
+class QNetworkAccessManager;
+class QSettings;
+
+/**
+ * The Transport Manager Utility class provides the http/https transaction
+ * methods for the smf framework
+ *
+ */
+class SmfTransportManagerUtil : public QObject
+ {
+ Q_OBJECT
+
+public:
+ /**
+ * Method to get the instance of SmfTransportManagerUtil class
+ * @return The instance of SmfTransportManagerUtil class
+ */
+ static SmfTransportManagerUtil* getInstance ( );
+
+ /**
+ * Destructor
+ */
+ ~SmfTransportManagerUtil ( );
+
+
+public:
+ /**
+ * Method that does a http GET request. Returns the unique QNetworkReply
+ * instance for this transaction to the plugin manager to trace the
+ * proper response.
+ * @param aRequest The request formed by the plugin
+ * @param aUrlList The list of accessible Urls for this plugin
+ * @param aSOPCompliant [out] Output parameter indicating Same Origin
+ * Policy Compliance. Contains true if the request complies to the policy,
+ * else false. If it is false, the network request will not performed
+ * @return The unique QNetworkReply instance for this transaction
+ */
+ QNetworkReply* get ( QNetworkRequest &aRequest,
+ const QList<QUrl> &aUrlList,
+ bool &aSOPCompliant );
+
+ /**
+ * Method that does a http POST request. Returns the unique QNetworkReply
+ * instance for this transaction to the plugin manager to trace the
+ * proper response.
+ * @param aRequest The request formed by the plugin
+ * @param aPostData The data to be posted via http POST request
+ * @param aUrlList The list of accessible Urls for this plugin
+ * @param aSOPCompliant [out] Output parameter indicating Same Origin
+ * Policy Compliance. Contains true if the request complies to the policy,
+ * else false. If it is false, the network request will not performed
+ * @return The unique QNetworkReply instance for this transaction
+ */
+ QNetworkReply* post ( QNetworkRequest &aRequest,
+ const QByteArray& aPostData,
+ const QList<QUrl> &aUrlList,
+ bool &aSOPCompliant );
+
+ /**
+ * Method that does a http HEAD request. Returns the unique QNetworkReply
+ * instance for this transaction to the plugin manager to trace the
+ * proper response.
+ * @param aRequest The request formed by the plugin
+ * @param aUrlList The list of accessible Urls for this plugin
+ * @param aSOPCompliant [out] Output parameter indicating Same Origin
+ * Policy Compliance. Contains true if the request complies to the policy,
+ * else false. If it is false, the network request will not performed
+ * @return The unique QNetworkReply instance for this transaction
+ */
+ QNetworkReply* head ( QNetworkRequest &aRequest,
+ const QList<QUrl> &aUrlList,
+ bool &aSOPCompliant );
+
+ /**
+ * Method that does a http PUT request. Returns the unique QNetworkReply
+ * instance for this transaction to the plugin manager to trace the
+ * proper response.
+ * @param aRequest The request formed by the plugin
+ * @param aPostData The data to be posted via http PUT request
+ * @param aUrlList The list of accessible Urls for this plugin
+ * @param aSOPCompliant [out] Output parameter indicating Same Origin
+ * Policy Compliance. Contains true if the request complies to the policy,
+ * else false. If it is false, the network request will not performed
+ * @return The unique QNetworkReply instance for this transaction
+ */
+ QNetworkReply* put ( QNetworkRequest &aRequest,
+ const QByteArray& aPostData,
+ const QList<QUrl> &aUrlList,
+ bool &aSOPCompliant );
+
+ /**
+ * Method that does a http DELETE request. Returns the unique QNetworkReply
+ * instance for this transaction to the plugin manager to trace the
+ * proper response.
+ * @param aRequest The request formed by the plugin
+ * @param aUrlList The list of accessible Urls for this plugin
+ * @param aSOPCompliant [out] Output parameter indicating Same Origin
+ * Policy Compliance. Contains true if the request complies to the policy,
+ * else false. If it is false, the network request will not performed
+ * @return The unique QNetworkReply instance for this transaction
+ */
+ QNetworkReply* deleteResource ( QNetworkRequest &aRequest,
+ const QList<QUrl> &aUrlList,
+ bool &aSOPCompliant );
+
+ /**
+ * Method that cancels the service request by cancelling the current
+ * http transaction.
+ * @param aCancelReply The QNetworkReply instance whose transaction
+ * has to be cancelled
+ * @return Returns true for success, else false
+ */
+ bool cancelRequest ( QNetworkReply *aCancelReply );
+
+public slots:
+ /*
+ * Method that is called whenever a new network configuration is added to the system.
+ * @param aResult SmfTransportResult
+ */
+ void configurationAdded ( const SmfTransportResult &aResult );
+
+ /*
+ * Method that is called when the state of the network configuration changes.
+ * @param aResult SmfTransportResult
+ */
+ void configurationChanged ( const SmfTransportResult &aResult );
+
+ /*
+ * Method that is called when a configuration is about to be removed from the system.
+ * The removed configuration is invalid but retains name and identifier.
+ * @param aResult SmfTransportResult
+ */
+ void configurationRemoved ( const SmfTransportResult &aResult );
+
+private slots:
+ /**
+ * Method to indicate http transaction has finished.
+ * @param aNetworkReply The QNetworkReply instance for which the http
+ * transaction was made
+ */
+ void networkReplyFinished ( QNetworkReply *aNetworkReply );
+
+ /**
+ * Method called when the QNetworkReply detects an error in processing.
+ * @param aError The QNetworkReply error code
+ */
+ void networkReplyError ( QNetworkReply::NetworkError aError );
+
+private:
+ /**
+ * Method to convert QNetworkReply Error to the type SmfTransportResult
+ * QNetworkRequest received before executing the web query.
+ * @param aError The QNetworkReply Error
+ * @param aResult [out] The SmfTransportResult error
+ */
+ void convertErrorType( const QNetworkReply::NetworkError &aError,
+ SmfTransportResult &aResult );
+
+ /**
+ * Method to deflate a gzipped network response. Once this method is called,
+ * QNetworkReply internal buffer for holding network response is emptied.
+ * @param aResponse The QByteArray instance holding the gzip encoded data
+ * @param aError Argument indicating error
+ * @return a QByteArray* containing the deflated data. If deflating fails,
+ * the encoded data itself without deflation is returned.
+ */
+ QByteArray* inflateResponse ( QByteArray &aResponse, int& aError );
+
+private:
+ /**
+ * Constructor with default argument
+ */
+ SmfTransportManagerUtil ( );
+
+ /**
+ * Copy Constructor
+ * @param aOther The reference object
+ */
+ SmfTransportManagerUtil ( const SmfTransportManagerUtil &aOther );
+
+private:
+ /**
+ * The single instance of SmfTransportManagerUtil
+ */
+ static SmfTransportManagerUtil* m_myInstance;
+
+ /**
+ * Member variable - QNetworkAccessManager instance
+ */
+ QNetworkAccessManager m_networkAccessManager;
+
+ /**
+ * Member variable - List of QNetworkReply awaiting response
+ */
+ QList<QNetworkReply *> m_activeNetwReplyList;
+
+ /**
+ * Member variable - instance of QSettings that stores network
+ * data usage of Smf
+ */
+ QSettings *m_settings;
+ };
+
+
+#endif /* SMFTRANSPORTMANAGERUTIL_H_ */