realtimenetprots/sipfw/SIP/ConnectionMgr/src/CSecureSocketContainer.cpp
changeset 0 307788aac0a8
child 17 654ed625511d
equal deleted inserted replaced
-1:000000000000 0:307788aac0a8
       
     1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // Name        : CSecureSocketContainer.cpp
       
    15 // Part of     : ConnectionMgr
       
    16 // Version     : SIP/5.0
       
    17 //
       
    18 
       
    19 
       
    20 
       
    21 #include <securesocket.h>
       
    22 
       
    23 #include "CSecureSocketContainer.h"
       
    24  
       
    25 // -----------------------------------------------------------------------------
       
    26 // CSecureSocketContainer::NewLC
       
    27 // -----------------------------------------------------------------------------
       
    28 //
       
    29 CSecureSocketContainer* CSecureSocketContainer::NewL( RSocket& aSocket )
       
    30     {
       
    31     CSecureSocketContainer* self = NewLC( aSocket );
       
    32     CleanupStack::Pop( self );
       
    33     return self;
       
    34     }
       
    35       
       
    36 // -----------------------------------------------------------------------------
       
    37 // CSecureSocketContainer::NewLC
       
    38 // -----------------------------------------------------------------------------
       
    39 //
       
    40 CSecureSocketContainer* CSecureSocketContainer::NewLC( RSocket& aSocket )
       
    41     {
       
    42     CSecureSocketContainer* self = 
       
    43         new ( ELeave ) CSecureSocketContainer( aSocket );
       
    44     CleanupStack::PushL( self );
       
    45     return self;
       
    46     }
       
    47     
       
    48 // -----------------------------------------------------------------------------
       
    49 // CSecureSocketContainer::~CSecureSocketContainer
       
    50 // -----------------------------------------------------------------------------
       
    51 //
       
    52 CSecureSocketContainer::~CSecureSocketContainer()
       
    53     {
       
    54     }
       
    55 
       
    56 // -----------------------------------------------------------------------------
       
    57 // CSecureSocketContainer::Send
       
    58 // -----------------------------------------------------------------------------
       
    59 // 
       
    60 void CSecureSocketContainer::Send( 
       
    61     const TDesC8& aDesc, 
       
    62     TUint aFlags, 
       
    63     TRequestStatus& aStatus )
       
    64     {
       
    65     if ( HasSecureSocket() )
       
    66         {
       
    67         iSecureSocket->Send( aDesc, aStatus );
       
    68         }
       
    69     else
       
    70         {
       
    71         CSocketContainer::Send( aDesc, aFlags, aStatus );
       
    72         }
       
    73     }
       
    74 
       
    75 // -----------------------------------------------------------------------------
       
    76 // CSecureSocketContainer::CancelSend
       
    77 // -----------------------------------------------------------------------------
       
    78 //         
       
    79 void CSecureSocketContainer::CancelSend()
       
    80     {
       
    81     if ( HasSecureSocket() )
       
    82         {
       
    83         iSecureSocket->CancelSend();
       
    84         }
       
    85     else
       
    86         {
       
    87         CSocketContainer::CancelSend();
       
    88         }
       
    89     }
       
    90 
       
    91 // -----------------------------------------------------------------------------
       
    92 // CSecureSocketContainer::RecvOneOrMore
       
    93 // -----------------------------------------------------------------------------
       
    94 //         
       
    95 void CSecureSocketContainer::RecvOneOrMore( 
       
    96     TDes8& aDes, 
       
    97     TUint aFlags, 
       
    98     TRequestStatus& aStatus, 
       
    99     TSockXfrLength& aLen )
       
   100     {
       
   101     if ( HasSecureSocket() )
       
   102         {
       
   103         iSecureSocket->RecvOneOrMore( aDes, aStatus, aLen );
       
   104         }
       
   105     else
       
   106         {
       
   107         CSocketContainer::RecvOneOrMore( aDes, aFlags, aStatus, aLen );
       
   108         }
       
   109     }
       
   110 
       
   111 // -----------------------------------------------------------------------------
       
   112 // CSecureSocketContainer::CancelRecv
       
   113 // -----------------------------------------------------------------------------
       
   114 //                             
       
   115 void CSecureSocketContainer::CancelRecv()
       
   116     {
       
   117     if ( HasSecureSocket() )
       
   118         {
       
   119         iSecureSocket->CancelRecv();
       
   120         }
       
   121     else
       
   122         {
       
   123         CSocketContainer::CancelRecv();
       
   124         }
       
   125     }
       
   126 
       
   127 // -----------------------------------------------------------------------------
       
   128 // CSecureSocketContainer::Connect
       
   129 // -----------------------------------------------------------------------------
       
   130 //         
       
   131 void CSecureSocketContainer::Connect( 
       
   132     TSockAddr& aAddr, 
       
   133     TRequestStatus& aStatus )
       
   134     {
       
   135     if ( HasSecureSocket() )
       
   136         {
       
   137         // Since secure socket is opened on top of connected tcp, 
       
   138         // connect will initiate handshake.
       
   139         iSecureSocket->StartClientHandshake( aStatus );
       
   140         }
       
   141     else
       
   142         {
       
   143         CSocketContainer::Connect( aAddr, aStatus );
       
   144         }
       
   145     }
       
   146 
       
   147 // -----------------------------------------------------------------------------
       
   148 // CSecureSocketContainer::CancelConnect
       
   149 // -----------------------------------------------------------------------------
       
   150 //         
       
   151 void CSecureSocketContainer::CancelConnect()
       
   152     {
       
   153     if ( HasSecureSocket() )
       
   154         {
       
   155         // Connect method call initiated handshake if CSecureSocket existed.
       
   156         iSecureSocket->CancelHandshake();
       
   157         }
       
   158     else
       
   159         {
       
   160         CSocketContainer::CancelConnect();
       
   161         }
       
   162     }
       
   163 
       
   164 // -----------------------------------------------------------------------------
       
   165 // CSecureSocketContainer::RemoteName
       
   166 // -----------------------------------------------------------------------------
       
   167 //         
       
   168 void CSecureSocketContainer::RemoteName( TSockAddr& aAddr )
       
   169     {
       
   170     CSocketContainer::RemoteName( aAddr );
       
   171     }
       
   172 
       
   173 // -----------------------------------------------------------------------------
       
   174 // CSecureSocketContainer::SetOpt
       
   175 // -----------------------------------------------------------------------------
       
   176 //         
       
   177 TInt CSecureSocketContainer::SetOpt( 
       
   178     TUint aOptionName, 
       
   179     TUint aOptionLevel, 
       
   180     const TDesC8& aOption )
       
   181     {
       
   182     if ( HasSecureSocket() )
       
   183         {
       
   184         return iSecureSocket->SetOpt( aOptionName, aOptionLevel, aOption );
       
   185         }
       
   186     return CSocketContainer::SetOpt( aOptionName, aOptionLevel, aOption );
       
   187     }
       
   188 
       
   189 // -----------------------------------------------------------------------------
       
   190 // CSecureSocketContainer::SetOpt
       
   191 // -----------------------------------------------------------------------------
       
   192 //         
       
   193 TInt CSecureSocketContainer::SetOpt( 
       
   194     TUint aOptionName, 
       
   195     TUint aOptionLevel, 
       
   196     TInt aOption )
       
   197     {
       
   198     if ( HasSecureSocket() )
       
   199         {
       
   200         return iSecureSocket->SetOpt( aOptionName, aOptionLevel, aOption );
       
   201         }
       
   202     return CSocketContainer::SetOpt( aOptionName, aOptionLevel, aOption );
       
   203     }
       
   204     
       
   205 // -----------------------------------------------------------------------------
       
   206 // CSecureSocketContainer::HasSecureSocket
       
   207 // -----------------------------------------------------------------------------
       
   208 //  
       
   209 TBool CSecureSocketContainer::HasSecureSocket() const
       
   210     {
       
   211     return ( iSecureSocket != 0 );
       
   212     }
       
   213 
       
   214 // -----------------------------------------------------------------------------
       
   215 // CSecureSocketContainer::SecureSocket
       
   216 // -----------------------------------------------------------------------------
       
   217 //          
       
   218 CSecureSocket* CSecureSocketContainer::SecureSocket()
       
   219     {
       
   220     return iSecureSocket;
       
   221     }
       
   222         
       
   223 // -----------------------------------------------------------------------------
       
   224 // CSecureSocketContainer::SetSecureSocket
       
   225 // -----------------------------------------------------------------------------
       
   226 //    
       
   227 void CSecureSocketContainer::SetSecureSocket( CSecureSocket* aSecureSocket )
       
   228     {
       
   229     iSecureSocket = aSecureSocket;
       
   230     }
       
   231 
       
   232 // -----------------------------------------------------------------------------
       
   233 // CSecureSocketContainer::CSecureSocketContainer
       
   234 // -----------------------------------------------------------------------------
       
   235 //    
       
   236 CSecureSocketContainer::CSecureSocketContainer( RSocket& aSocket ) : 
       
   237     CSocketContainer( aSocket )
       
   238     {
       
   239     }
       
   240     
       
   241 // End of file