datacommsserver/esockserver/ssock/ss_connselect.cpp
branchRCL_3
changeset 12 8b5d60ce1e94
parent 0 dfb7c4ff071f
child 21 07656293a99c
equal deleted inserted replaced
11:98a7181d2ce7 12:8b5d60ce1e94
   102 			__ASSERT_DEBUG(iRequestingNode == aSender, User::Panic(KSpecAssert_ESockSSockscnslc, 3));
   102 			__ASSERT_DEBUG(iRequestingNode == aSender, User::Panic(KSpecAssert_ESockSSockscnslc, 3));
   103 			Cancel();
   103 			Cancel();
   104 			break;
   104 			break;
   105 		case TEBase::TError::EId:
   105 		case TEBase::TError::EId:
   106 			{
   106 			{
       
   107 			TEBase::TError& error = message_cast<TEBase::TError>(aCFMessage);
   107 			if (iSelectionStatus==ERequestingCommsBinder)
   108 			if (iSelectionStatus==ERequestingCommsBinder)
   108 				{
   109 			    {
   109 				CommsBinderRequestError(aSender, message_cast<TEBase::TError>(aCFMessage));
   110 			    CommsBinderRequestError(aSender,error);
   110 				}
   111 			    }
       
   112 			else if(error.iMsgId == TCFDataClient::TBindToComplete::Id())
       
   113 			    {
       
   114 			    if (KErrNone==iOriginalError)
       
   115 			        {
       
   116 			        iOriginalError = error.iValue;
       
   117 			        }
       
   118 	            // Send TCFServiceProvider::TBindToComplete to complete BinderRequest
       
   119 	            __ASSERT_DEBUG(!iTopMcprId.IsNull(), User::Panic(KSpecAssert_ESockSSockscnslc, 43)); //iTopMcprId must be selected by now!
       
   120 	            RNodeInterface::OpenPostMessageClose(Id(), iTopMcprId, TCFServiceProvider::TBindToComplete(error.iValue).CRef());
       
   121 			    }
   111 			else
   122 			else
   112 				{
   123 			    {
   113 				TEBase::TError& error = message_cast<TEBase::TError>(aCFMessage);
       
   114 				if (error.iMsgId == TCFSelector::TSimpleSelect::Id()
   124 				if (error.iMsgId == TCFSelector::TSimpleSelect::Id()
   115 					|| error.iMsgId == TCFSelector::TSelect::Id())
   125 					|| error.iMsgId == TCFSelector::TSelect::Id())
   116 					{
   126 					{
   117 					//TSelect may be used by CConnection or the TopMcpr
   127 					//TSelect may be used by CConnection or the TopMcpr
   118 					//In both cases the control client must leave on an error.
   128 					//In both cases the control client must leave on an error.
   204 		{
   214 		{
   205 		CommsBinderResponse(message_cast<TCFServiceProvider::TCommsBinderResponse>(aCFMessage));
   215 		CommsBinderResponse(message_cast<TCFServiceProvider::TCommsBinderResponse>(aCFMessage));
   206 		}
   216 		}
   207 	else if ( aCFMessage.IsMessage<TCFDataClient::TBindToComplete>() )
   217 	else if ( aCFMessage.IsMessage<TCFDataClient::TBindToComplete>() )
   208 		{
   218 		{
   209 		__ASSERT_DEBUG(KErrNone==message_cast<TCFDataClient::TBindToComplete>(aCFMessage).iValue || iRequestingNode==aSender, User::Panic(KSpecAssert_ESockSSockscnslc, 12));
   219 		__ASSERT_DEBUG(iRequestingNode==aSender, User::Panic(KSpecAssert_ESockSSockscnslc, 12));
   210 		__ASSERT_DEBUG(KErrNone==message_cast<TCFDataClient::TBindToComplete>(aCFMessage).iValue || iSelectionStatus==ERequestingCommsBinder || iSelectionStatus==EIdle, User::Panic(KSpecAssert_ESockSSockscnslc, 13));
   220 		__ASSERT_DEBUG(iSelectionStatus==ERequestingCommsBinder || iSelectionStatus==EIdle, User::Panic(KSpecAssert_ESockSSockscnslc, 13));
   211 		__ASSERT_DEBUG(KErrNone==message_cast<TCFDataClient::TBindToComplete>(aCFMessage).iValue || !iTopMcprId.IsNull(), User::Panic(KSpecAssert_ESockSSockscnslc, 14)); //iTopMcprId must be selected by now!
   221 		__ASSERT_DEBUG(!iTopMcprId.IsNull(), User::Panic(KSpecAssert_ESockSSockscnslc, 14)); //iTopMcprId must be selected by now!
   212 		RNodeInterface::OpenPostMessageClose(Id(), iTopMcprId, aCFMessage);
   222 
       
   223 		// Notify the service provider to complete binding activity (TCFServiceProvider::TCommsBinderRequest)
       
   224 		RNodeInterface::OpenPostMessageClose(Id(), iTopMcprId, TCFServiceProvider::TBindToComplete().CRef());
       
   225 
   213 		}
   226 		}
   214 	else if ( aCFMessage.IsMessage<TCFMessage::TStateChange>() )
   227 	else if ( aCFMessage.IsMessage<TCFMessage::TStateChange>() )
   215 		{
   228 		{
   216 		if (!iDestroying)
   229 		if (!iDestroying)
   217 			{
   230 			{