mmserv/sts/stsserver/src/stsserver.cpp
author hgs
Fri, 14 May 2010 18:19:45 -0500
changeset 20 b67dd1fc57c5
parent 19 4a629bc82c5e
child 43 9894ed580e4a
permissions -rw-r--r--
201019
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
 * All rights reserved.
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
 *
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
 * Initial Contributors:
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
 *
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
 * Contributors:
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
 *
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
 * Description:
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
 * This file is the implementation of the Symbian STS Server.  This
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
 * file handles the Symbian specific server creation/deletation
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
 * activities, and adding/removing sessions.  The actual STS
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
 * functionality is handled in the STS class.
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
 */
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#include "stsserver.h"
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include "stsserversession.h"
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include "sts.h"
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
// Total number of ranges
20
hgs
parents: 19
diff changeset
    26
const TUint KStsRangeCount = 3;
14
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
// Definition of the ranges of IPC numbers
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
const TInt KStsRanges[KStsRangeCount] =
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
    {
20
hgs
parents: 19
diff changeset
    31
    0, 2, KStsCmdLast + 1
14
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
    };
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
// Policy to implement for each of the above ranges        
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
const TUint8 KStsElementsIndex[KStsRangeCount] =
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
    {
20
hgs
parents: 19
diff changeset
    37
            CPolicyServer::EAlwaysPass,
hgs
parents: 19
diff changeset
    38
            CPolicyServer::ECustomCheck,
hgs
parents: 19
diff changeset
    39
            CPolicyServer::ENotSupported
14
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
    };
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    42
// Package all the above together into a policy
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
const CPolicyServer::TPolicy KStsPolicy =
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
    {
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
    CPolicyServer::EAlwaysPass, // specifies all connect attempts should pass
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
            KStsRangeCount, // number of ranges                                   
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
            KStsRanges, // ranges array
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    48
            KStsElementsIndex, // elements<->ranges index
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    49
            NULL
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    50
    };
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    51
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
// CStsServer IMPLEMENTATION
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
CStsServer* CStsServer::NewLC()
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    55
    {
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
    CStsServer* self = new (ELeave) CStsServer();
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
    CleanupStack::PushL(self);
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
    self->ConstructL();
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
    return self;
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    60
    }
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    61
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    62
CStsServer::CStsServer() :
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    63
    CPolicyServer(0, KStsPolicy, ESharableSessions), iSts(0)
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    64
    {
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    65
    }
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    66
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    67
void CStsServer::ConstructL()
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
    {
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
    StartL(KStsServerName);
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
    iSts = CSts::Create();
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
    if (iSts == 0)
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    72
        {
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    73
        User::Leave(KErrNoMemory);
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    74
        }
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    75
    }
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    76
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    77
CStsServer::~CStsServer()
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    78
    {
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
    iSessions.ResetAndDestroy();
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    80
    CSts::Delete(iSts);
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    81
    }
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
20
hgs
parents: 19
diff changeset
    83
// Performs security checks based on the tone or Alarm type.
hgs
parents: 19
diff changeset
    84
CPolicyServer::TCustomResult CStsServer::CustomSecurityCheckL(
hgs
parents: 19
diff changeset
    85
        const RMessage2& aMsg, TInt& /*aAction*/, TSecurityInfo& aMissing)
hgs
parents: 19
diff changeset
    86
    {
hgs
parents: 19
diff changeset
    87
    CPolicyServer::TCustomResult result;
hgs
parents: 19
diff changeset
    88
hgs
parents: 19
diff changeset
    89
    switch (aMsg.Function())
hgs
parents: 19
diff changeset
    90
        {
hgs
parents: 19
diff changeset
    91
        case StsMsg_PlayTone:
hgs
parents: 19
diff changeset
    92
            {
hgs
parents: 19
diff changeset
    93
            CSystemToneService::TToneType tone =
hgs
parents: 19
diff changeset
    94
                    (CSystemToneService::TToneType) aMsg.Int0();
hgs
parents: 19
diff changeset
    95
            result = SecurityCheckTone(tone, aMsg, aMissing);
hgs
parents: 19
diff changeset
    96
            }
hgs
parents: 19
diff changeset
    97
            break;
hgs
parents: 19
diff changeset
    98
        case StsMsg_PlayAlarm:
hgs
parents: 19
diff changeset
    99
            {
hgs
parents: 19
diff changeset
   100
            CSystemToneService::TAlarmType alarm =
hgs
parents: 19
diff changeset
   101
                    (CSystemToneService::TAlarmType) aMsg.Int0();
hgs
parents: 19
diff changeset
   102
            result = SecurityCheckAlarm(alarm, aMsg, aMissing);
hgs
parents: 19
diff changeset
   103
            }
hgs
parents: 19
diff changeset
   104
            break;
hgs
parents: 19
diff changeset
   105
        default:
hgs
parents: 19
diff changeset
   106
            result = CPolicyServer::EFail;
hgs
parents: 19
diff changeset
   107
        }
hgs
parents: 19
diff changeset
   108
hgs
parents: 19
diff changeset
   109
    return result;
hgs
parents: 19
diff changeset
   110
    }
hgs
parents: 19
diff changeset
   111
hgs
parents: 19
diff changeset
   112
