williamr@2: // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // CSocketServer williamr@2: // williamr@2: // williamr@2: williamr@2: inline CWorkerThread& CSocketServer::WorkerThread() const williamr@2: { williamr@2: return *iOwnerThread; williamr@2: }; williamr@2: williamr@2: inline TWorkerId CSocketServer::WorkerId() const williamr@2: { williamr@2: return WorkerThread().WorkerId(); williamr@2: } williamr@2: williamr@2: // williamr@2: // CSockSession williamr@2: // williamr@2: williamr@2: inline const CDealer& CSockSession::Dealer() const williamr@2: { williamr@2: // NB: this is really only a static_cast<> but the Gordian knot of class dependencies results in a forward williamr@2: // declaration williamr@2: return *reinterpret_cast(Server()); williamr@2: } williamr@2: williamr@2: inline CSubSessionIx& CSockSession::SubSessions() williamr@2: { williamr@2: return iSubSessions; williamr@2: } williamr@2: williamr@2: inline const CSubSessionIx& CSockSession::SubSessions() const williamr@2: { williamr@2: return iSubSessions; williamr@2: } williamr@2: williamr@2: inline TSockManData* CSockSession::SockManGlobals() const williamr@2: { williamr@2: return WorkerThread().SockManGlobals(); williamr@2: } williamr@2: williamr@2: // williamr@2: // CSockSubSession williamr@2: // williamr@2: williamr@2: inline void CSockSubSession::Open() williamr@2: { williamr@2: iAccessCount++; williamr@2: } williamr@2: williamr@2: inline void CSockSubSession::Close() williamr@2: { williamr@2: iAccessCount--; williamr@2: ASSERT(iAccessCount >= 0); williamr@2: if(iAccessCount == 0) williamr@2: { williamr@2: RemoveAndDestroy(); williamr@2: } williamr@2: } williamr@2: williamr@2: inline TInt CSockSubSession::AccessCount() const williamr@2: { williamr@2: return iAccessCount; williamr@2: } williamr@2: williamr@2: inline CSockSession* CSockSubSession::Session() williamr@2: { williamr@2: ASSERT(iSession); williamr@2: return iSession; williamr@2: } williamr@2: williamr@2: inline CPlayer& CSockSubSession::Player() const williamr@2: { williamr@2: ASSERT(iPlayer); williamr@2: return *iPlayer; williamr@2: } williamr@2: williamr@2: #ifdef SYMBIAN_NETWORKING_PERFMETRICS williamr@2: inline void CSockSubSession::IncludePerformanceData(TInt aDeltaClientRxBytes, TInt aDeltaClientRxBuffBytes, TInt aDeltaClientTxBytes) williamr@2: { williamr@2: iSession->IncludePerformanceData(aDeltaClientRxBytes, aDeltaClientRxBuffBytes, aDeltaClientTxBytes); williamr@2: } williamr@2: #endif williamr@2: williamr@2: williamr@2: inline const RMessage2& CSockSession::Message() const williamr@2: { williamr@2: return *iOurMessage; williamr@2: } williamr@2: williamr@2: inline void CSockSession::CompleteDisconnect() williamr@2: { williamr@2: RMessage2 dm = iDisconnectMessage; williamr@2: inherited::Disconnect(dm); williamr@2: } williamr@2: williamr@2: williamr@2: inline void CSocketScheduler::SetGlobals(TSockManData* aGlobals) williamr@2: { williamr@2: static_cast(CActiveScheduler::Current())->iGlobals = aGlobals; williamr@2: } williamr@2: williamr@2: //inline void CSocketScheduler::SetWaitHook(TCallBack* aCall) williamr@2: // { ((CSocketScheduler*)CActiveScheduler::Current())->iWaitHook=aCall; } williamr@2: williamr@2: inline TSockManData* CSocketScheduler::Globals() williamr@2: { williamr@2: return static_cast(CActiveScheduler::Current())->iGlobals; williamr@2: } williamr@2: williamr@2: // williamr@2: // CSubSessionIx williamr@2: // williamr@2: williamr@2: /** williamr@2: Optional locking. When accessing any of the public methods of this class in a multithreaded williamr@2: environment, locking is often necessary. This lock does not allow for lock nesting. williamr@2: */ williamr@2: inline void CSubSessionIx::Lock() const williamr@2: { williamr@2: iLock.Wait(); williamr@2: } williamr@2: williamr@2: /** williamr@2: Unlocking. williamr@2: @see Lock() williamr@2: */ williamr@2: inline void CSubSessionIx::Unlock() const williamr@2: { williamr@2: iLock.Signal(); williamr@2: } williamr@2: williamr@2: /** williamr@2: @return the number of active sub-sessions in the container. williamr@2: */ williamr@2: inline TInt CSubSessionIx::ActiveCount() const williamr@2: { williamr@2: return iActiveCount; williamr@2: }