--- a/localconnectivityservice/dun/utils/src/DunStream.cpp Thu Aug 19 10:46:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,320 +0,0 @@
-/*
-* Copyright (c) 2007 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: Definitions needed for common stream functionality
-*
-*/
-
-
-/*
- * TODO: When local media is of type RComm, listening on it is started with
- * RComm::NotifyDataAvailable() call. Check that USB ACM port and Irda RCOMM
- * (and any other new media in the future) behaves correctly so that when
- * RComm::ReadOneOrMore() is issued, the read is issued immediately without
- * checking for new data. If waiting for new data happens in this
- * NotifyDataAvailable/ReadOneOrMore combination, raise a defect to Symbian.
- */
-
-#include "DunStream.h"
-#include "DunDebug.h"
-
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-CDunStream::~CDunStream()
- {
- FTRACE(FPrint( _L("CDunStream::~CDunStream()" )));
- ResetData();
- FTRACE(FPrint( _L("CDunStream::~CDunStream() complete" )));
- }
-
-// ---------------------------------------------------------------------------
-// Resets data to initial values
-// ---------------------------------------------------------------------------
-//
-void CDunStream::ResetData()
- {
- // APIs affecting this:
- // AddConnMonCallback()
- iCallbacksR.Close();
- iCallbacksW.Close();
- // AddSkippedError()
- iOkErrorsR.Close();
- iOkErrorsW.Close();
- // Internal
- Initialize();
- }
-
-// ---------------------------------------------------------------------------
-// Adds error code to consider as "no error" to either endpoint
-// ---------------------------------------------------------------------------
-//
-TInt CDunStream::AddSkippedError( TInt aError,
- TDunOperationType aOperationType )
- {
- FTRACE(FPrint( _L("CDunStream::AddSkippedError()" ) ));
- RArray<TInt>* okErrors = NULL;
- if ( aOperationType == EDunOperationTypeRead )
- {
- okErrors = &iOkErrorsR;
- }
- else if ( aOperationType == EDunOperationTypeWrite )
- {
- okErrors = &iOkErrorsW;
- }
- else
- {
- FTRACE(FPrint( _L("CDunStream::AddSkippedError() (ERROR) complete" ) ));
- return KErrGeneral;
- }
- if ( aError >= 0 ) // errors can't be >= 0
- {
- FTRACE(FPrint( _L("CDunStream::AddSkippedError() (ERROR) complete" ) ));
- return KErrGeneral;
- }
- TInt retTemp = okErrors->Find( aError );
- if ( retTemp != KErrNotFound )
- {
- FTRACE(FPrint( _L("CDunStream::AddSkippedError() (already exists) complete" ) ));
- return KErrAlreadyExists;
- }
- retTemp = okErrors->Append( aError );
- if ( retTemp != KErrNone )
- {
- FTRACE(FPrint( _L("CDunStream::AddSkippedError() (append failed!) complete" ) ));
- return retTemp;
- }
- FTRACE(FPrint( _L("CDunStream::AddSkippedError() complete" ) ));
- return KErrNone;
- }
-
-// ---------------------------------------------------------------------------
-// Adds callback for line status change controlling
-// The callback will be called when serious read error is detected
-// ---------------------------------------------------------------------------
-//
-TInt CDunStream::AddConnMonCallback( MDunConnMon* aCallback,
- TDunOperationType aOperationType )
- {
- FTRACE(FPrint( _L("CDunStream::AddConnMonCallback()" ) ));
- RPointerArray<MDunConnMon>* callbacks = NULL;
- if ( aOperationType == EDunOperationTypeRead )
- {
- callbacks = &iCallbacksR;
- }
- else if ( aOperationType == EDunOperationTypeWrite )
- {
- callbacks = &iCallbacksW;
- }
- else
- {
- FTRACE(FPrint( _L("CDunStream::AddConnMonCallback() (ERROR) complete" ) ));
- return KErrGeneral;
- }
- if ( !aCallback )
- {
- FTRACE(FPrint( _L("CDunStream::AddConnMonCallback() (aCallback) not initialized!" ) ));
- return KErrGeneral;
- }
- TInt retTemp = callbacks->Find( aCallback );
- if ( retTemp != KErrNotFound )
- {
- FTRACE(FPrint( _L("CDunStream::AddCallback() (already exists) complete" ) ));
- return KErrAlreadyExists;
- }
- retTemp = callbacks->Append( aCallback );
- if ( retTemp != KErrNone )
- {
- FTRACE(FPrint( _L("CDunStream::AddCallback() (append failed!) complete" ) ));
- return retTemp;
- }
- FTRACE(FPrint( _L("CDunStream::AddCallback() complete" ) ));
- return KErrNone;
- }
-
-// ---------------------------------------------------------------------------
-// Sets buffering for this stream
-// ---------------------------------------------------------------------------
-//
-TInt CDunStream::SetBuffering( TPtr8* aBufferPtr )
- {
- FTRACE(FPrint( _L("CDunStream::SetBuffering()" ) ));
- if ( !aBufferPtr )
- {
- FTRACE(FPrint( _L("CDunStream::SetBuffering() (aBufferPtr) not initialized!" ) ));
- return KErrGeneral;
- }
- if ( iBufferPtr )
- {
- FTRACE(FPrint( _L("CDunStream::SetBuffering() (already exists) complete" ) ));
- return KErrAlreadyExists;
- }
- iBufferPtr = aBufferPtr;
- FTRACE(FPrint( _L("CDunStream::SetBuffering() complete" ) ));
- return KErrNone;
- }
-
-// ---------------------------------------------------------------------------
-// Sets media to use for this endpoint
-// ---------------------------------------------------------------------------
-//
-TInt CDunStream::SetMedia( RComm* aComm, TDunMediaContext aMediaContext )
- {
- FTRACE(FPrint( _L("CDunStream::SetMedia() (RComm)" ) ));
- if ( !aComm )
- {
- FTRACE(FPrint( _L("CDunStream::SetMedia() (RComm) (aComm not initialized!) complete" ) ));
- return KErrGeneral;
- }
- if ( aMediaContext == EDunMediaContextNetwork )
- {
- iNetwork = aComm;
- }
- else if ( aMediaContext == EDunMediaContextLocal )
- {
- iComm = aComm;
- }
- else
- {
- FTRACE(FPrint( _L("CDunStream::SetMedia() (RComm) (ERROR) complete" )));
- return KErrGeneral;
- }
- FTRACE(FPrint( _L("CDunStream::SetMedia() (RComm) complete" ) ));
- return KErrNone;
- }
-
-// ---------------------------------------------------------------------------
-// Sets media to use for this endpoint
-// ---------------------------------------------------------------------------
-//
-TInt CDunStream::SetMedia( RSocket* aSocket,
- TDunMediaContext aMediaContext )
- {
- FTRACE(FPrint( _L("CDunStream::SetMedia() (RSocket)" ) ));
- if ( !aSocket )
- {
- FTRACE(FPrint( _L("CDunStream::SetMedia() (RSocket) (aSocket not initialized!) complete" ) ));
- return KErrGeneral;
- }
- if ( aMediaContext == EDunMediaContextLocal )
- {
- iSocket = aSocket;
- }
- else
- {
- FTRACE(FPrint( _L("CDunStream::SetMedia() (RSocket) (not supported) complete" ) ));
- return KErrNotSupported;
- }
- FTRACE(FPrint( _L("CDunStream::SetMedia() (RSocket) complete" ) ));
- return KErrNone;
- }
-
-// ---------------------------------------------------------------------------
-// Gets media context
-// ---------------------------------------------------------------------------
-//
-TDunMediaContext CDunStream::GetMediaContext( TDunStreamType aStreamType )
- {
- FTRACE(FPrint( _L("CDunStream::GetMediaContext()" ) ));
- if ( aStreamType == EDunStreamTypeUpstream )
- {
- if ( iOperationType == EDunOperationTypeRead )
- {
- return EDunMediaContextLocal;
- }
- else if ( iOperationType == EDunOperationTypeWrite )
- {
- return EDunMediaContextNetwork;
- }
- else
- {
- return EDunMediaContextUndefined;
- }
- }
- else if ( aStreamType == EDunStreamTypeDownstream )
- {
- if ( iOperationType == EDunOperationTypeRead )
- {
- return EDunMediaContextNetwork;
- }
- else if ( iOperationType == EDunOperationTypeWrite )
- {
- return EDunMediaContextLocal;
- }
- else
- {
- return EDunMediaContextUndefined;
- }
- }
- FTRACE(FPrint( _L("CDunStream::GetMediaContext() complete" ) ));
- return EDunMediaContextUndefined;
- }
-
-// ---------------------------------------------------------------------------
-// Check whether an error code is severe error or not
-// ---------------------------------------------------------------------------
-//
-TInt CDunStream::ProcessErrorCondition( TInt aError, TBool& aIsError )
- {
- FTRACE(FPrint( _L("CDunStream::ProcessErrorCondition() (Dir=%d)" ), iDirection));
- aIsError = EFalse;
- if ( aError != KErrNone )
- {
- aIsError = ETrue;
- RArray<TInt>* okErrors = NULL;
- if ( iOperationType == EDunOperationTypeRead )
- {
- okErrors = &iOkErrorsR;
- }
- else // iOperationType == EDunOperationTypeWrite
- {
- okErrors = &iOkErrorsW;
- }
- TInt retTemp = okErrors->Find( aError );
- if ( retTemp == KErrNotFound )
- {
- FTRACE(FPrint( _L("CDunStream::ProcessErrorCondition() (Dir=%d) (%d=ETrue) complete" ), iDirection, aError));
- return ETrue;
- }
- }
- FTRACE(FPrint( _L("CDunStream::ProcessErrorCondition() (Dir=%d) (%d=EFalse) complete" ), iDirection, aError));
- return EFalse;
- }
-
-// ---------------------------------------------------------------------------
-// CDunStream::CDunStream
-// ---------------------------------------------------------------------------
-//
-CDunStream::CDunStream() : CActive( EPriorityHigh )
- {
- Initialize();
- CActiveScheduler::Add( this );
- }
-
-// ---------------------------------------------------------------------------
-// Initializes this class
-// ---------------------------------------------------------------------------
-//
-void CDunStream::Initialize()
- {
- // Don't initialize iUtility here (it is set through NewL)
- iBufferPtr = NULL;
- iReadLengthSocket = 0;
- iOperationType = EDunOperationTypeUndefined;
- iTransferState = EDunStateIdle;
- iDirection = EDunDirectionUndefined;
- iNetwork = NULL;
- iSocket = NULL;
- iComm = NULL;
- }