satengine/satserver/Engine/inc/TSatEventMediator.h
author hgs
Fri, 15 Oct 2010 13:21:28 +0300
changeset 53 25b8d29b7c59
parent 33 8d5d7fcf9b59
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  Provides way to notify events and register observers
hgs
parents:
diff changeset
    15
*                for events
hgs
parents:
diff changeset
    16
*
hgs
parents:
diff changeset
    17
*/
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#ifndef TSATEVENTMEDIATOR_H
hgs
parents:
diff changeset
    22
#define TSATEVENTMEDIATOR_H
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
//  INCLUDES
hgs
parents:
diff changeset
    25
#include <e32base.h>
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    28
class MSatEventObserver;
hgs
parents:
diff changeset
    29
class TSatEventsObserver;
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
// CLASS DECLARATION
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
/**
hgs
parents:
diff changeset
    34
*  Provides way to notify events and register observers for events.
hgs
parents:
diff changeset
    35
*  Observers are not owned by this class and therefore observers are
hgs
parents:
diff changeset
    36
*  not deleted when TSatEventMediator instance is destroyed.
hgs
parents:
diff changeset
    37
*
hgs
parents:
diff changeset
    38
*  @lib SatEngine.dll
hgs
parents:
diff changeset
    39
*  @since Series 60 3.0
hgs
parents:
diff changeset
    40
*/
hgs
parents:
diff changeset
    41
class TSatEventMediator
hgs
parents:
diff changeset
    42
    {
hgs
parents:
diff changeset
    43
    public:  // Constructors and destructor
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
        /**
hgs
parents:
diff changeset
    46
        * C++ default constructor.
hgs
parents:
diff changeset
    47
        */
hgs
parents:
diff changeset
    48
        TSatEventMediator();
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
    public: // New functions
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
        /**
hgs
parents:
diff changeset
    53
        * Notifies possible observers who are observing the event.
hgs
parents:
diff changeset
    54
        * @param aEvent Integer identifying the event.
hgs
parents:
diff changeset
    55
        * @return None
hgs
parents:
diff changeset
    56
        */
hgs
parents:
diff changeset
    57
        void Notify( TInt aEvent );
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
        /**
hgs
parents:
diff changeset
    60
        * Registers observer for event. Same observer will not be added
hgs
parents:
diff changeset
    61
        * more than once for one event.
hgs
parents:
diff changeset
    62
        * @param aObserver Pointer of observer instance. Panic will occur if
hgs
parents:
diff changeset
    63
        * aObserver is NULL.
hgs
parents:
diff changeset
    64
        * @param aEvent Event, which will cause the notification of observer.
hgs
parents:
diff changeset
    65
        * @return None
hgs
parents:
diff changeset
    66
        */
hgs
parents:
diff changeset
    67
        void RegisterL( MSatEventObserver* aObserver, TInt aEvent );
hgs
parents:
diff changeset
    68
hgs
parents:
diff changeset
    69
        /**
hgs
parents:
diff changeset
    70
        * Unregisters the notification of single event.
hgs
parents:
diff changeset
    71
        * @param aObserver Observer, whom event registeration will be
hgs
parents:
diff changeset
    72
        * unregistered.
hgs
parents:
diff changeset
    73
        * @param aEvent Event, which will be unregistered.
hgs
parents:
diff changeset
    74
        * @return None
hgs
parents:
diff changeset
    75
        */
hgs
parents:
diff changeset
    76
        void Unregister( const MSatEventObserver* aObserver, TInt aEvent );
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
        /**
hgs
parents:
diff changeset
    79
        * Unregisters the event observer.
hgs
parents:
diff changeset
    80
        * @param aObserver Observer, whom event registeration will be
hgs
parents:
diff changeset
    81
        * unregistered.
hgs
parents:
diff changeset
    82
        */
hgs
parents:
diff changeset
    83
        void Unregister( const MSatEventObserver* aObserver );
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
        /**
hgs
parents:
diff changeset
    86
        * Resets the list of event observers. Used instead of destructor
hgs
parents:
diff changeset
    87
        */
hgs
parents:
diff changeset
    88
        void Reset();
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
    private:  // New functions
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
        /**
hgs
parents:
diff changeset
    93
        * Checks if aObserver is already in the list of observers.
hgs
parents:
diff changeset
    94
        * @param aObserver Observer that is checked from the list.
hgs
parents:
diff changeset
    95
        * @return Pointer of the observer, where aObserver is registered.
hgs
parents:
diff changeset
    96
        * Contains NULL pointer if aObserver is not already registered.
hgs
parents:
diff changeset
    97
        */
hgs
parents:
diff changeset
    98
        TSatEventsObserver* HasObserverInstance(
hgs
parents:
diff changeset
    99
            const MSatEventObserver* aObserver ) const;
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
        /**
hgs
parents:
diff changeset
   102
        * Deletes all observers marked as deleted during notify loop
hgs
parents:
diff changeset
   103
        */
hgs
parents:
diff changeset
   104
        void DeleteMarkedObservers();
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
    private:
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
        // Prohibit copy constructor if not deriving from CBase.
hgs
parents:
diff changeset
   109
        TSatEventMediator( const TSatEventMediator& );
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
        // Prohibit assigment operator if not deriving from CBase.
hgs
parents:
diff changeset
   112
        TSatEventMediator& operator=( const TSatEventMediator& );
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
    private:    // Data
hgs
parents:
diff changeset
   115
hgs
parents:
diff changeset
   116
        // event observers.
hgs
parents:
diff changeset
   117
        RPointerArray<TSatEventsObserver> iEventsObservers;
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
        // Indicates are we notifying observers. If this flag is on,
hgs
parents:
diff changeset
   120
        // observers cannot be removed from iEventsObservers. After
hgs
parents:
diff changeset
   121
        // notify loop is done, observers can be replaced again
hgs
parents:
diff changeset
   122
        TBool iIsNotifying;
hgs
parents:
diff changeset
   123
hgs
parents:
diff changeset
   124
        // Indicates are there any observers marked as deleted during
hgs
parents:
diff changeset
   125
        // Notify loop
hgs
parents:
diff changeset
   126
        TBool iDeletionsMarked;
hgs
parents:
diff changeset
   127
    };
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
#endif      // TSATEVENTMEDIATOR_H
hgs
parents:
diff changeset
   130
hgs
parents:
diff changeset
   131
// End of File