commsfwsupport/commselements/meshmachine/src/mm_activities.cpp
branchRCL_3
changeset 76 576874e13a2c
parent 29 9644881fedd0
--- a/commsfwsupport/commselements/meshmachine/src/mm_activities.cpp	Tue Sep 14 23:38:38 2010 +0300
+++ b/commsfwsupport/commselements/meshmachine/src/mm_activities.cpp	Wed Sep 15 13:33:11 2010 +0300
@@ -38,20 +38,6 @@
 
 //-=========================================================
 //
-//Panics
-//
-//-=========================================================
-_LIT (KMMActivityPanic,"MMActivityPanic");
-enum
-	{
-	EPanicCorruptedContext = 1,
-	EPanicNoPreallocatedSpace = 2,
-	EPanicOutOfActivities = 3,
-	EPanicOutOfBounds
-	};
-
-//-=========================================================
-//
 //TNodeActivityIter
 //
 //-=========================================================
@@ -556,7 +542,7 @@
     static const TUint32 iFull = ~0;
     static const TInt iCount = (SIZE + iSizeMask) / iSize;
     TBitmap();
-    void SetBit(TUint aBitNum);
+    void SetBitL(TUint aBitNum);
     TInt GetFreeBit() const;
 
 private:
@@ -573,10 +559,10 @@
 }
 
 template<TInt SIZE>
-void TBitmap<SIZE>::SetBit(TUint aBitNum)
+void TBitmap<SIZE>::SetBitL(TUint aBitNum)
     {
     const TInt index = aBitNum / iSize;
-	__ASSERT_ALWAYS(index < iCount,User::Panic(KMMActivityPanic,EPanicOutOfBounds));
+	User::LeaveIfError(index < iCount ? KErrNone : KErrOverflow);
 
     iBits[index] |= 1 << (aBitNum & iSizeMask);
     }
@@ -612,9 +598,22 @@
 //
 //-=========================================================
 
+EXPORT_C TUint CNodeParallelActivityBase::GetNextActivityCountL( const TNodeActivity& aActivitySig, const AMMNodeBase& aNode )
+    {
+    return DoGetNextActivityCountL(aActivitySig, aNode);
+    }
+
+EXPORT_C TUint CNodeParallelActivityBase::GetNextActivityCount( const TNodeActivity& aActivitySig, const AMMNodeBase& aNode )
+    {
+    // Version for infallible activities
+	TUint nextActivity(0);
+    TRAPD(err,nextActivity = DoGetNextActivityCountL(aActivitySig, aNode));
+	__ASSERT_ALWAYS(err == KErrNone,User::Panic(KMMActivityPanic,EPanicOutOfActivities));
+	return nextActivity;
+    }
 
 // For custom activities to implement New
-EXPORT_C TUint CNodeParallelActivityBase::GetNextActivityCount( const TNodeActivity& aActivitySig, const AMMNodeBase& aNode )
+TUint CNodeParallelActivityBase::DoGetNextActivityCountL( const TNodeActivity& aActivitySig, const AMMNodeBase& aNode )
 	{
 	TInt c = 1;
 	
@@ -628,12 +627,12 @@
 		if ((id&0xff) == aActivitySig.iId)
 			{
 			TInt8 uniqueid = id >> 8;
-			activityids.SetBit(uniqueid);
+			activityids.SetBitL(uniqueid);
 			}
 		}
 	c = activityids.GetFreeBit();
 	
-	__ASSERT_ALWAYS(c>=0,User::Panic(KMMActivityPanic,EPanicOutOfActivities));
+	User::LeaveIfError( c>=0 ? KErrNone : KErrOverflow);
     return c;
 	}