messagingappbase/msgerrorwatcher/src/MsgCenRepObserver.cpp
author hgs
Wed, 03 Nov 2010 09:52:46 +0530
changeset 79 2981cb3aa489
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
79
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2004 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:  
hgs
parents:
diff changeset
    15
*          CMsgCenRepObserver implementation file
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
// INCLUDE FILES
hgs
parents:
diff changeset
    22
//#include    <es_sock.h>
hgs
parents:
diff changeset
    23
#include <centralrepository.h>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include "MsgErrorWatcher.h"
hgs
parents:
diff changeset
    26
#include "MsgCenRepObserver.h"
hgs
parents:
diff changeset
    27
 
hgs
parents:
diff changeset
    28
#include "MmsEngineInternalCRKeys.h"
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
#ifdef USE_LOGGER
hgs
parents:
diff changeset
    31
#include "MsgErrorWatcherLogging.h"
hgs
parents:
diff changeset
    32
#endif
hgs
parents:
diff changeset
    33
// EXTERNAL DATA STRUCTURES
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
// EXTERNAL FUNCTION PROTOTYPES  
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
// CONSTANTS
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
// MACROS
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
// LOCAL CONSTANTS AND MACROS
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
// MODULE DATA STRUCTURES
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
// LOCAL FUNCTION PROTOTYPES
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
// ==================== LOCAL FUNCTIONS ====================
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
// ================= MEMBER FUNCTIONS =======================
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
// ---------------------------------------------------------
hgs
parents:
diff changeset
    52
// C++ constructor
hgs
parents:
diff changeset
    53
// ---------------------------------------------------------
hgs
parents:
diff changeset
    54
//
hgs
parents:
diff changeset
    55
CMsgCenRepObserver::CMsgCenRepObserver(CMsgErrorWatcher* aWatcher)
hgs
parents:
diff changeset
    56
    :CActive ( EPriorityStandard),
hgs
parents:
diff changeset
    57
    iWatcher( aWatcher ),
hgs
parents:
diff changeset
    58
    iRepositoryUid( KCRUidMmsEngine ),
hgs
parents:
diff changeset
    59
    iKey( KMmsAccesspointArrayBase/*KMmsEngineAccessPointCount*/ )
hgs
parents:
diff changeset
    60
    {
hgs
parents:
diff changeset
    61
    }
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
// ---------------------------------------------------------
hgs
parents:
diff changeset
    64
// ConstructL
hgs
parents:
diff changeset
    65
// ---------------------------------------------------------
hgs
parents:
diff changeset
    66
//
hgs
parents:
diff changeset
    67
void CMsgCenRepObserver::ConstructL()
hgs
parents:
diff changeset
    68
    {
hgs
parents:
diff changeset
    69
#ifdef USE_LOGGER
hgs
parents:
diff changeset
    70
        MEWLOGGER_WRITE( "CMsgCenRepObserver::ConstructL(" );
hgs
parents:
diff changeset
    71
#endif  
hgs
parents:
diff changeset
    72
hgs
parents:
diff changeset
    73
    // Connect CenRep
hgs
parents:
diff changeset
    74
    TRAPD( err, iRepository = CRepository::NewL( iRepositoryUid ) );
hgs
parents:
diff changeset
    75
    if( err != KErrNone )
hgs
parents:
diff changeset
    76
        {
hgs
parents:
diff changeset
    77
#ifdef USE_LOGGER
hgs
parents:
diff changeset
    78
        MEWLOGGER_WRITE( "Error in connecting to CenRep!" );
hgs
parents:
diff changeset
    79
#endif
hgs
parents:
diff changeset
    80
        return;
hgs
parents:
diff changeset
    81
        }
hgs
parents:
diff changeset
    82
    
hgs
parents:
diff changeset
    83
    CActiveScheduler::Add(this);
hgs
parents:
diff changeset
    84
        
hgs
parents:
diff changeset
    85
#ifdef USE_LOGGER
hgs
parents:
diff changeset
    86
        MEWLOGGER_WRITE( "Connected to CenRep CenRep!" );
hgs
parents:
diff changeset
    87
#endif    
hgs
parents:
diff changeset
    88
 
hgs
parents:
diff changeset
    89
    }
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
// ---------------------------------------------------------
hgs
parents:
diff changeset
    92
// Symbian two-phased constructor
hgs
parents:
diff changeset
    93
// ---------------------------------------------------------
hgs
parents:
diff changeset
    94
//
hgs
parents:
diff changeset
    95
CMsgCenRepObserver* CMsgCenRepObserver::NewL( CMsgErrorWatcher* aWatcher )
hgs
parents:
diff changeset
    96
    {
hgs
parents:
diff changeset
    97
    CMsgCenRepObserver* self = new ( ELeave ) CMsgCenRepObserver( aWatcher );
hgs
parents:
diff changeset
    98
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    99
    self->ConstructL();
hgs
parents:
diff changeset
   100
    CleanupStack::Pop( self );
hgs
parents:
diff changeset
   101
    return self;
hgs
parents:
diff changeset
   102
    }
