From: <ag...@us...> - 2012-01-05 21:44:48
|
Revision: 2655 http://zoolib.svn.sourceforge.net/zoolib/?rev=2655&view=rev Author: agreen Date: 2012-01-05 21:44:42 +0000 (Thu, 05 Jan 2012) Log Message: ----------- Remove Get/Set/CAS API -- just use a ZCallable_Indirect anywhere runtime switchability is needed. Modified Paths: -------------- trunk/zoolib/source/cxx/zoolib/ZWorker.cpp trunk/zoolib/source/cxx/zoolib/ZWorker.h Modified: trunk/zoolib/source/cxx/zoolib/ZWorker.cpp =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZWorker.cpp 2012-01-05 21:43:49 UTC (rev 2654) +++ trunk/zoolib/source/cxx/zoolib/ZWorker.cpp 2012-01-05 21:44:42 UTC (rev 2655) @@ -50,7 +50,9 @@ , fCallable_Attached(iCallable_Attached) , fCallable_Work(iCallable_Work) , fCallable_Detached(iCallable_Detached) - {} + { + ZAssert(fCallable_Work); + } ZWorker::ZWorker (const ZRef<Callable_Attached>& iCallable_Attached, @@ -58,7 +60,9 @@ : fWorking(0) , fCallable_Attached(iCallable_Attached) , fCallable_Work(iCallable_Work) - {} + { + ZAssert(fCallable_Work); + } ZWorker::ZWorker (const ZRef<Callable_Work>& iCallable_Work, @@ -66,12 +70,16 @@ : fWorking(0) , fCallable_Work(iCallable_Work) , fCallable_Detached(iCallable_Detached) - {} + { + ZAssert(fCallable_Work); + } ZWorker::ZWorker(const ZRef<Callable_Work>& iCallable_Work) : fWorking(0) , fCallable_Work(iCallable_Work) - {} + { + ZAssert(fCallable_Work); + } ZWorker::ZWorker() : fWorking(0) @@ -83,21 +91,18 @@ for (;;) { + fWorking = ZThread::sID(); + fNextWake = kDistantFuture; + guard.Release(); + ZQ<bool> result; - if (ZRef<Callable_Work> theCallable = fCallable_Work) - { - fWorking = ZThread::sID(); - fNextWake = kDistantFuture; - guard.Release(); + try { result = fCallable_Work->QCall(this); } + catch (...) {} - try { result = theCallable->QCall(this); } - catch (...) {} + guard.Acquire(); + fWorking = 0; - guard.Acquire(); - fWorking = 0; - } - if (result && result.Get()) { if (fNextWake < kDistantFuture) @@ -193,69 +198,6 @@ return fCaller; } -ZRef<ZWorker::Callable_Attached> ZWorker::Get_Callable_Attached() - { - ZAcqMtx acq(fMtx); - return fCallable_Attached; - } - -void ZWorker::Set_Callable_Attached(const ZRef<Callable_Attached>& iCallable) - { - ZAcqMtx acq(fMtx); - fCallable_Attached = iCallable; - } - -bool ZWorker::CAS_Callable_Attached(ZRef<Callable_Attached> iPrior, ZRef<Callable_Attached> iNew) - { - ZAcqMtx acq(fMtx); - if (fCallable_Attached != iPrior) - return false; - fCallable_Attached = iNew; - return true; - } - -ZRef<ZWorker::Callable_Work> ZWorker::Get_Callable_Work() - { - ZAcqMtx acq(fMtx); - return fCallable_Work; - } - -void ZWorker::Set_Callable_Work(const ZRef<Callable_Work>& iCallable) - { - ZAcqMtx acq(fMtx); - fCallable_Work = iCallable; - } - -bool ZWorker::CAS_Callable_Work(ZRef<Callable_Work> iPrior, ZRef<Callable_Work> iNew) - { - ZAcqMtx acq(fMtx); - if (fCallable_Work != iPrior) - return false; - fCallable_Work = iNew; - return true; - } - -ZRef<ZWorker::Callable_Detached> ZWorker::Get_Callable_Detached() - { - ZAcqMtx acq(fMtx); - return fCallable_Detached; - } - -void ZWorker::Set_Callable_Detached(const ZRef<Callable_Detached>& iCallable) - { - ZAcqMtx acq(fMtx); - fCallable_Detached = iCallable; - } - -bool ZWorker::CAS_Callable_Detached(ZRef<Callable_Detached> iPrior, ZRef<Callable_Detached> iNew) - { - ZAcqMtx acq(fMtx); - if (fCallable_Detached != iPrior) - return false; - fCallable_Detached = iNew; - return true; - } - void ZWorker::pWakeAt(ZTime iSystemTime) { ZAcqMtx acq(fMtx); Modified: trunk/zoolib/source/cxx/zoolib/ZWorker.h =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZWorker.h 2012-01-05 21:43:49 UTC (rev 2654) +++ trunk/zoolib/source/cxx/zoolib/ZWorker.h 2012-01-05 21:44:42 UTC (rev 2655) @@ -73,18 +73,6 @@ bool Attach(ZRef<ZCaller> iCaller); bool IsAttached(); - ZRef<Callable_Attached> Get_Callable_Attached(); - void Set_Callable_Attached(const ZRef<Callable_Attached>& iCallable); - bool CAS_Callable_Attached(ZRef<Callable_Attached> iPrior, ZRef<Callable_Attached> iNew); - - ZRef<Callable_Work> Get_Callable_Work(); - void Set_Callable_Work(const ZRef<Callable_Work>& iCallable); - bool CAS_Callable_Work(ZRef<Callable_Work> iPrior, ZRef<Callable_Work> iNew); - - ZRef<Callable_Detached> Get_Callable_Detached(); - void Set_Callable_Detached(const ZRef<Callable_Detached>& iCallable); - bool CAS_Callable_Detached(ZRef<Callable_Detached> iPrior, ZRef<Callable_Detached> iNew); - private: void pWakeAt(ZTime iSystemTime); @@ -93,9 +81,9 @@ ZThread::ID fWorking; ZTime fNextWake; - ZRef<Callable_Attached> fCallable_Attached; - ZRef<Callable_Work> fCallable_Work; - ZRef<Callable_Detached> fCallable_Detached; + const ZRef<Callable_Attached> fCallable_Attached; + const ZRef<Callable_Work> fCallable_Work; + const ZRef<Callable_Detached> fCallable_Detached; }; } // namespace ZooLib This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |