bearermanagement/mpm/src/rmpm.cpp
changeset 73 70ee5458c95d
parent 18 fcbbe021d614
equal deleted inserted replaced
72:0c32cf868819 73:70ee5458c95d
     1 /*
     1 /*
     2 * Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
     2 * Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    13 *
    13 *
    14 * Description: MPM server client interface
    14 * Description: MPM server client interface
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 
       
    19 /**
    18 /**
    20 @file rmpm.cpp
    19 @file rmpm.cpp
    21 Mobility Policy Manager server client interface.
    20 Mobility Policy Manager server client interface.
    22 */
    21 */
    23 
    22 
    24 // INCLUDE FILES
       
    25 #include "rmpm.h"
    23 #include "rmpm.h"
    26 #include "mpmcommon.h"
    24 #include "mpmcommon.h"
    27 #include "mpmlauncher.h"
    25 #include "mpmlauncher.h"
    28 #include "mpmlogger.h"
    26 #include "mpmlogger.h"
    29 
    27 
    30 // ============================= LOCAL FUNCTIONS ===============================
    28 
    31 
    29 // -----------------------------------------------------------------------------
    32 // -----------------------------------------------------------------------------
    30 // Panic
    33 // Panic 
       
    34 // Panics the client in case of programming error.
    31 // Panics the client in case of programming error.
    35 // -----------------------------------------------------------------------------
    32 // -----------------------------------------------------------------------------
    36 //
    33 //
    37 void Panic( TInt aPanic )
    34 void Panic( TInt aPanic )
    38     {
    35     {
    39     User::Panic( KPanicCategory, aPanic );
    36     User::Panic( KPanicCategory, aPanic );
    40     }
    37     }
    41 
    38 
    42 
       
    43 // ============================ MEMBER FUNCTIONS ===============================
       
    44 
       
    45 // -----------------------------------------------------------------------------
    39 // -----------------------------------------------------------------------------
    46 // RMPM::LaunchServer
    40 // RMPM::LaunchServer
    47 // -----------------------------------------------------------------------------
    41 // -----------------------------------------------------------------------------
    48 //
    42 //
    49 EXPORT_C TInt RMPM::LaunchServer()
    43 EXPORT_C TInt RMPM::LaunchServer()
    50     {
    44     {
    51     return KErrNone;
    45     return KErrNone;
    52     }
    46     }
    53 
    47 
    54 
       
    55 // -----------------------------------------------------------------------------
    48 // -----------------------------------------------------------------------------
    56 // RMPM::Connect
    49 // RMPM::Connect
    57 // -----------------------------------------------------------------------------
    50 // -----------------------------------------------------------------------------
    58 //
    51 //
    59 EXPORT_C TInt RMPM::Connect(  )
    52 EXPORT_C TInt RMPM::Connect()
    60     {
    53     {
    61     TRequestStatus status;
    54     TRequestStatus status;
    62     Connect( status );
    55     Connect( status );
    63     User::WaitForRequest( status );
    56     User::WaitForRequest( status );
    64     TInt err = status.Int();
    57     TInt err = status.Int();
    65     if ( err != KErrNone )
    58     if ( err != KErrNone )
    66         {
    59         {
    67         iConnected = EFalse;
    60         iConnected = EFalse;
    68         MPMLOGSTRING2( "RMPM::Connect - Error <%i> in CreateSession", err )
    61         MPMLOGSTRING2( "RMPM::Connect - Error <%i> in CreateSession", err )
    69         } 
    62         }
    70     return err;
    63     return err;
    71     }
    64     }
    72 
    65 
    73 // -----------------------------------------------------------------------------
    66 // -----------------------------------------------------------------------------
    74 // RMPM::Connect
    67 // RMPM::Connect
    79     TInt err( KErrNone );
    72     TInt err( KErrNone );
    80 
    73 
    81     if ( !iConnected )
    74     if ( !iConnected )
    82         {
    75         {
    83         MPMLOGSTRING( "RMPM::Connect: Client connecting to MPM Server" )
    76         MPMLOGSTRING( "RMPM::Connect: Client connecting to MPM Server" )
    84         err = CreateSession( 
    77         TVersion version = Version();
       
    78         err = CreateSession(
    85                 KMPMServerName,
    79                 KMPMServerName,
    86                 Version(),
    80                 version,
    87                 KNumMessageSlots,
    81                 KNumMessageSlots,
    88                 EIpcSession_Unsharable,
    82                 EIpcSession_Unsharable,
    89                 (TSecurityPolicy*)0,
    83                 (TSecurityPolicy*)0,
    90                 &aStatus );
    84                 &aStatus );
    91         if ( err != KErrNone )
    85         if ( err != KErrNone )
    92             {
    86             {
    93             //Connecting failed, probably because this is the first Connect() attempt.
    87             // Connecting failed, probably because this is the first Connect() attempt.
    94             TVersion version = Version();
    88             MPMLOGSTRING3("Mobility Policy Manager version %d.%d", version.iMajor, version.iMinor )
    95             MPMLOGSTRING3("Mobility Policy Manager version %d.%d", version.iMajor, 
    89             err = MPMLauncher::LaunchServer( KMPMServerImg,
    96                                                                    version.iMinor )
    90                                              KServerUid2,
    97             err = MPMLauncher::LaunchServer( KMPMServerImg, 
       
    98                                              KServerUid2, 
       
    99                                              KServerUid3 );
    91                                              KServerUid3 );
   100             if ( err != KErrNone )
    92             if ( err != KErrNone )
   101                 {
    93                 {
   102                 MPMLOGSTRING2( "RMPM::Connect - Error <%i> in LaunchServer", err )
    94                 MPMLOGSTRING2( "RMPM::Connect - Error <%i> in LaunchServer", err )
   103                 }
    95                 }
   104             else
    96             else
   105                 {
    97                 {
   106                 err = CreateSession( 
    98                 err = CreateSession(
   107                     KMPMServerName,
    99                     KMPMServerName,
   108                     Version(),
   100                     version,
   109                     KNumMessageSlots,
   101                     KNumMessageSlots,
   110                     EIpcSession_Unsharable,
   102                     EIpcSession_Unsharable,
   111                     (TSecurityPolicy*)0,
   103                     (TSecurityPolicy*)0,
   112                     &aStatus );
   104                     &aStatus );
   113 #ifdef _DEBUG
   105 #ifdef _DEBUG
   114                 if (err != KErrNone)
   106                 if ( err != KErrNone )
       
   107                     {
   115                     MPMLOGSTRING2( "RMPM::Connect - Error <%i> in CreateSession", err )
   108                     MPMLOGSTRING2( "RMPM::Connect - Error <%i> in CreateSession", err )
       
   109                     }
   116 #endif
   110 #endif
   117                 }
   111                 }
   118             }   
   112             }
   119         
   113 
   120         //This can't be else, in case the inner CreateSession() succeeds.
   114         // This can't be else, in case the inner CreateSession() succeeds.
   121         if (err == KErrNone)
   115         if ( err == KErrNone )
   122            {
   116             {
   123            // session ok but waiting for MPM startup.
   117             // Session ok but waiting for MPM startup.
   124            // We have to assume that it'll be ok.
   118             // We have to assume that it'll be ok.
   125            TPtr8 ptr( reinterpret_cast< TUint8* >( NULL ), 0 );
   119             TPtr8 ptr( reinterpret_cast< TUint8* >( NULL ), 0 );
   126            TBool errFound = EFalse;
   120             TBool errFound = EFalse;
   127            for (TUint i=0; ( (i < KNumPtrs) && !errFound ); i++)
   121             for ( TUint i = 0; ( ( i < KNumPtrs ) && !errFound ); i++ )
   128                {
   122                 {
   129                err = iPtrArray.Append( ptr );
   123                 err = iPtrArray.Append( ptr );
   130                if ( err != KErrNone )
   124                 if ( err != KErrNone )
   131                    {
   125                     {
   132                    MPMLOGSTRING2(
   126                     MPMLOGSTRING2( "RMPM::Connect - Error <%i> in ptrArray Append", err )
   133                        "RMPM::Connect - Error <%i> in ptrArray Append", err )
       
   134                     errFound = ETrue;
   127                     errFound = ETrue;
   135                    }
   128                     }
   136                }
   129                 }
   137            // If everything is fine, set client connected to true.
   130             // If everything is fine, set client connected to true.
   138            if ( err == KErrNone )
   131             if ( err == KErrNone )
   139                {
   132                 {
   140                iConnected = ETrue;
   133                 iConnected = ETrue;
   141                }
   134                 }
   142            // Else close the created session.
   135             // Else close the created session.
   143            else
   136             else
   144                {
   137                 {
   145                Close();
   138                 Close();
   146                }
   139                 }
   147            }
   140             }
   148         }
   141         }
   149     else
   142     else
   150         {
   143         {
   151         MPMLOGSTRING( "RMPM::Connect: Already connected to MPM Server" )
   144         MPMLOGSTRING( "RMPM::Connect: Already connected to MPM Server" )
   152         err = KErrNone;
   145         err = KErrNone;
   153         }
   146         }
   154 
   147 
   155     // Finally, always complete the failing connects 
   148     // Finally, always complete the failing connects.
   156     if ( err != KErrNone )
   149     if ( err != KErrNone )
   157         {
   150         {
   158         TRequestStatus* status = &aStatus;
   151         TRequestStatus* status = &aStatus;
   159         User::RequestComplete( status, err );
   152         User::RequestComplete( status, err );
   160         }
   153         }
   161     }
   154     }
   162 
       
   163 
       
   164 
   155 
   165 // -----------------------------------------------------------------------------
   156 // -----------------------------------------------------------------------------
   166 // RMPM::ChooseBestIAP
   157 // RMPM::ChooseBestIAP
   167 // -----------------------------------------------------------------------------
   158 // -----------------------------------------------------------------------------
   168 //
   159 //