realtimenetprots/sipfw/SIP/ConnectionMgr/src/CSecureSocketContainer.cpp
changeset 0 307788aac0a8
child 29 5f12516512fa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/SIP/ConnectionMgr/src/CSecureSocketContainer.cpp	Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,241 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Name        : CSecureSocketContainer.cpp
+// Part of     : ConnectionMgr
+// Version     : SIP/5.0
+//
+
+
+
+#include <securesocket.h>
+
+#include "CSecureSocketContainer.h"
+ 
+// -----------------------------------------------------------------------------
+// CSecureSocketContainer::NewLC
+// -----------------------------------------------------------------------------
+//
+CSecureSocketContainer* CSecureSocketContainer::NewL( RSocket& aSocket )
+    {
+    CSecureSocketContainer* self = NewLC( aSocket );
+    CleanupStack::Pop( self );
+    return self;
+    }
+      
+// -----------------------------------------------------------------------------
+// CSecureSocketContainer::NewLC
+// -----------------------------------------------------------------------------
+//
+CSecureSocketContainer* CSecureSocketContainer::NewLC( RSocket& aSocket )
+    {
+    CSecureSocketContainer* self = 
+        new ( ELeave ) CSecureSocketContainer( aSocket );
+    CleanupStack::PushL( self );
+    return self;
+    }
+    
+// -----------------------------------------------------------------------------
+// CSecureSocketContainer::~CSecureSocketContainer
+// -----------------------------------------------------------------------------
+//
+CSecureSocketContainer::~CSecureSocketContainer()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CSecureSocketContainer::Send
+// -----------------------------------------------------------------------------
+// 
+void CSecureSocketContainer::Send( 
+    const TDesC8& aDesc, 
+    TUint aFlags, 
+    TRequestStatus& aStatus )
+    {
+    if ( HasSecureSocket() )
+        {
+        iSecureSocket->Send( aDesc, aStatus );
+        }
+    else
+        {
+        CSocketContainer::Send( aDesc, aFlags, aStatus );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CSecureSocketContainer::CancelSend
+// -----------------------------------------------------------------------------
+//         
+void CSecureSocketContainer::CancelSend()
+    {
+    if ( HasSecureSocket() )
+        {
+        iSecureSocket->CancelSend();
+        }
+    else
+        {
+        CSocketContainer::CancelSend();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CSecureSocketContainer::RecvOneOrMore
+// -----------------------------------------------------------------------------
+//         
+void CSecureSocketContainer::RecvOneOrMore( 
+    TDes8& aDes, 
+    TUint aFlags, 
+    TRequestStatus& aStatus, 
+    TSockXfrLength& aLen )
+    {
+    if ( HasSecureSocket() )
+        {
+        iSecureSocket->RecvOneOrMore( aDes, aStatus, aLen );
+        }
+    else
+        {
+        CSocketContainer::RecvOneOrMore( aDes, aFlags, aStatus, aLen );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CSecureSocketContainer::CancelRecv
+// -----------------------------------------------------------------------------
+//                             
+void CSecureSocketContainer::CancelRecv()
+    {
+    if ( HasSecureSocket() )
+        {
+        iSecureSocket->CancelRecv();
+        }
+    else
+        {
+        CSocketContainer::CancelRecv();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CSecureSocketContainer::Connect
+// -----------------------------------------------------------------------------
+//         
+void CSecureSocketContainer::Connect( 
+    TSockAddr& aAddr, 
+    TRequestStatus& aStatus )
+    {
+    if ( HasSecureSocket() )
+        {
+        // Since secure socket is opened on top of connected tcp, 
+        // connect will initiate handshake.
+        iSecureSocket->StartClientHandshake( aStatus );
+        }
+    else
+        {
+        CSocketContainer::Connect( aAddr, aStatus );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CSecureSocketContainer::CancelConnect
+// -----------------------------------------------------------------------------
+//         
+void CSecureSocketContainer::CancelConnect()
+    {
+    if ( HasSecureSocket() )
+        {
+        // Connect method call initiated handshake if CSecureSocket existed.
+        iSecureSocket->CancelHandshake();
+        }
+    else
+        {
+        CSocketContainer::CancelConnect();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CSecureSocketContainer::RemoteName
+// -----------------------------------------------------------------------------
+//         
+void CSecureSocketContainer::RemoteName( TSockAddr& aAddr )
+    {
+    CSocketContainer::RemoteName( aAddr );
+    }
+
+// -----------------------------------------------------------------------------
+// CSecureSocketContainer::SetOpt
+// -----------------------------------------------------------------------------
+//         
+TInt CSecureSocketContainer::SetOpt( 
+    TUint aOptionName, 
+    TUint aOptionLevel, 
+    const TDesC8& aOption )
+    {
+    if ( HasSecureSocket() )
+        {
+        return iSecureSocket->SetOpt( aOptionName, aOptionLevel, aOption );
+        }
+    return CSocketContainer::SetOpt( aOptionName, aOptionLevel, aOption );
+    }
+
+// -----------------------------------------------------------------------------
+// CSecureSocketContainer::SetOpt
+// -----------------------------------------------------------------------------
+//         
+TInt CSecureSocketContainer::SetOpt( 
+    TUint aOptionName, 
+    TUint aOptionLevel, 
+    TInt aOption )
+    {
+    if ( HasSecureSocket() )
+        {
+        return iSecureSocket->SetOpt( aOptionName, aOptionLevel, aOption );
+        }
+    return CSocketContainer::SetOpt( aOptionName, aOptionLevel, aOption );
+    }
+    
+// -----------------------------------------------------------------------------
+// CSecureSocketContainer::HasSecureSocket
+// -----------------------------------------------------------------------------
+//  
+TBool CSecureSocketContainer::HasSecureSocket() const
+    {
+    return ( iSecureSocket != 0 );
+    }
+
+// -----------------------------------------------------------------------------
+// CSecureSocketContainer::SecureSocket
+// -----------------------------------------------------------------------------
+//          
+CSecureSocket* CSecureSocketContainer::SecureSocket()
+    {
+    return iSecureSocket;
+    }
+        
+// -----------------------------------------------------------------------------
+// CSecureSocketContainer::SetSecureSocket
+// -----------------------------------------------------------------------------
+//    
+void CSecureSocketContainer::SetSecureSocket( CSecureSocket* aSecureSocket )
+    {
+    iSecureSocket = aSecureSocket;
+    }
+
+// -----------------------------------------------------------------------------
+// CSecureSocketContainer::CSecureSocketContainer
+// -----------------------------------------------------------------------------
+//    
+CSecureSocketContainer::CSecureSocketContainer( RSocket& aSocket ) : 
+    CSocketContainer( aSocket )
+    {
+    }
+    
+// End of file