CPolicyServer::TCustomResult CStsServer::SecurityCheckAlarm(
hgs
parents: 19
diff changeset
   113
        CSystemToneService::TAlarmType aAlarm, const RMessage2& /*aMsg*/,
hgs
parents: 19
diff changeset
   114
        TSecurityInfo& /*aMissing*/)
hgs
parents: 19
diff changeset
   115
    {
hgs
parents: 19
diff changeset
   116
    CPolicyServer::TCustomResult result;
hgs
parents: 19
diff changeset
   117
    switch(aAlarm)
hgs
parents: 19
diff changeset
   118
        {
hgs
parents: 19
diff changeset
   119
        default:
hgs
parents: 19
diff changeset
   120
            result = CPolicyServer::EPass;
hgs
parents: 19
diff changeset
   121
        }
hgs
parents: 19
diff changeset
   122
    return result;
hgs
parents: 19
diff changeset
   123
    }
hgs
parents: 19
diff changeset
   124
hgs
parents: 19
diff changeset
   125
CPolicyServer::TCustomResult CStsServer::SecurityCheckTone(
hgs
parents: 19
diff changeset
   126
        CSystemToneService::TToneType aTone, const RMessage2& /*aMsg*/,
hgs
parents: 19
diff changeset
   127
        TSecurityInfo& /*aMissing*/)
hgs
parents: 19
diff changeset
   128
    {
hgs
parents: 19
diff changeset
   129
    CPolicyServer::TCustomResult result;
hgs
parents: 19
diff changeset
   130
    switch(aTone)
hgs
parents: 19
diff changeset
   131
        {
hgs
parents: 19
diff changeset
   132
        default:
hgs
parents: 19
diff changeset
   133
            result = CPolicyServer::EPass;
hgs
parents: 19
diff changeset
   134
        }
hgs
parents: 19
diff changeset
   135
    return result;
hgs
parents: 19
diff changeset
   136
    }
hgs
parents: 19
diff changeset
   137
14
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   138
CSession2* CStsServer::NewSessionL(const TVersion& aVersion, const RMessage2& /*aMessage*/) const
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   139
    {
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   140
    if (aVersion.iMajor != KStsServerMajorVersion || aVersion.iMinor
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   141
            != KStsServerMinorVersion || aVersion.iBuild != KStsServerBuild)
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   142
        {
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   143
        User::Leave(KErrNotSupported);
19
hgs
parents: 14
diff changeset
   144
        }
hgs
parents: 14
diff changeset
   145
    else
hgs
parents: 14
diff changeset
   146
        {
hgs
parents: 14
diff changeset
   147
        //TODO: Add trace here
hgs
parents: 14
diff changeset
   148
        }// end if
14
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   149
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   150
    CStsServer& nonConstThis = *const_cast<CStsServer*> (this);
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   151
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   152
    // Construct a new session, passing it a pointer to the server object.  This function
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   153
    // is const, so the const-ness must be cast away from the this pointer.
19
hgs
parents: 14
diff changeset
   154
    CSession2* returnValue = new (ELeave) CStsServerSession(nonConstThis,
hgs
parents: 14
diff changeset
   155
            *iSts);
14
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   156
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   157
    return returnValue;
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   158
    }
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   159
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   160
void CStsServer::AddSession(CStsServerSession* aSession)
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   161
    {
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   162
    iSessions.Append(aSession);
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   163
    }
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   164
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   165
void CStsServer::DropSession(CStsServerSession* aSession)
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   166
    {
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   167
    // Find the current session in the list of sessions.
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   168
    TInt index = iSessions.Find(aSession);
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   169
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   170
    if (index != KErrNotFound)
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   171
        {
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   172
        // Remove the session from the list of sessions.
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   173
        iSessions.Remove(index);
19
hgs
parents: 14
diff changeset
   174
        }
hgs
parents: 14
diff changeset
   175
    else
hgs
parents: 14
diff changeset
   176
        {
hgs
parents: 14
diff changeset
   177
        //TODO: Add trace here
14
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   178
        } // end if
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   179
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   180
    if (iSessions.Count() == 0)
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   181
        {
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   182
        // No more clients. Shutdown the server.
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   183
        CActiveScheduler::Stop();
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   184
        }
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   185
    }
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   186
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   187
// SERVER LAUNCHING FUNCTIONALITY
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   188
19
hgs
parents: 14
diff changeset
   189
EXPORT_C void CStsServer::RunServerL()
14
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   190
    {
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
    // naming the server thread after the server helps to debug panics
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
    User::LeaveIfError(User::RenameThread(KStsServerName));
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   193
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
    // create and install the active scheduler
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   195
    CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   196
    CleanupStack::PushL(scheduler);
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   197
    CActiveScheduler::Install(scheduler);
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   198
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   199
    // create the server (leave it on the cleanup stack)
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   200
    CStsServer* server = CStsServer::NewLC();
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   201
19
hgs
parents: 14
diff changeset
   202
    // Initialisation complete, now signal the client.
hgs
parents: 14
diff changeset
   203
    RProcess::Rendezvous(KErrNone);
14
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   204
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   205
    // Ready to run
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   206
    // Start wait loop, will return when server is shutdown
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   207
    CActiveScheduler::Start();
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   208
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   209
    // Cleanup the server
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   210
    CleanupStack::PopAndDestroy(server);
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   211
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   212
    // Cleanup scheduler after shutdown
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   213
    CleanupStack::PopAndDestroy(scheduler);
80975da52420 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   214
    }