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 { |