Den::CCommonWorkerThread Class Reference
class Den::CCommonWorkerThread : public CBase
|
The Worker Thread is the holder of the relevant ESock objects in the CPM instance, e.g. the PitBoss, the Dealer and the Player (depending on configuration). It is also in charge of inter-thread communication as it holds the object enabling communication with the RootServer (
CWorkerRootServChannelHandler
) and a list of objects for communication with other Worker threads (CWorkerTransport).
CWorkerRootServChannelHandler
CWorkerTransport
Protected Member Functions
|
|
CCommonWorkerThread
()
|
void
|
CFBindMessageReceived
(const
CommsFW::TCFBindMsg
&)
|
void
|
CFMessageForward
(const
CommsFW::TCFForwardMsg
&)
|
IMPORT_C
TInt
|
DecodePeerId
(const
CommsFW::TCFSubModuleAddress
*, const
CommsFW::TCFSubModuleAddress
*,
CommsFW::TWorkerId
&)
|
IMPORT_C void
|
DeleteHBufC8
(
TAny
*)
|
IMPORT_C void
|
DetermineRoleL
(
HBufC8
*,
TBool
&,
TBool
&,
TPlayerRole
&)
|
void
|
DoCompleteUnbinding
(
CommsFW::TWorkerId
)
|
CCommonDealer
*
|
DoCreateDealerL
(
CCommonWorkerThread
*,
TPlayerRole
)
|
CCommonPitBoss
*
|
DoCreatePitBossL
(
CCommonWorkerThread
*)
|
CCommonPlayer
*
|
DoCreatePlayerL
(
CCommonWorkerThread
*,
TPlayerRole
)
|
void
|
DoDeterminePlayerRoleL
(
HBufC8
*,
TPlayerRole
&)
|
void
|
DoFillIntroMessage
(
CommsFW::TWorkerId
,
TWorkerIntroductionMsg
&)
|
void
|
DoPostMortemCleanup
()
|
void
|
DoProcessWorkerIntroductionL
(const
TWorkerIntroductionMsg
&)
|
void
|
DoSetShuttingDown
()
|
IMPORT_C void
|
MaybeCompleteUnbinding
(
CommsFW::TWorkerId
,
TBool
)
|
void
|
ProcessIniDataL
()
|
IMPORT_C void
|
SendIntroMessage
(const
CommsFW::TCFModuleName
&,
CommsFW::TWorkerId
)
|
Constructor & Destructor Documentation
CCommonWorkerThread()
IMPORT_C
|
CCommonWorkerThread
|
(
|
)
|
[protected]
|
~CCommonWorkerThread()
IMPORT_C
|
~CCommonWorkerThread
|
(
|
)
|
|
Member Functions Documentation
CFBindMessageReceived(const CommsFW::TCFBindMsg &)
CFMessageForward(const CommsFW::TCFForwardMsg &)
CFShutdownMessageReceived(const CommsFW::TCFShutdownMsg &)
CFUnbindMessageReceived(const CommsFW::TCFUnbindMsg &)
CompleteSessionClose(CWorkerSession *)
ConstructL(CommsFW::TCFModuleInfo &, CShutdownWatchDog &)
DealerShutdownComplete()
TBool
|
DealerShutdownComplete
|
(
|
)
|
const [inline]
|
DecProlongBindingLife()
IMPORT_C void
|
DecProlongBindingLife
|
(
|
)
|
|
DecodePeerId(const CommsFW::TCFSubModuleAddress *, const CommsFW::TCFSubModuleAddress *, CommsFW::TWorkerId &)
DefaultOptimalDealer()
TBool
|
DefaultOptimalDealer
|
(
|
)
|
const [inline]
|
DeleteHBufC8(TAny *)
IMPORT_C void
|
DeleteHBufC8
|
(
|
TAny
*
|
aHBufC
|
)
|
[protected, static]
|
DestroyDealer()
IMPORT_C void
|
DestroyDealer
|
(
|
)
|
|
DestroyPlayer()
IMPORT_C void
|
DestroyPlayer
|
(
|
)
|
|
DetermineRoleL(HBufC8 *, TBool &, TBool &, TPlayerRole &)
DispatchL(const CommsFW::TCFMessage &, CommsFW::TWorkerId)
DoCompleteUnbinding(CommsFW::TWorkerId)
void
|
DoCompleteUnbinding
|
(
|
CommsFW::TWorkerId
|
aWorker
|
)
|
[protected, pure virtual]
|
Parameters
CommsFW::TWorkerId
aWorker
|
|
DoCreateDealerL(CCommonWorkerThread *, TPlayerRole)
DoCreatePitBossL(CCommonWorkerThread *)
DoCreatePlayerL(CCommonWorkerThread *, TPlayerRole)
DoDeterminePlayerRoleL(HBufC8 *, TPlayerRole &)
void
|
DoDeterminePlayerRoleL
|
(
|
HBufC8
*
|
aIniData,
|
|
TPlayerRole
&
|
aPlayerRole
|
|
)
|
[protected, pure virtual]
|
DoDispatchL(const CommsFW::TCFMessage &, CommsFW::TWorkerId)
DoFillIntroMessage(CommsFW::TWorkerId, TWorkerIntroductionMsg &)
void
|
DoFillIntroMessage
|
(
|
CommsFW::TWorkerId
|
aPeerId,
|
|
TWorkerIntroductionMsg
&
|
aIntroMsg
|
|
)
|
[protected, pure virtual]
|
DoPostMortemCleanup()
void
|
DoPostMortemCleanup
|
(
|
)
|
[protected, pure virtual]
|
DoProcessWorkerIntroductionL(const TWorkerIntroductionMsg &)
DoSetShuttingDown()
void
|
DoSetShuttingDown
|
(
|
)
|
[protected, pure virtual]
|
DropTransportToPeer(TInt)
void
|
DropTransportToPeer
|
(
|
TInt
|
aPeer
|
)
|
|
IncProlongBindingLife()
IMPORT_C void
|
IncProlongBindingLife
|
(
|
)
|
|
IsMainThread()
TBool
|
IsMainThread
|
(
|
)
|
[inline]
|
Use this to discover whether this Worker Thread is EMainThread ("Esock_Main") which is the main Dealer also containing the PitBoss. TWorkerThreadInfo
MaybeCompleteUnbinding(CommsFW::TWorkerId, TBool)
IMPORT_C void
|
MaybeCompleteUnbinding
|
(
|
CommsFW::TWorkerId
|
aWorker,
|
|
TBool
|
aPeerIsDead
|
|
)
|
[protected]
|
Parameters
CommsFW::TWorkerId
aWorker
|
|
TBool
aPeerIsDead
|
|
MaybeCompleteUnbindings()
IMPORT_C
TBool
|
MaybeCompleteUnbindings
|
(
|
)
|
|
MaybeTriggerThreadShutdownCallback()
IMPORT_C void
|
MaybeTriggerThreadShutdownCallback
|
(
|
)
|
|
OnDispatchLeave(const CommsFW::TCFMessage &, CommsFW::TWorkerId, TInt)
IMPORT_C void
|
OnDispatchLeave
|
(
|
const
CommsFW::TCFMessage
&
|
aMessage,
|
|
CommsFW::TWorkerId
|
aSenderId,
|
|
TInt
|
aFirstDispatchLeaveReason
|
|
)
|
|
PeerReachable(CommsFW::TWorkerId)
TBool
|
PeerReachable
|
(
|
CommsFW::TWorkerId
|
aPeerId
|
)
|
const [inline]
|
Parameters
CommsFW::TWorkerId
aPeerId
|
|
PitBoss()
Return the pointer to the domain PitBoss. This will be initialised when:
-
If this is Main thread: In CCommonWorkerThread::ConstructL(TCFModuleInfo* aModuleInfo).
-
In other common worker threads: When receiving TWorkerMsg::EMainIntroduction.
PlayerShutdownComplete()
TBool
|
PlayerShutdownComplete
|
(
|
)
|
const [inline]
|
PostMessage(CommsFW::TWorkerId, CommsFW::TCFMessage &)
PostMortemCleanupThreadEntry(TAny *)
IMPORT_C
TInt
|
PostMortemCleanupThreadEntry
|
(
|
TAny
*
|
aArg
|
)
|
[static]
|
ProcessIniDataL()
void
|
ProcessIniDataL
|
(
|
)
|
[protected]
|
SendIntroMessage(const CommsFW::TCFModuleName &, CommsFW::TWorkerId)
IMPORT_C void
|
SendIntroMessage
|
(
|
const
CommsFW::TCFModuleName
&
|
aPeerName,
|
|
CommsFW::TWorkerId
|
aPeerId
|
|
)
|
[protected]
|
SessionShutdownComplete()
IMPORT_C void
|
SessionShutdownComplete
|
(
|
)
|
|
SetDealerShutdownComplete(TBool)
IMPORT_C void
|
SetDealerShutdownComplete
|
(
|
TBool
|
aComplete
|
)
|
|
SetPlayerShutdownComplete(TBool)
IMPORT_C void
|
SetPlayerShutdownComplete
|
(
|
TBool
|
aComplete
|
)
|
|
SetShuttingDown()
IMPORT_C void
|
SetShuttingDown
|
(
|
)
|
|
ShuttingDown()
IMPORT_C
TBool
|
ShuttingDown
|
(
|
)
|
const
|
TriggerThreadShutdownCallback()
void
|
TriggerThreadShutdownCallback
|
(
|
)
|
|
WorkerDealer()
IMPORT_C CCommonWorkerDealer *
|
WorkerDealer
|
(
|
)
|
const
|
WorkerId()
CommsFW::TWorkerId
|
WorkerId
|
(
|
)
|
const [inline]
|
WorkerProperties(CommsFW::TWorkerId)
Parameters
CommsFW::TWorkerId
aWorker
|
|
Member Data Documentation
CWorkerRootServChannelHandler * iChannelHandler
This is the handler used for bi-directional communication with the Root Server.
TBool
iDealerShutdownComplete
TBool
|
iDealerShutdownComplete
|
[protected]
|
Set by the Dealer instance to signal to the Worker Thread that it has finished with the shutdown bookkeeping and is ready to be deleted.
TBool
iDefaultOptimalDealer
TBool
|
iDefaultOptimalDealer
|
[protected]
|
RAllocator::TAllocFail
iFailType
Messages::CGlobals * iGlobals
CCommonPitBoss * iPitBoss
TBool
iPlayerShutdownComplete
TBool
|
iPlayerShutdownComplete
|
[protected]
|
Set by the Player instance to signal to the Worker Thread that it has finished with the shutdown bookkeeping and is ready to be deleted.
TInt
iProlongBindingLife
TInt
|
iProlongBindingLife
|
[protected]
|
If the value of this TInt is larger than 0 any unbind requests will not be served, but postponed until iProlongBindingLife is 0. This is to ensure that if e.g. a
TWorkerMsg::ECleanupDeadPeer
or
TPlayerMsg::ESessionClose
is received they will be fully served before completing any unbind and thus deleting channel handlers.
CShutdownWatchDog * iShutdownWatchDog
CShutdownWatchDog *
|
iShutdownWatchDog
|
[protected]
|
CommsFW::CCommsTransport * iTransport
CommsFW::TWorkerId
iWorkerId
CommsFW::TWorkerId
|
iWorkerId
|
[protected]
|
Indentification of this thread. No other instance must have the same id. TWorkerThreadInfo
CWorkerRegister * iWorkerRegister
TBool
iWorkerShuttingDown
TBool
|
iWorkerShuttingDown
|
[protected]
|
Copyright ©2010 Nokia Corporation and/or its subsidiary(-ies).
All rights
reserved. Unless otherwise stated, these materials are provided under the terms of the Eclipse Public License
v1.0.