diff -r 000000000000 -r dd21522fd290 web_plat/feeds_engine_api/inc/FeedsInterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web_plat/feeds_engine_api/inc/FeedsInterface.h Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,472 @@ +/* +* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: The client side connection to the FeedsSever. + * +*/ + + +#ifndef FEED_INTERFACE_H +#define FEED_INTERFACE_H + +// INCLUDES +#include +#include +#include +//#include "Transaction.h" +#include "FeedsEntity.h" +#include "FeedAttributes.h" +#include "FolderAttributes.h" +// CONSTANTS + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS +class CTransaction; + +// CLASS DECLARATION + +class MFeedsApiObserver + { +public: + /** + * This function is called by Ctransaction class whenever + * request is completed + * + * @param aTrans Pointer to current transaction class + * @param aEver event related to this call. + */ + virtual void RequestCompleted(CTransaction* aTrans, TInt aEvent) = 0; + + /** + * Request to create a network connection. + * + * @param aConnectionPtr A pointer to the new connection. If NULL, the + * proxy filter will automatically create a network connection. + * @param aSockSvrHandle A handle to the socket server. + * @param aNewConn A flag if a new connection was created. If the + * connection is not new, proxy filter optimization will not + * read the proxy again from CommsBd. + * @param aBearerType The bearer type of the new connection + * @return void + */ + virtual void + NetworkConnectionNeededL(TInt* aConnectionPtr, + TInt& aSockSvrHandle, TBool& aNewConn, + TApBearerType& aBearerType) = 0 ; + + }; + +/** + * The CTransaction observer interface. + * + */ +class MTransactionObserver + { +public: + // New Methods + /** + * Requests the observer to send a command to the server. + * + * @param aFunction The function number identifying the request. + * @param aArgs A set of up to 4 arguments and their types to be passed to the server. + * @param aStatus The request status object used to contain the completion status of the request. + * @return void. + */ + virtual void SendAsyncCommand(TInt aFunction, const TIpcArgs& aArgs, + TRequestStatus& aStatus) const = 0; + + /** + * Notifies the observer that the request is completed. + * + * @param aRequestHandler The request handler. + * @param aStatus The result code of the request. + * @return void. + */ + virtual void RequestHandlerCompleted(CTransaction& aRequestHandler, + TInt aStatus) = 0; + + /** + * Cancels all the commands + */ + virtual void CancelAllCommandsL() = 0; + + /** + * Request to create a network connection. + * + * @since 3.1 + * @param aConnectionPtr A pointer to the new connection. If NULL, the + * proxy filter will automatically create a network connection. + * @param aSockSvrHandle A handle to the socket server. + * @param aNewConn A flag if a new connection was created. If the + * connection is not new, proxy filter optimization will not + * read the proxy again from CommsBd. + * @param aBearerType The bearer type of the new connection + * @return void + */ + virtual void + NetworkConnectionNeededL(TInt* aConnectionPtr, + TInt& aSockSvrHandle, TBool& aNewConn, + TApBearerType& aBearerType) = 0; + }; + +struct TFeedsServerSetting + { + TBool iAutoUpdate; + TInt iAutoUpdateFreq; + TUint iAutoUpdateAP; + TBool iAutoUpdateWhileRoaming; + }; +/** + * The client side interface to the FeedsServer. + * + * \b Library: FeedsEngine.lib + * + */ + +class RFeedsInterface : public RSessionBase, public MTransactionObserver + { +public: + /** + * C++ default constructor. + */ + IMPORT_C RFeedsInterface(MFeedsApiObserver& aObserver, + TInt aFolderListId = 0); + +public: + // From RSessionBase + /** + * Connects to the server + * + * @return Error/success code + */ + IMPORT_C TInt Connect(); + + /** + * Closes the connection to the server + * + * @return Error/success code + */ + IMPORT_C void Close(); + + /** + * Returns the implementation's version. + * + * @return The version. + */ + IMPORT_C TVersion Version() const; + +public: // From MRequestHandlerObserver + /** + * Requests the observer to send a command to the server. + * + * @param aFunction The function number identifying the request. + * @param aArgs A set of up to 4 arguments and their types to be passed to the server. + * @param aStatus The request status object used to contain the completion status of the request. + * @return void. + */ + virtual void SendAsyncCommand(TInt aFunction, const TIpcArgs& aArgs, + TRequestStatus& aStatus) const; + + /** + * Notifies the observer that the request is completed. + * + * @param aRequestHandler The request handler. + * @param aStatus The result code of the request. + * @return void. + */ + virtual void RequestHandlerCompleted(CTransaction& aTransaction, + TInt aStatus); + + /** + * Request the FeedsServer to cancel all activities that can be cancelled. + */ + virtual void CancelAllCommandsL(); + +public: + /** + * Fetches Root folder (Asynchronous) Observer will be called when request completes + * + * @return TInt (KErrNone if successful). + */ + + IMPORT_C TInt GetRootFolderL(); + /** + * Add new Feed/Folder into feedserver (Sync) + * + * @param aType (EFolder/EFeed) + * @param aArgs Map cotaining various values + * @param aParent Under which folder this object should be added + * + * @return void. + */ + + IMPORT_C void AddL(TFeedsEntityType aType, const CFeedsMap& aArgs,const CFeedsEntity& aParent); + /** + * Deletes passed feeds/folders from list + * + * @param aFeedsEntities array of feedsentities to be deleted + * @return void. + */ + + IMPORT_C void DeleteL(const RPointerArray aFeedsEntities); + + /** + * Print tables of database. + * + * @return void + */ + IMPORT_C void RFeedsInterface::DebugPrintTablesL(); + + /** + * Disconnect connection provided by client for manual update. + * + * @return void + */ + IMPORT_C void RFeedsInterface::DisconnectManualUpdateConnectionL(); + + /** + * Fetches feed (async) + * + * @param aEntity Feed to be fetched. + * @param aForceUpdate If ETrue the feed is always updated before returning it. + * @param aNoCache If ETrue the feed isn't placed in database after updating. + * @return void. + */ + + IMPORT_C TInt FetchL(const CFeedsEntity& aEntity, TBool aForceUpdate, TBool aNoCache); + /** + * Fetches feed (async) + * + * @param aEntity Feed to be fetched. + * @param aForceUpdate If ETrue the feed is always updated before returning it. + * @param aNoCache If ETrue the feed isn't placed in database after updating. + * @return TInt. + */ + + IMPORT_C TInt FetchL(const TDesC& aUrl, TBool aForceUpdate, TBool aNoCache); + + /** + * Update Given list of folders(or All if only RootFolder is provided) + * + * @param aFeedsArray array of feeds to be updated + * @return void + */ + + IMPORT_C TInt UpdateL(const RPointerArray& aFeedsArray); + + // TInt Find(TFeedsEntityType aType + + /** + * Fetches settings from server. + * + * @param aFeedsSettings This Struct will contain settings if request is successful + * @return void + */ + + IMPORT_C TInt GetSettingsL(TFeedsServerSetting& aFeedsSetting, TBool aAsync = ETrue); + + /** + * Sets new setting. + * + * @param aFeedsSettings new settings. + * @return void + */ + + IMPORT_C void SetSettingsL(const TFeedsServerSetting& aFeedsSetting); + + /** + * Sets up a notifier to execute when the settings change. + * + * @return void. + */ + + IMPORT_C void RFeedsInterface::WatchSettingsL(); + + /** + * Export passed folder in OPML file + * + * @param aFeedsArray array of folder/feed to be exported + * @param aFileName name of opml file. + * @return void. + */ + + IMPORT_C void ExportFoldersL(const RPointerArray& aFeedsArray,const TDesC& aFileName); + /** + * Imports OPML file + * + * @param aFileName name of OPML file to be imported + * @return void. + */ + + IMPORT_C void ImportOPMLL(const TDesC& aFileName); + /** + * Cancels all pending requests + * + * @return void. + */ + + IMPORT_C void CancelAllL(); + /** + * Moves list of folders/feeds to diff folder. + * + * @param aSourceFolders array of folder/feeds to be moved + * @param aDestinationFolder + * @return void. + */ + + IMPORT_C void MoveToFolderL(const RPointerArray& aSourceFolders,const CFeedsEntity& aDestinationFolder); + /** + * Changes index of folders. + * + * @param aFolderItems array of folderitem whose index are to be changed + * @param aIndex new index + * @return void + */ + + IMPORT_C void MoveL(const RPointerArray& aFolderItems,TInt aIndex); + + /** + * Sets attribute (Changes will be sent to feedserver) + * + * @param aFeedEntity Feed/Folder/Item whose attributes are to be changed + * @param aNewValues map containing new attribute values. + * @return void. + */ + + IMPORT_C TInt SetAttributeL(const CFeedsEntity& aFeedEntity, const CFeedsMap& aNewValues); + /** + * Returns Root folder + * + * @return pointer to CFeedsEntity (rootfolder) + */ + + IMPORT_C CFeedsEntity* RootFolder(); + /** + * Fetches currently fetched feed + * + * @return pointer to CFeedsEntity (current feed) + */ + + IMPORT_C CFeedsEntity* Feed(); + /** + * Sets notifier for folder list changes + * + * @return void + */ + + IMPORT_C void WatchFolderListL(); + /** + * Uses aFeed attribute to change correponding feed attributes in aRootFolder tree + * + * @return TInt (KErrNone if successful). + */ + TBool UpdateFeed(CFeedsEntity* aRootFolder,CFeedsEntity* aFeed); + + /** + * Searches CFeedsEntity pertaining to aFeedId + * + * @param aFeedId (feed id to be searched) + * @param aSearch folder/feed under which search will be performed. + * @return TInt (KErrNone if successful). + */ + + IMPORT_C CFeedsEntity* SearchFeed(TInt aFeedId,CFeedsEntity* aSearch); + + /** + * Request the feeds server to update the feed's item status. + * + * @since 7.1 + * @param aItemIds The id's of the items to update. + * @param aItemStatus The new item status. + * @return void + */ + IMPORT_C void UpdateFeedItemStatusL(const RArray& aItemIds, + const RArray& aItemStatus, TInt aUnreadCount); + + /** + * return currently fetched settings. + * + * @since 7.1 + * @return TFeedsServerSetting. + */ + IMPORT_C TFeedsServerSetting Settings(); + +public: + /** + * Request to create a network connection. + * + * @param aConnectionPtr A pointer to the new connection. If NULL, the + * proxy filter will automatically create a network connection. + * @param aSockSvrHandle A handle to the socket server. + * @param aNewConn A flag if a new connection was created. If the + * connection is not new, proxy filter optimization will not + * read the proxy again from CommsBd. + * @param aBearerType The bearer type of the new connection + * @return void + */ + void NetworkConnectionNeededL( TInt* aConnectionPtr, TInt& aSockSvrHandle, + TBool& aNewConn, TApBearerType& aBearerType ); + + /** + * Calls synchronous SendReceive on current session + * + * @param aFunction The function number identifying the request. + * @param aArgs A set of up to 4 arguments and their types to be passed to the server. + * @return void. + */ + TInt SendReceiveSync(TInt aFunction, const TIpcArgs& aArgs) const; + +private: + /** + * Gets unique transaction (Factory function) + * + * @return new CTransaction + */ + + CTransaction* GetTransactionL(); + /** + * Create the server thread/process + * + * @since 3.1 + * @return An error code. + */ + TInt StartServer(); + +private: + MFeedsApiObserver& iObserver; + + CFeedsEntity* iRootFolder; + CFeedsEntity* iCurrentFeed; + + RPointerArray iActiveTransaction; + TInt iFolderListId; + TInt iIsConnected; + TFeedsServerSetting iSetting; + +private: + //Used for creating connection + TBool iConnectionReady; + TInt iConnectionPtr; + TInt iSockSvrHandle; + TBool iNewConn; + TApBearerType iBearerType; + + }; + +#endif // FEED_INTERFACE_H +// End of File \ No newline at end of file