void CSoapMessage::Read(CObjectIStream& in) { Reset(); CSoapEnvelope env; CObjectTypeInfo typeH = CType<CSoapHeader>(); typeH.SetLocalReadHook(in, new CSoapReadHook(m_Header,m_Types)); CObjectTypeInfo typeB = CType<CSoapBody>(); typeB.SetLocalReadHook(in, new CSoapReadHook(m_Body,m_Types)); CObjectTypeInfo typeF = CType<CSoapFault::C_Detail>(); typeF.SetLocalReadHook(in, new CSoapReadHook(m_FaultDetail,m_Types)); in >> env; x_Check(env); x_VerifyFaultObj(false); }
CObjectHookGuardBase::CObjectHookGuardBase(const CObjectTypeInfo& info, CReadObjectHook& hook, CObjectIStream* stream) : m_Hook(&hook), m_HookMode(eHook_Read), m_HookType(eHook_Object) { m_Stream.m_IStream = stream; if ( stream ) { info.SetLocalReadHook(*stream, &hook); } else { info.SetGlobalReadHook(&hook); } }