diff -r 000000000000 -r 1bce908db942 multimediacommsengine/mmcefloorctrlengine/inc/fcpluginengine.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/mmcefloorctrlengine/inc/fcpluginengine.h Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,242 @@ +/* +* Copyright (c) 2005 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: +* +*/ + + + + +#ifndef CFCPLUGINENGINE_H +#define CFCPLUGINENGINE_H + +// INCLUDES +#include +#include "fcinterface.h" +#include +#include "fcmessageobserver.h" +#include "fcpluginstore.h" +#include "fcobserver.h" + +// FORWARD DECLARATIONS +class CFCPlugInInfo; +class TFCInterfaceInitParams; +class TFCPlugInIter; +class CFCSession; +class CSdpFmtAttributeField; +class CSdpDocument; + +// CLASS DECLARATION + +/** +* Class provides functions for using Floor Control Plugin +* @lib CFCPlugInEngine.lib +*/ +class CFCPlugInEngine : public CBase, + public MFCPlugInstore, public MFCMessageObserver + { + public: // Constructors and destructor + + /** + * Constructs an object; leaves on failure. + * @param aFCObserver an interface for requesting floor control events + * @return new instance + */ + IMPORT_C static CFCPlugInEngine* NewL(MFCObserver& aFCObserver); + + /** + * Constructs an object and adds the pointer to the cleanup stack; + * leaves on failure. + * @param aFCObserver an interface for requesting FC events + * @return new instance + */ + IMPORT_C static CFCPlugInEngine* NewLC( MFCObserver& aFCObserver); + + /** + * Destructor + */ + IMPORT_C ~CFCPlugInEngine(); + + /** + * Gets all supported Floor contrl PlugIn + * @return supported Floor control plugins names (e.g. TBCP); + * the ownership is transferred + */ + IMPORT_C CDesC8Array* SupportedProtocolL(); + + /** + * Gets the specific Floor contrl PlugIn + * @return specific Floor control plugins name (e.g. TBCP); + * the ownership is transferred + */ + IMPORT_C MFCPlugIn* PlugInByNameL(const TDesC8& aProtocolName) ; + + /** + * Gets the new FC session. + * @param aType, Plugin type + * @param aIapId, The IAP ID + * @param aPort, The port to be used- + * @return const CFCSession&, reference to FC session + * function will leave if there is no suitable plugIn + */ + IMPORT_C CFCSession& CreateNewSessionL(const TDesC8& aType, + TUint32 aIapId, + TUint32 aPort); + + + /** + * Updates the FC session local port. + * @param aSession, reference to FC session. + * @param aNewPort, the new port. + */ + IMPORT_C void SetSessionPortL( CFCSession& aFCSession, TUint32 aNewPort ); + + /** + * Updates the FC session local port and the receiving status. + * KFCDefaultPort means that the session will no be receiving. + * @param aSession, reference to FC session. + * @param aNewPort, the new port. + */ + IMPORT_C void UpdateSessionL( CFCSession& aFCSession, TUint32 aNewPort ); + + /** + * Releases the FC session. + * @param aSession, reference to FC session. + */ + IMPORT_C void ReleaseSession(const CFCSession& aSession); + + /** + * Gets the set of media format level attributes. + * @return RPointerArray&: The set of media + * format level attributes. + */ + IMPORT_C RPointerArray& + FormatAttributeFieldsL(const CFCSession& aSession); + + /** + * Sets media format level attributes. + * @param aAttributes, The set of media format level attributes. + */ + IMPORT_C void SetFormatAttributeFieldsL(const CFCSession& aSession, + RPointerArray* aAttributes); + + /** + * Reads remote parameters of FC from offer/answer document. + * @param aSession FC Session + * @param aSdpDocument SDP document containing offer/answer + */ + IMPORT_C void PeekDocumentL(const CFCSession& aSession, const CSdpDocument& aSdpDocument); + + /** + * Modifies local parameters of FC to offer document. + * Adds a media line or modifies existing one. + * @param aSession FC Session + * @param aSdpDocument SDP document containing offer. + */ + IMPORT_C void UpdateOfferL(const CFCSession& aSession, CSdpDocument& aSdpDocument); + + /** + * Modifies local parameters of FC to answer document. + * @param aSession FC Session + * @param aSdpDocument SDP document containing answer, updating the port and addr only + */ + IMPORT_C void UpdateAnswerL(const CFCSession& aSession, CSdpDocument& aSdpDocument); + + /** + * Session is ready to send, Socket is open, and start to listen + * @param aSession FC Session + */ + IMPORT_C void StartConnectionL( const CFCSession& aSession ); + + /** + * Send the Data to the predefined addresses + * @param aSession FC Session + * @param aData, sending via this plugIn + */ + IMPORT_C void SendToNetL( const CFCSession& aSession, + HBufC8* aData ); + + /** + * Returns truth value whether or not this the plugin is + * to be receive data in this sessions port. Leaves with + * KErrNotFound, if the session is not found. + * @param aSession FC Session + */ + IMPORT_C TBool IsReceiverL( const CFCSession& aSession ); + + /** + * Checks if the floor control paramaters have changed for + * the given session. Leaves with KErrNotFound, if the + * session is not found. + * @param aSession FC Session + */ + IMPORT_C TBool UpdateNeededL( const CFCSession& aSession ); + + + public: // From MFCMessageObserver + + /** + * Called by a FloorControl plugin + * @param aData, Receving Data + * @param aPlugIn, The plug-in + */ + void ReceivedData(HBufC8* aData, MFCPlugIn* aPlugIn ) ; + + /** + * Called by a FloorControl plugin + * @param aErrCode KErrNone if connection succesfully, otherwise + * one of the system-wide error codes. + * @param aPlugIn, The plug-in + */ + void ErrorNotify( TInt aErrCode, MFCPlugIn* aPlugIn ) ; + + public: + + /** + * Gets all PlugIn + * @return the iterator of plugin + */ + TFCPlugInIter& FCPlugInIter(); + + /** + * Load the plugin uses the pre-difined UID + */ + void ListMechanismImplementationsL(); + + + private: + // Constructor + CFCPlugInEngine(MFCObserver& aFCObserver); + + void ConstructL(); + + static void ArrayCleanup(TAny* aArray); + + CFCSession* FindFCSession( MFCPlugIn* aPlugIn ); + + private: + //data + MFCObserver& iFCObserver; + RPointerArray< CFCPlugInInfo > iFCPlugIns; + TFCPlugInIter iFCPlugInIter; + RPointerArray iFCSessions; + + private: // EUnit + friend class UT_CFCPlugInEngine; + + }; + +#endif // CFCPlugInEngine_H + +// End of File