Ejemplo n.º 1
0
STDMETHODIMP CExtraResponseData::EnumerateExtraHeaders(IUOLFoneClientHeaderInfoEnum** ppHeaderInfoEnum)
{
	HRESULT hr = E_FAIL;

	CComObject<CHeaderInfoEnum>* pNewHeaderInfoEnum;

	hr = CComObject<CHeaderInfoEnum>::CreateInstance(&pNewHeaderInfoEnum);

	if (SUCCEEDED(hr))
	{
		for (POSITION pos = m_listHeaderData.GetHeadPosition(); pos; )
		{
			CHeaderDataPtr pHeaderData = m_listHeaderData.GetNext(pos);

			CComObject<CHeaderInfo>* pHeaderInfo;

			hr = CComObject<CHeaderInfo>::CreateInstance(&pHeaderInfo);

			if (SUCCEEDED(hr))
			{
				pHeaderInfo->SetHeaderData(pHeaderData);
				pNewHeaderInfoEnum->AddHeaderInfo(pHeaderInfo);
			}
			else
			{
				break;
			}
		}

		if (SUCCEEDED(hr))
		{
			pNewHeaderInfoEnum->AddRef();
			*ppHeaderInfoEnum = pNewHeaderInfoEnum;
		}
	}

	return hr;
}