satengine/satserver/Engine/src/csatbipconnectionobserver.cpp
author hgs
Mon, 04 Oct 2010 15:57:13 +0300
changeset 51 12bc758d6a02
parent 33 8d5d7fcf9b59
permissions -rw-r--r--
201039
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2007 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:  Observer of the GPRS connection status change
hgs
parents:
diff changeset
    15
*
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
// INCLUDE FILES
hgs
parents:
diff changeset
    21
#include <etelpckt.h>
hgs
parents:
diff changeset
    22
#include <pcktcs.h> // for EPacketNotifyStatusChange in DoCancel
hgs
parents:
diff changeset
    23
#include "csatbipconnectionobserver.h"
hgs
parents:
diff changeset
    24
#include "CSatBIPUtils.h"
hgs
parents:
diff changeset
    25
#include "SatLog.h"
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
// ============================ MEMBER FUNCTIONS ===============================
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    31
// CSatBIPConnectionObserver::CSatBIPConnectionObserver
hgs
parents:
diff changeset
    32
// C++ default constructor can NOT contain any code, that
hgs
parents:
diff changeset
    33
// might leave.
hgs
parents:
diff changeset
    34
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    35
//
hgs
parents:
diff changeset
    36
CSatBIPConnectionObserver::CSatBIPConnectionObserver(
hgs
parents:
diff changeset
    37
    CSatBIPUtils& aBipUtils ) :
hgs
parents:
diff changeset
    38
    CActive( EPriorityNormal ),
hgs
parents:
diff changeset
    39
    iBipUtils( aBipUtils )
