diff -r 6ca72c0fe49a -r a941bc465d9f inc/CPEngNWSessionSlotNotifier2.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/inc/CPEngNWSessionSlotNotifier2.h Wed Sep 01 12:31:13 2010 +0100 @@ -0,0 +1,238 @@ +/* +* Copyright (c) 2004 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: Notifier API to listen NWSessionSlot changes. +* +*/ + +#ifndef __CPENGNWSESSIONSLOTNOTIFIER2_H +#define __CPENGNWSESSIONSLOTNOTIFIER2_H + +// INCLUDES +#include +#include + + + +// FORWARD DECLARATIONS +class MPEngNWSessionSlotObserver2; +class CPEngNWSessionSlotNotifier2Imp; +class CPEngNWSessionSlotID2; + + + + +// CLASS DECLARATION +/** + * Notifier to receive notifications from + * NWSessionSlot events and state changes. + * + * Notifies from: + * - creation / removal of NWSessionSlots + * - individual NWSessionSlots events + * + * For full list of notified events, + * see TPEngNWSessionSlotEvent enumeration. + * + * @lib PEngManager2.lib + * @since 3.0 + */ +class CPEngNWSessionSlotNotifier2 : public CBase + { + + //----------------------------------------------------------------------- + public: /* Construction */ + + /** + * Instantiates NWSessionSlotNotifier object. + * + * Instantiates NWSessionSlotNotifier object and connects it to + * PresenceEngine subsystem. If needed PresenceEngine servers + * aren't yet running, starts those before returning. + * + * @param aPriority The priority for + * CPEngNWSessionSlotNotifier2 client side active objects. + * These active objects are used asynhronously deliver + * events to observers. + * + * @return New CPEngNWSessionSlotNotifier2 instance. + */ + IMPORT_C static CPEngNWSessionSlotNotifier2* NewL( + TInt aPriority = CActive::EPriorityStandard ); + + IMPORT_C static CPEngNWSessionSlotNotifier2* NewLC( + TInt aPriority = CActive::EPriorityStandard ); + + + /** + * Destructor. + * Virtual by CBase. + * + * Destruction + * - stops automaticly event notification + * - unregisters observers + */ + ~CPEngNWSessionSlotNotifier2(); + + + private: + + CPEngNWSessionSlotNotifier2(); + + + + //----------------------------------------------------------------------- + public: /* NWSessionSlot notifications */ + + + /** + * Starts delivering NWSessionSlot notifications. + * + * Reports either notifications from all NWSessionSlot + * events or only those events which match given criterias. + * + * Possible criterias are: + * - NWSessionSlotID: + * Reports only those events which NWSessionSlotID + * matches given criteria. Match pattern can be + * full NWSessionSlotID or wild one. + * + * - SlotEvent: + * Reports only those events which are requested. + * + * @param aMatchPattern The NWSessionSlotID match pattern to use. + * @param aEvents The events to deliver + * @return Result: + * - KErrNone if succesfully started + * - KErrArgument if empty criterias provided + * - KErrInUse if notifier already started + * - Else one of system wide error codes + */ + IMPORT_C TInt Start(); + IMPORT_C TInt Start( const CPEngNWSessionSlotID2& aMatchPattern ); + IMPORT_C TInt Start( const TArray& aEvents ); + + + /** + * Stops listening sessions slot changes. + */ + IMPORT_C void Stop(); + + + + /** + * Checks is the slot notifier started or not. + * + * @return ETrue if the slot notifier is already started. + * EFalse if the slot notifier isn't started. + */ + IMPORT_C TBool IsActive() const; + + + + + //----------------------------------------------------------------------- + public: /* NWSessionSlot notifications */ + + + /** + * Notifies synchronously registered observers + * from NWSessionSlot states. + * + * State notifications are delivered synchronously from all + * NWSessionSlots which NWSessionSlotID matches given criteria. + * Match string can be full NWSessionSlotID or wild one. + * If no matching NWSessionSlot found, returns KErrNotFound. + * + * Only NWSessionSlot state information is delivered. + * Dynamic event and data parts are delivered as empty. + * + * @param aMatchPattern The NWSessionSlotID match pattern to use. + * @return Result: + * - KErrNone if succesfully notified observers + * - KErrNotFound if no matching NWSessionSlot found + * - Else one of system wide error codes + */ + IMPORT_C TInt PushNWSessionSlotStateToObservers( + const CPEngNWSessionSlotID2& aMatchPattern ); + + + + /** + * Gets NWSessionSlots state. + * + * @since 3.0 + * @param aNWSessionSlotID The session slot ID to identify the + * session slot. + * @param aState Last state reported from NWSessionSlot. + * @return Result: + * - KErrNone if state succesfully get. + * - Else one of system wide error codes. + */ + IMPORT_C TInt GetNWSessionSlotState( + const CPEngNWSessionSlotID2& aNWSessionSlotID, + TPEngNWSessionSlotState& aState ) const; + + + + + + + //----------------------------------------------------------------------- + public: /* NWSessionSlot event observers */ + + + /** + * Registers event observer to be notified from slot changes. + * + * Registered event observers are notified from + * NWSessionSlot events as requested with StartL(). + * + * @param aObserver The observer to be notified. + * @return KErrNone is observer added succesfully. + * Else one of the system wide error codes. + */ + IMPORT_C TInt AddObserver( + MPEngNWSessionSlotObserver2& aObserver ); + + + + /** + * Unregisters session slot event observer. + * + * @param aObserver The observer to remove. + * @return KErrNone is observer removed succesfully. + * KErrNotFound if the observer wasn't registered. + */ + IMPORT_C TInt RemoveObserver( + MPEngNWSessionSlotObserver2& aObserver ); + + + + //----------------------------------------------------------------------- + private: /* Data */ + + + //OWN: Implementation + CPEngNWSessionSlotNotifier2Imp* iImp; + }; + + + +#endif //__CPENGNWSESSIONSLOTNOTIFIER2_H + +//End of file + + + +