diff -r 000000000000 -r e6b17d312c8b ximpfw/tsrc/tsrcprotocols/pr_prfwtestprotocol/pr_prfwtestprotocol.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ximpfw/tsrc/tsrcprotocols/pr_prfwtestprotocol/pr_prfwtestprotocol.h Thu Dec 17 08:54:49 2009 +0200 @@ -0,0 +1,403 @@ +/* +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "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: Test Protocol implementation for XIMP Framework + * +*/ + + +#ifndef T_PRFWTESTPROTOCOL_H +#define T_PRFWTESTPROTOCOL_H + + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "prfwwaitobserver.h" + +#include "prfwtestmessaging.h" + +class CXIMPTestGeneralWaiter; +class CXIMPTestMessenger; +class CPeriodic; +class CXIMPTestFileLogicHelper; +class CXIMPTestFileTool; +class MXIMPRestrictedObjectCollection; +class MProtocolImFeatures; +#define PRIMP_CLSID_CPRESENTITYGROUPINFOIMP 15000 + +class T_XIMPTestConnection :public CBase, + public MXIMPProtocolConnection, + public MProtocolPresenceFeatures, + public MProtocolPresencePublishing, + public MProtocolPresenceWatching, + public MProtocolPresenceAuthorization, + public MProtocolPresentityGroups, + public MXIMPProtocolConnectionHostObserver, + public T_MWaitObserver + + { + public: + /** The class ID. */ + enum { KClassId = PRIMP_CLSID_CPRESENTITYGROUPINFOIMP }; + + + class ClientWrapper : public CBase + { + private: + + void ConstructL( const TDesC& aClientId ); + + public: + + static ClientWrapper* NewLC( const TDesC& aClientId ); + void InitializeL( MXIMPProtocolConnectionHost& aConnectionHost ); + ~ClientWrapper(); + + public: + + RBuf iId; + CXIMPTestFileTool* iFileTool; + CXIMPTestMessenger* iMessenger; + CXIMPTestFileLogicHelper* iFileLogicHelper; + TInt iPluginIndex; + }; + + public: + + static T_XIMPTestConnection* NewL( const MXIMPServiceInfo& aServiceInfo, + const MXIMPContextClientInfo& aClientCtxInfo ); + static T_XIMPTestConnection* NewLC( const MXIMPServiceInfo& aServiceInfo, + const MXIMPContextClientInfo& aClientCtxInfo ); + + ~T_XIMPTestConnection(); + + + private: + + T_XIMPTestConnection(); + void ConstructL( const MXIMPServiceInfo& aServiceInfo, + const MXIMPContextClientInfo& aClientCtxInfo ); + + public: // From MXIMPProtocolConnection + + /** + * host for connection + */ + void PrimeHost( MXIMPProtocolConnectionHost& aHost ); + + void OpenSessionL( const MXIMPContextClientInfo& aClientCtxInfo, + TXIMPRequestId aReqId ); + + + void OpenSessionL( + const TInt& aSettingsId, + TXIMPRequestId aReqId ); + + void CloseSession( const MXIMPContextClientInfo& aClientCtxInfo, + TXIMPRequestId aReqId ); + + MProtocolPresenceFeatures& ProtocolPresenceFeatures(); + + //MProtocolImFeatures* ProtocolImFeatures(); + + TAny* GetProtocolInterface(TInt aInterfaceId); + + public: // MProtocolPresenceFeatures + MProtocolPresenceWatching& PresenceWatching(); + MProtocolPresencePublishing& PresencePublishing(); + MProtocolPresentityGroups& PresentityGroups(); + MProtocolPresenceAuthorization& PresenceAuthorization(); + + + public: // From MXIMPProtocolConnectionHostObserver + + void HandleProtocolConnectionHostEvent( + const MXIMPProtocolConnectionHost& aHost, + const MXIMPBase& aEvent ); + + + public: // from MPscPlugin + + + void GetSupportedFeaturesL( + CDesC8Array& aFeatures ) const; + + void DoPublishOwnPresenceL( + const MPresenceInfo& aPresence, + TXIMPRequestId aReqId ); + + void DoSubscribeOwnPresenceL( const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + + void DoUnsubscribeOwnPresenceL( TXIMPRequestId aReqId ); + + void DoUpdateOwnPresenceSubscriptionPifL( const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + + + void DoSubscribePresenceWatcherListL( TXIMPRequestId aReqId ); + void DoUnsubscribePresenceWatcherListL( TXIMPRequestId aReqId ); + + void DoSubscribePresentityGroupListL( TXIMPRequestId aReqId ); + void DoUnsubscribePresentityGroupListL( TXIMPRequestId aReqId ); + + void DoCreatePresentityGroupL( const MXIMPIdentity& aIdentity, + const TDesC16& aDisplayName, + TXIMPRequestId aReqId ); + void DoDeletePresentityGroupL( const MXIMPIdentity& aIdentity, + TXIMPRequestId aReqId ); + void DoUpdatePresentityGroupDisplayNameL( const MXIMPIdentity& aIdentity, + const TDesC16& aDisplayName, + TXIMPRequestId aReqId ); + void DoSubscribePresentityPresenceL( + const MXIMPIdentity& aIdentity, + const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + void DoUpdatePresentityPresenceSubscriptionPifL( + const MXIMPIdentity& aIdentity, + const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + void DoUnsubscribePresentityPresenceL( const MXIMPIdentity& aIdentity, + TXIMPRequestId aReqId ); + + void DoSubscribePresentityGroupContentL( const MXIMPIdentity& aGroupId, + TXIMPRequestId aReqId ); + + void DoUnsubscribePresentityGroupContentL( const MXIMPIdentity& aGroupId, + TXIMPRequestId aReqId ); + + void DoAddPresentityGroupMemberL( const MXIMPIdentity& aGroupId, + const MXIMPIdentity& aMemberId, + const TDesC16& aMemberDisplayName, + TXIMPRequestId aReqId ); + + void DoRemovePresentityGroupMemberL( const MXIMPIdentity& aGroupId, + const MXIMPIdentity& aMemberId, + TXIMPRequestId aReqId ); + + void DoUpdatePresentityGroupMemberDisplayNameL( const MXIMPIdentity& aGroupId, + const MXIMPIdentity& aMemberId, + const TDesC16& aMemberDisplayName, + TXIMPRequestId aReqId ); + void DoSubscribePresentityGroupMembersPresenceL( + const MXIMPIdentity& aIdentity, + const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + + void DoUpdatePresentityGroupMembersPresenceSubscriptionPifL( + const MXIMPIdentity& aIdentity, + const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + + void DoUnsubscribePresentityGroupMembersPresenceL( const MXIMPIdentity& aIdentity, + TXIMPRequestId aReqId ); + + void DoSubscribePresenceGrantRequestListL( TXIMPRequestId aReqId ); + + void DoUnsubscribePresenceGrantRequestListL( TXIMPRequestId aReqId ); + + void DoGrantPresenceForPresentityL( const MXIMPIdentity& aIdentity, + const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + void DoGrantPresenceForPresentityGroupMembersL( const MXIMPIdentity& aGroupId, + const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + + void DoGrantPresenceForEveryoneL( const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + + void DoUpdatePresenceGrantPifForPresentityL( const MXIMPIdentity& aIdentity, + const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + + void DoUpdatePresenceGrantPifForPresentityGroupMembersL( const MXIMPIdentity& aGroupId, + const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + + void DoUpdatePresenceGrantPifForEveryoneL( const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + + void DoWithdrawPresenceGrantFromPresentityL( const MXIMPIdentity& aIdentity, TXIMPRequestId aReqId ); + + void DoWithdrawPresenceGrantFromPresentityGroupMembersL( const MXIMPIdentity& aGroupId, + TXIMPRequestId aReqId ); + + void DoWithdrawPresenceGrantFromEveryoneL( TXIMPRequestId aReqId ); + + void DoSubscribePresenceBlockListL( TXIMPRequestId aReqId ); + void DoUnsubscribePresenceBlockListL( TXIMPRequestId aReqId ); + void DoBlockPresenceForPresentityL( const MXIMPIdentity& aPresentityId, + TXIMPRequestId aReqId ); + void DoCancelPresenceBlockFromPresentityL( const MXIMPIdentity& aPresentityId, + TXIMPRequestId aReqId ); + + public: // from T_MWaitObserver + + void WaitCompleted( TInt aRetVal ); + + + public: // from MXIMPBase + + TAny* GetInterface( + TInt32 aInterfaceId, + TIfGetOps aOptions ); + + const TAny* GetInterface( + TInt32 aInterfaceId, + TIfGetOps aOptions ) const; + + TInt32 GetInterfaceId() const; + + private: + /** + * All plugin API methods should call this method + * to handle test code to plugin communication + * properly. + * Add more common stuff here (such as new special messages + * which behave in a common way to all plugin API calls, etc.) + * @param aOpId The request id + */ + void PluginAPIMethodCommonL( TXIMPRequestId& aOpId ); + + /** + * Callback for aux timer + * @see TCallBack + */ + static TInt ReconnectSimulator( TAny* aMyself ); + + /** + * Actual callback called from ReconnectSimulator + */ + void DoReconnectSimulator(); + + /** + * Leaving version of aux timer callback. + */ + void DoReconnectSimulatorL(); + + void SetBooleanToCurrent( TXIMPTestPropertyKeys aKey ); + void SetBoolean( TXIMPTestPropertyKeys aKey ); + + public: + static TInt OrderOfConnections( const T_XIMPTestConnection& aFirst, + const T_XIMPTestConnection& aSecond ); + + private: + + static TInt OrderOfClients( const ClientWrapper& aFirst, + const ClientWrapper& aSecond ); + private: + + HBufC* iServerAddress; + HBufC* iUserName; + HBufC* iPassword; + HBufC* iClientId; + + //TInt iConnectedClients; + + RPointerArray< ClientWrapper > iClients; + ClientWrapper* iClientToBeDeleted; + + TXIMPRequestId iReqId; + CXIMPTestGeneralWaiter* iWaitter; + + MXIMPStatus* iStatus; + + // last received message + TXIMPTestMsg iLastMsg; + + // ETrue if reconnect is to be faked for session lost. + TBool iSessionLostReconnect; + + // ETrue if all reconnects are to be failed. + TBool iSessionLostFailReconnects; + + // auxiliary timer (session lost simulation) + CPeriodic* iAuxTimer; + + + /** + * File tool for monitoring events. + */ + //CXIMPTestFileTool* iFileTool; + + /** + * Host for connection + */ + MXIMPProtocolConnectionHost* iConnectionHost; + + CXIMPTestMessenger* iCurrentMessenger; + }; + +/** + * Example protocol plugin + * + * + * @lib ?library + * @since S60 v4.0 + */ +class T_XIMPTestProtocol : public CXIMPProtocolPluginBase + { + public: + + static T_XIMPTestProtocol* NewL(); + static T_XIMPTestProtocol* NewLC(); + + ~T_XIMPTestProtocol(); + + private: + + T_XIMPTestProtocol(); + void ConstructL(); + + public: // From MXIMPProtocolPlugin + + void PrimeHost( MXIMPProtocolPluginHost& aHost ); + + MXIMPProtocolConnection& AcquireConnectionL( + const MXIMPServiceInfo& aServiceInfo, + const MXIMPContextClientInfo& aClientCtxInfo ); + void ReleaseConnection( + MXIMPProtocolConnection& aConnection ); + + public: // from MXIMPBase + + TAny* GetInterface( + TInt32 aInterfaceId, + TIfGetOps aOptions ); + + const TAny* GetInterface( + TInt32 aInterfaceId, + TIfGetOps aOptions ) const; + + TInt32 GetInterfaceId() const; + + + private: // Data + + // Prime host + MXIMPProtocolPluginHost* iHost; + RXIMPObjOwningPtrArray< T_XIMPTestConnection > iConnections; + }; + +#endif // T_PRFWTESTPROTOCOL_H