bool vmsDownloadsGroup::loadObjectItselfFromStateBuffer(LPBYTE pbtBuffer, LPDWORD pdwSize, DWORD dwVer)
{
	LPBYTE pbtCurrentPos = pbtBuffer;

	getVarFromBuffer(nId, pbtCurrentPos, pbtBuffer, *pdwSize);
	getStrFromBuffer(&strName.pszString, pbtCurrentPos, pbtBuffer, *pdwSize);
	getStrFromBuffer(&strOutFolder.pszString, pbtCurrentPos, pbtBuffer, *pdwSize);
	getStrFromBuffer(&strExts.pszString, pbtCurrentPos, pbtBuffer, *pdwSize);
	getVarFromBuffer(nChildren, pbtCurrentPos, pbtBuffer, *pdwSize);

	
	if (glehEventHandler)
		glehEventHandler(pvData);

	if (nChildren > 0 && glehEventHandler) {
		int i = 0;
		for (i = 0; i < nChildren; i++) {
			
			glehEventHandler(pvData);
		}
	}

	*pdwSize = pbtCurrentPos - pbtBuffer;

	return true;
}
bool vmsDownloadsGroupsMgr::loadObjectItselfFromStateBuffer(LPBYTE pbtBuffer, LPDWORD pdwSize, DWORD dwVer)
{
	LPBYTE pbtCurrentPos = pbtBuffer;

	if (!getVarFromBuffer(m_nGrpNextId, pbtCurrentPos, pbtBuffer, *pdwSize))
		return false;

	int nChildren = 0;
	getVarFromBuffer(nChildren, pbtCurrentPos, pbtBuffer, *pdwSize); 

	int i = 0;
	for (i = 0; i < nChildren; i++) {
		vmsDownloadsGroupSmartPtr pGroup;
		pGroup.CreateInstance ();

		pGroup->nChildren = 0;
		pGroup->glehEventHandler = FdmGroupLoadEventHandler;
		
		TGroupLoadEventData gledData;
		gledData.pdgmGroupsMgr = this;
		gledData.pgtParent = m_tGroups;
		gledData.pGroupPtr = pGroup;
		pGroup->pvData = (void*)&AddGroupLoadEventData(gledData);
		getPersistObjectChildren ()->addPersistObject ((vmsDownloadsGroup*)pGroup);
	}

	*pdwSize = pbtCurrentPos - pbtBuffer;

	
	

	return true;
}
bool vmsMediaConvertMgr::vmsConvertMediaFileContext::loadObjectItselfFromStateBuffer(LPBYTE pbtBuffer, LPDWORD pdwSize, DWORD dwVer)
{
	LPBYTE pbtCurrentPos = pbtBuffer;

	int nId = 0;

	if (!getVarFromBuffer(nId, pbtCurrentPos, pbtBuffer, *pdwSize))
		return false;

	if (!getStrFromBuffer(&stgs.strFormat.pszString, pbtCurrentPos, pbtBuffer, *pdwSize))
		return false;

	if (!getStrFromBuffer(&stgs.strExtension.pszString, pbtCurrentPos, pbtBuffer, *pdwSize))
		return false;

	if (!getStrFromBuffer(&stgs.strAudioCodec.pszString, pbtCurrentPos, pbtBuffer, *pdwSize))
		return false;

	if (!getStrFromBuffer(&stgs.strVideoCodec.pszString, pbtCurrentPos, pbtBuffer, *pdwSize))
		return false;

	if (!getVarFromBuffer(stgs.nAudioBitrate, pbtCurrentPos, pbtBuffer, *pdwSize))
		return false;

	if (!getVarFromBuffer(stgs.nVideoBitrate, pbtCurrentPos, pbtBuffer, *pdwSize))
		return false;

	if (!getVarFromBuffer(stgs.sizeVideo, pbtCurrentPos, pbtBuffer, *pdwSize))
		return false;

	if (!clehEventHandler(nId, this, pvData))
		return false;

	*pdwSize = pbtCurrentPos - pbtBuffer;

	return true;
}
bool vmsPersistableDescEventWrapper::loadObjectItselfFromStateBuffer(LPBYTE pbtBuffer, LPDWORD pdwSize, DWORD dwVer)
{

    LPBYTE pbtCurrentPos = pbtBuffer;

    if (!getVarFromBuffer(deEvent, pbtCurrentPos, pbtBuffer, *pdwSize))
        return false;

    if (!getStrFromBuffer(&deEvent.pszEvent, pbtCurrentPos, pbtBuffer, *pdwSize))
        return false;

    *pdwSize = pbtCurrentPos - pbtBuffer;

    return true;
}
bool vmsDownloadsGroupsMgr::LoadGroupFromBuffer(LPBYTE& pbtCurrentPos, LPBYTE pbtBuffer, DWORD dwBufferSize, vmsDownloadsGroupSmartPtr pGroup)
{
	if (!getVarFromBuffer(pGroup->nId, pbtCurrentPos, pbtBuffer, dwBufferSize))
		return  false;

	if (!getStrFromBuffer(&pGroup->strName.pszString, pbtCurrentPos, pbtBuffer, dwBufferSize))
		return  false;

	if (!getStrFromBuffer(&pGroup->strOutFolder.pszString, pbtCurrentPos, pbtBuffer, dwBufferSize))
		return  false;

	if (!getStrFromBuffer(&pGroup->strExts.pszString, pbtCurrentPos, pbtBuffer, dwBufferSize))
		return  false;

	return true;
}
bool vmsDownloadsGroupsMgr::LoadGroupsTreeFromBuffer(LPBYTE& pbtCurrentPos, LPBYTE pbtBuffer, DWORD dwBufferSize, PDLDS_GROUPS_TREE pRoot)
{
	int cGroups = 0;
	
	if (!getVarFromBuffer(cGroups, pbtCurrentPos, pbtBuffer, dwBufferSize))
		return false;

	while (cGroups-- > 0) {
		vmsDownloadsGroupSmartPtr pGroup;
		pGroup.CreateInstance ();
		if (!LoadGroupFromBuffer(pbtCurrentPos, pbtBuffer, dwBufferSize, pGroup))
			return false;
		PDLDS_GROUPS_TREE pGroupRoot = Add (pGroup, pRoot, TRUE, true);
		if (!LoadGroupsTreeFromBuffer(pbtCurrentPos, pbtBuffer, dwBufferSize, pGroupRoot))
			return false;
	}

	return true;
}
bool fsWebPageDownloadsMgr::loadObjectItselfFromStateBuffer(LPBYTE pbtBuffer, LPDWORD pdwSize, DWORD dwVer)
{
	int cWPD = 0;

	DWORD dwRequiredSize = 0;
	LPBYTE pbtCurrentPos = pbtBuffer;

	if (!getVarFromBuffer(cWPD, pbtCurrentPos, pbtBuffer, *pdwSize))
		return false;

	for (int i = 0; i < cWPD; i++) {
		fsWebPageDownloaderPtr wpd; 
		wpd.CreateInstance ();
		Add (wpd);
	}

	*pdwSize = pbtCurrentPos - pbtBuffer;
	return true;
}
bool fsEventsMgr::loadObjectItselfFromStateBuffer(LPBYTE pbtBuffer, LPDWORD pdwSize, DWORD dwVer)
{

    LPBYTE pbtCurrentPos = pbtBuffer;
    int cRecs = 0;

    m_vEvents.clear ();

    if (!getVarFromBuffer(cRecs, pbtCurrentPos, pbtBuffer, *pdwSize))
        return false;

    int i = 0;
    for (i = 0; i < cRecs; i++) {
        vmsPersistableDescEventWrapperSmartPtr pEventPtr;
        pEventPtr.CreateInstance();
        m_vEvents.add (pEventPtr);
        getPersistObjectChildren ()->addPersistObject ((vmsPersistableDescEventWrapper*)pEventPtr);
    }

    *pdwSize = pbtCurrentPos - pbtBuffer;
    return true;
}