--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTcpTransConnecting.cpp Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,213 @@
+// Copyright (c) 2002-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 : CTcpTransConnecting.cpp
+// Part of : ConnectionMgr
+// Version : SIP/6.0
+//
+
+
+
+
+#include "CTcpTransConnecting.h"
+#include "sipmessage.h"
+#include "CTransportTcp.h"
+#include "CReceiverTcp.h"
+#include "CSender.h"
+#include "COutgoingData.h"
+#include "MTransportOwner.h"
+#include "CommonConsts.h"
+#include "sipstrings.h"
+#include "sipstrconsts.h"
+#include "siperr.h"
+
+// -----------------------------------------------------------------------------
+// CTcpTransportConnecting::NewL
+// -----------------------------------------------------------------------------
+//
+CTcpTransportConnecting* CTcpTransportConnecting::NewL(
+ const TSIPTransportParams& aParams)
+ {
+ CTcpTransportConnecting* self = NewLC(aParams);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CTcpTransportConnecting::NewLC
+// -----------------------------------------------------------------------------
+//
+CTcpTransportConnecting* CTcpTransportConnecting::NewLC(
+ const TSIPTransportParams& aParams)
+ {
+ CTcpTransportConnecting* self =
+ new (ELeave) CTcpTransportConnecting(aParams);
+ CleanupStack::PushL(self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CTcpTransportConnecting::CancelSend
+// -----------------------------------------------------------------------------
+//
+TBool CTcpTransportConnecting::CancelSend(TRequestStatus& aStatus,
+ CTransportTcp* aContext)
+ {
+ __ASSERT_DEBUG(aContext, User::Panic(_L("Nullpointer"), KErrGeneral));
+
+ return aContext->GetSender()->FindAndCancel(aStatus);
+ }
+
+// -----------------------------------------------------------------------------
+// CTcpTransportConnecting::Wait
+// -----------------------------------------------------------------------------
+//
+void CTcpTransportConnecting::Wait(CTransportTcp* /*aContext*/)
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CTcpTransportConnecting::HandleMessage
+// -----------------------------------------------------------------------------
+//
+TBool CTcpTransportConnecting::HandleMessage(RStringF aProtocol,
+ const TInetAddr& aRemoteAddr,
+ CTransportTcp* aContext)
+ {
+ __ASSERT_DEBUG(aContext, User::Panic(_L("Nullpointer"), KErrGeneral));
+
+ TInetAddr connect;
+ aContext->GetRemoteAddr(connect);
+
+ return (aProtocol == SIPStrings::StringF(SipStrConsts::ETCP) &&
+ connect.CmpAddr(aRemoteAddr));
+ }
+
+// -----------------------------------------------------------------------------
+// CTcpTransportConnecting::SendToNetL
+// -----------------------------------------------------------------------------
+//
+void CTcpTransportConnecting::SendToNetL(const TSIPTransportParams& aParams,
+ CSIPMessage& aMessage,
+ const TInetAddr& aAddr,
+ TRequestStatus &aStatus,
+ TUint aOrigTransport,
+ CTransportTcp* aContext)
+ {
+ __ASSERT_DEBUG(aContext, User::Panic(_L("Nullpointer"), KErrGeneral));
+
+ TBool connect = aContext->GetSender()->SendL(aParams,
+ aMessage,
+ aAddr,
+ aOrigTransport,
+ aStatus,
+ ETrue,
+ EFalse);
+ if ( connect )
+ {
+ aContext->ConnectSocket();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CTcpTransportConnecting::CancelAllRequests
+// -----------------------------------------------------------------------------
+//
+void CTcpTransportConnecting::CancelAllRequests(CSIPConnection::TState aReason,
+ CTransportTcp* aContext)
+ {
+ __ASSERT_DEBUG(aContext, User::Panic(_L("Nullpointer"), KErrGeneral));
+
+ aContext->GetSender()->CancelAllRequests(aReason);
+ }
+
+// -----------------------------------------------------------------------------
+// CTcpTransportConnecting::ConnectionOpenL
+// -----------------------------------------------------------------------------
+//
+void CTcpTransportConnecting::ConnectionOpenL(CTransportTcp* aContext)
+ {
+ __ASSERT_DEBUG(aContext, User::Panic(_L("Nullpointer"), KErrGeneral));
+
+ aContext->SetCurrentState(iConnected);
+ // Possibly update sender socket opts before sending
+ aContext->GetSender()->SendNextL();
+ aContext->StartTimerL();
+ }
+
+// -----------------------------------------------------------------------------
+// CTcpTransportConnecting::DisconnectedL
+// -----------------------------------------------------------------------------
+//
+void CTcpTransportConnecting::DisconnectedL(CTransportTcp* aContext)
+ {
+ __ASSERT_DEBUG(aContext, User::Panic(_L("Nullpointer"), KErrGeneral));
+
+ COutgoingData* data = 0;
+ CSender* sender = aContext->GetSender();
+ while ( (data = sender->StoredData()) != 0)
+ {
+ if (data->OrigTransport() == KProtocolInetUdp &&
+ data->Message().IsRequest())
+ {
+ data->Sent();
+ CleanupStack::PushL( data );
+ aContext->TransportOwner()->ReRouteL(KProtocolInetUdp,
+ data);
+ CleanupStack::Pop( data );
+ }
+ else if (data->OrigTransport() == KProtocolInetTcp &&
+ !data->Message().IsRequest())
+ {
+ data->Sent();
+ CleanupStack::PushL( data );
+ aContext->TransportOwner()->ReRouteL(KProtocolInetTcp,
+ data);
+ CleanupStack::Pop( data );
+ }
+ else
+ {
+ TRequestStatus* stat = data->Status();
+ User::RequestComplete(stat, KErrSIPTransportFailure);
+ delete data;
+ }
+ }
+ aContext->Remove();
+ }
+
+// -----------------------------------------------------------------------------
+// CTcpTransportConnecting::SetNeighborState
+// -----------------------------------------------------------------------------
+//
+void CTcpTransportConnecting::SetNeighborState(CTcpTransportState* aState)
+ {
+ iConnected = aState;
+ }
+
+// -----------------------------------------------------------------------------
+// CTcpTransportConnecting::~CTcpTransportConnecting
+// -----------------------------------------------------------------------------
+//
+CTcpTransportConnecting::~CTcpTransportConnecting()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CTcpTransportConnecting::CTcpTransportConnecting
+// -----------------------------------------------------------------------------
+//
+CTcpTransportConnecting::CTcpTransportConnecting(
+ const TSIPTransportParams& aParams) :
+ CTcpTransportState(aParams)
+ {
+ }