hgs
parents:
diff changeset
    40
    {
hgs
parents:
diff changeset
    41
    LOG( NORMAL, "SATENGINE: CSatBIPConnectionObserver::\
hgs
parents:
diff changeset
    42
        CSatBIPConnectionObserver calling" )
hgs
parents:
diff changeset
    43
    CActiveScheduler::Add( this );
hgs
parents:
diff changeset
    44
    // Get current status
hgs
parents:
diff changeset
    45
    iBipUtils.PacketService().GetStatus( iConnectionStatus );
hgs
parents:
diff changeset
    46
    // Set last status
hgs
parents:
diff changeset
    47
    iPrevConnectionStatus = iConnectionStatus;
hgs
parents:
diff changeset
    48
    LOG2( NORMAL, "SATENGINE: CSatBIPConnectionObserver::\
hgs
parents:
diff changeset
    49
        CSatBIPConnectionObserver exiting: %i", iConnectionStatus )
hgs
parents:
diff changeset
    50
    }
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    53
// CSatBIPConnectionObserver::~CSatBIPConnectionObserver
hgs
parents:
diff changeset
    54
// Destructor
hgs
parents:
diff changeset
    55
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    56
//
hgs
parents:
diff changeset
    57
CSatBIPConnectionObserver::~CSatBIPConnectionObserver()
hgs
parents:
diff changeset
    58
    {
hgs
parents:
diff changeset
    59
    LOG( SIMPLE,
hgs
parents:
diff changeset
    60
        "SATENGINE: CSatBIPConnectionObserver::~CSatBIPConnectionObserver \
hgs
parents:
diff changeset
    61
        calling" )
hgs
parents:
diff changeset
    62
    Cancel();
hgs
parents:
diff changeset
    63
    LOG( SIMPLE,
hgs
parents:
diff changeset
    64
        "SATENGINE: CSatBIPConnectionObserver::~CSatBIPConnectionObserver \
hgs
parents:
diff changeset
    65
        exiting" )
hgs
parents:
diff changeset
    66
    }
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    69
// CSatBIPConnectionObserver::RunL
hgs
parents:
diff changeset
    70
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    71
//
hgs
parents:
diff changeset
    72
void CSatBIPConnectionObserver::RunL()
hgs
parents:
diff changeset
    73
    {
hgs
parents:
diff changeset
    74
    LOG( NORMAL, "SATENGINE: CSatBIPConnectionObserver::RunL calling" )
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
    const TInt errStatus( iStatus.Int() );
hgs
parents:
diff changeset
    77
    LOG2( SIMPLE, " RunL (%i)", errStatus )
hgs
parents:
diff changeset
    78
    LOG2( SIMPLE, " ConnStatus (%i)", iConnectionStatus )
hgs
parents:
diff changeset
    79
    if ( KErrNone == errStatus )
hgs
parents:
diff changeset
    80
        {
hgs
parents:
diff changeset
    81
        //if previous status is active packet data connection and
hgs
parents:
diff changeset
    82
        //current status is inactive packet data connection, drop links.
hgs
parents:
diff changeset
    83
        if( RPacketService::EStatusActive == iPrevConnectionStatus && 
hgs
parents:
diff changeset
    84
            ( RPacketService::EStatusAttached == iConnectionStatus || 
hgs
parents:
diff changeset
    85
            RPacketService::EStatusUnattached == iConnectionStatus ))
hgs
parents:
diff changeset
    86
            {
hgs
parents:
diff changeset
    87
            LOG( NORMAL, "CSatBIPConnectionObserver::RunL stop UDP link" )
hgs
parents:
diff changeset
    88
            iBipUtils.StopUdpLink();
hgs
parents:
diff changeset
    89
            }
hgs
parents:
diff changeset
    90
        
hgs
parents:
diff changeset
    91
        // Restart request
hgs
parents:
diff changeset
    92
        iPrevConnectionStatus = iConnectionStatus;
hgs
parents:
diff changeset
    93
        iBipUtils.PacketService().NotifyStatusChange( iStatus, iConnectionStatus );
hgs
parents:
diff changeset
    94
        SetActive();
hgs
parents:
diff changeset
    95
        }
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
    LOG( NORMAL, "SATENGINE: CSatBIPConnectionObserver::RunL exiting" )
hgs
parents:
diff changeset
    98
    }
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   101
// CSatBIPConnectionObserver::DoCancel
hgs
parents:
diff changeset
   102
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   103
//
hgs
parents:
diff changeset
   104
void CSatBIPConnectionObserver::DoCancel()
hgs
parents:
diff changeset
   105
    {
hgs
parents:
diff changeset
   106
    LOG( NORMAL, "SATENGINE: CSatBIPConnectionObserver::DoCancel calling" )
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
    iBipUtils.PacketService().CancelAsyncRequest( EPacketNotifyStatusChange );
hgs
parents:
diff changeset
   109
hgs
parents:
diff changeset
   110
    LOG( NORMAL, "SATENGINE: CSatBIPConnectionObserver::DoCancel exiting" )
hgs
parents:
diff changeset
   111
    }
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   114
// CSatBIPConnectionObserver::StartObserver
hgs
parents:
diff changeset
   115
// Starts to observe connection status
hgs
parents:
diff changeset
   116
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   117
//
hgs
parents:
diff changeset
   118
void CSatBIPConnectionObserver::StartObserver()
hgs
parents:
diff changeset
   119
    {
hgs
parents:
diff changeset
   120
    LOG( NORMAL, "SATENGINE: CSatBIPConnectionObserver::StartObserver calling" )
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
    if ( !IsActive() )
hgs
parents:
diff changeset
   123
        {
hgs
parents:
diff changeset
   124
        LOG( SIMPLE, "  Activating observer" )
hgs
parents:
diff changeset
   125
        iBipUtils.PacketService().NotifyStatusChange( iStatus, iConnectionStatus );
hgs
parents:
diff changeset
   126
        SetActive();
hgs
parents:
diff changeset
   127
        }
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
    LOG( NORMAL, "SATENGINE: CSatBIPConnectionObserver::StartObserver exiting" )
hgs
parents:
diff changeset
   130
    }
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   133
// CSatBIPConnectionObserver::Status
hgs
parents:
diff changeset
   134
// Returns current connection status
hgs
parents:
diff changeset
   135
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   136
//
hgs
parents:
diff changeset
   137
RPacketService::TStatus CSatBIPConnectionObserver::Status() const
hgs
parents:
diff changeset
   138
    {
hgs
parents:
diff changeset
   139
    LOG( NORMAL, "SATENGINE: CSatBIPConnectionObserver::Status \
hgs
parents:
diff changeset
   140
    calling-exiting" )
hgs
parents:
diff changeset
   141
    LOG2( NORMAL, " ConnectionStatus: %i", iConnectionStatus )
hgs
parents:
diff changeset
   142
    return iConnectionStatus;
hgs
parents:
diff changeset
   143
    }
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
// End of file