hgs
parents:
diff changeset
   103
    
hgs
parents:
diff changeset
   104
// ---------------------------------------------------------
hgs
parents:
diff changeset
   105
// Destructor
hgs
parents:
diff changeset
   106
// ---------------------------------------------------------
hgs
parents:
diff changeset
   107
//
hgs
parents:
diff changeset
   108
CMsgCenRepObserver::~CMsgCenRepObserver()
hgs
parents:
diff changeset
   109
    {
hgs
parents:
diff changeset
   110
    Cancel();
hgs
parents:
diff changeset
   111
    if( iRepository )
hgs
parents:
diff changeset
   112
        {
hgs
parents:
diff changeset
   113
        delete iRepository;
hgs
parents:
diff changeset
   114
        }
hgs
parents:
diff changeset
   115
    
hgs
parents:
diff changeset
   116
#ifdef USE_LOGGER
hgs
parents:
diff changeset
   117
    MEWLOGGER_WRITE( "CenRepObserver destroyed!" );
hgs
parents:
diff changeset
   118
#endif
hgs
parents:
diff changeset
   119
    }
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
// ---------------------------------------------------------
hgs
parents:
diff changeset
   122
// SubscribeNotification
hgs
parents:
diff changeset
   123
// ---------------------------------------------------------
hgs
parents:
diff changeset
   124
//
hgs
parents:
diff changeset
   125
void CMsgCenRepObserver::SubscribeNotification( )
hgs
parents:
diff changeset
   126
    {
hgs
parents:
diff changeset
   127
 #ifdef USE_LOGGER
hgs
parents:
diff changeset
   128
    MEWLOGGER_WRITE( "CMsgCenRepObserver::SubscribeNotification" );
hgs
parents:
diff changeset
   129
#endif 
hgs
parents:
diff changeset
   130
    // Subscribe
hgs
parents:
diff changeset
   131
    if (iRepository)
hgs
parents:
diff changeset
   132
        {
hgs
parents:
diff changeset
   133
        TInt err = iRepository->NotifyRequest(iKey, iStatus);
hgs
parents:
diff changeset
   134
hgs
parents:
diff changeset
   135
        if (err == KErrNone)
hgs
parents:
diff changeset
   136
            {
hgs
parents:
diff changeset
   137
            SetActive();
hgs
parents:
diff changeset
   138
            }
hgs
parents:
diff changeset
   139
        }
hgs
parents:
diff changeset
   140
    }
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
// ---------------------------------------------------------
hgs
parents:
diff changeset
   143
// RunL
hgs
parents:
diff changeset
   144
// ---------------------------------------------------------
hgs
parents:
diff changeset
   145
//
hgs
parents:
diff changeset
   146
void CMsgCenRepObserver::RunL()
hgs
parents:
diff changeset
   147
    {
hgs
parents:
diff changeset
   148
 #ifdef USE_LOGGER
hgs
parents:
diff changeset
   149
    MEWLOGGER_WRITE( "CMsgCenRepObserver::RunL" );
hgs
parents:
diff changeset
   150
#endif 
hgs
parents:
diff changeset
   151
        
hgs
parents:
diff changeset
   152
    iWatcher -> HandleCenRepNotificationL();    
hgs
parents:
diff changeset
   153
    }
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
TInt CMsgCenRepObserver::RunError( TInt /*aError*/ )
hgs
parents:
diff changeset
   156
    {
hgs
parents:
diff changeset
   157
    //In case RunL leaves
hgs
parents:
diff changeset
   158
#ifdef USE_LOGGER
hgs
parents:
diff changeset
   159
    MEWLOGGER_WRITE( "CMsgCenRepObserver::RunError" );
hgs
parents:
diff changeset
   160
#endif 	
hgs
parents:
diff changeset
   161
	return KErrNone;	
hgs
parents:
diff changeset
   162
    }
hgs
parents:
diff changeset
   163
hgs
parents:
diff changeset
   164
// ---------------------------------------------------------
hgs
parents:
diff changeset
   165
// DoCancel
hgs
parents:
diff changeset
   166
// ---------------------------------------------------------
hgs
parents:
diff changeset
   167
//
hgs
parents:
diff changeset
   168
void CMsgCenRepObserver::DoCancel()
hgs
parents:
diff changeset
   169
    {
hgs
parents:
diff changeset
   170
 #ifdef USE_LOGGER
hgs
parents:
diff changeset
   171
    MEWLOGGER_WRITE( "CMsgCenRepObserver::DoCancel" );
hgs
parents:
diff changeset
   172
#endif 
hgs
parents:
diff changeset
   173
    iRepository->NotifyCancel( iKey );
hgs
parents:
diff changeset
   174
    }
hgs
parents:
diff changeset
   175
hgs
parents:
diff changeset
   176
// ================= OTHER EXPORTED FUNCTIONS ==============
hgs
parents:
diff changeset
   177
hgs
parents:
diff changeset
   178
//  End of File  
hgs
parents:
diff changeset
   179