コード例 #1
0
ファイル: PEDLaplacian.cpp プロジェクト: phamquy/ImageProc
//************************************
// Method:    ApplyProcessor
// FullName:  CPEDLaplacian::ApplyProcessor
// Access:    public 
// Returns:   procStatus
// Qualifier:
// Parameter: CImgSource * in_pImgSrc
// Parameter: CImgSource * out_ImgResult
//************************************
procStatus CPEDLaplacian::ApplyProcessor(CImgSource *in_pImgSrc, CImgSource *out_ImgResult)
{
	procStatus eRetCode = eNormal;
	CMask oMask(m_eMaskType);
	eRetCode = oMask.ApplyMask(in_pImgSrc, out_ImgResult);
	if(eRetCode == eNormal) 
	{
		out_ImgResult->SetName(in_pImgSrc->GetName() + IMP_SUF_LAPLACED);
		out_ImgResult->SetType(in_pImgSrc->GetType());
	}
	
	return eRetCode;
}
コード例 #2
0
ファイル: Sys.cpp プロジェクト: 0rel/NobodyShooter
bool CSys::GetFilesInDir_( const char* pcDir, const char *pcFile, CArray<CStr> *poArray )
{
	WIN32_FIND_DATA oFD;
	CStr oDir( pcDir );
	CStr oMask( oDir + pcFile );
	HANDLE hFind = FindFirstFile( oMask.GetData(), &oFD );
	if( hFind == INVALID_HANDLE_VALUE )
		return false;
	do
	{
		poArray->Append( oDir + CStr( oFD.cFileName ) );
	}
	while( FindNextFile( hFind, &oFD ) != 0 );
	const DWORD dwError = GetLastError();
	FindClose( hFind );
	return ( dwError == ERROR_NO_MORE_FILES );
}
コード例 #3
0
ファイル: AcmService.cpp プロジェクト: nightstyles/focp
	virtual bool OnInitialize()
	{
		uint32 nLength;
		const char* sVal;
		CTextAccess oAccess;
		CInitConfigSystem* pConfigSystem = CInitConfigSystem::GetInstance();

		if(pConfigSystem->OpenConfig(oAccess, "AcmTcp", true))
		{
			uint32 nPort, nWorkerNum;
			oAccess.OpenIdxVal();
			if(oAccess.Query())
			{
				sVal = oAccess.GetVal("LsnPort", nLength);
				if(!sVal || sVal[nLength-1])
				{
					FocpLog(FOCP_LOG_ERROR, ("The config 'AcmTcp.LsnPort' is invalid"));
					return false;
				}
				nPort = CString::Atoi(sVal);
				if(nPort >= 65536)
				{
					FocpLog(FOCP_LOG_ERROR, ("The config 'AcmTcp.LsnPort(%u)' is invalid", nPort));
					return false;
				}
				sVal = oAccess.GetVal("WorkerNum", nLength);
				if(!sVal || sVal[nLength-1])
				{
					FocpLog(FOCP_LOG_ERROR, ("The config 'AcmTcp.WorkerNum' is invalid"));
					return false;
				}
				nWorkerNum = CString::Atoi(sVal);
				if(nPort)
				{
					m_pTcp = CAcmTcpServer::GetInstance();
					if(m_pTcp->Initialize(nPort, nWorkerNum))
						return false;
				}
			}
		}

		if(!pConfigSystem->OpenConfig(oAccess, "AcmApplication"))
			return false;
		oAccess.OpenIdxVal();
		while(oAccess.Query())
		{
			uint32 nAcmDomain, nNode;
			sVal = oAccess.GetVal("AcmDomain", nLength);
			if(!sVal || sVal[nLength-1])
			{
				FocpLog(FOCP_LOG_ERROR, ("The config 'AcmApplication.AcmDomain' is invalid"));
				return false;
			}
			nAcmDomain = CString::Atoi(sVal);
			sVal = oAccess.GetVal("Node", nLength);
			if(!sVal || sVal[nLength-1])
			{
				FocpLog(FOCP_LOG_ERROR, ("The config 'AcmApplication[%u].Node' is invalid", nAcmDomain));
				return false;
			}
			nNode = CString::Atoi(sVal);
			if(nNode == (uint32)(-1))
			{
				FocpLog(FOCP_LOG_ERROR, ("The config 'AcmApplication[%u].Node(%u)' is invalid", nAcmDomain, nNode));
				return false;
			}
			CRbTreeNode* pIt = m_oDomainInfo.Find(nAcmDomain);
			if(pIt != m_oDomainInfo.End())
			{
				CAcmDomain & oDomain = m_oDomainInfo.GetItem(pIt);
				if(oDomain.nNode != nNode)
				{
					FocpLog(FOCP_LOG_ERROR, ("The config 'AcmApplication[%u] is repeated defined", nAcmDomain));
					return false;
				};
			}
			else
			{
				CAcmDomain & oDomain = m_oDomainInfo[nAcmDomain];
				oDomain.nNode = nNode;
				oDomain.nDomainType = 0;
				oDomain.pUdp = NULL;
				oDomain.pSerialModule = NULL;
			}
		}
		if(m_oDomainInfo.GetSize() == 0)
		{
			FocpLog(FOCP_LOG_SYSLOG, ("AcmApplication is empty"));
			return true;
		}
		if(!pConfigSystem->OpenConfig(oAccess, "AcmDomain"))
			return false;
		oAccess.OpenIdxVal();
		bool bHaveAcmMultiCast = false, bHaveAcmUniCast = false;
		CRbTreeNode* pIt = m_oDomainInfo.First();
		CRbTreeNode* pEnd = m_oDomainInfo.End();
		for(; pIt!=pEnd; pIt=m_oDomainInfo.GetNext(pIt))
		{
			uint32 nAcmDomain = m_oDomainInfo.GetKey(pIt);
			CAcmDomain & oDomain = m_oDomainInfo.GetItem(pIt);
			CFormatString oIdx;
			oIdx.Print("%u", nAcmDomain);
			oAccess.OpenIdxVal();
			if(!oAccess.SetIdxVal("AcmDomain", oIdx.GetStr()))
			{
				FocpLog(FOCP_LOG_ERROR, ("AcmDomain.AcmDomain isn't existed"));
				return false;
			}
			if(!oAccess.Query())
			{
				FocpLog(FOCP_LOG_ERROR, ("AcmDomain[%u] isn't existed", nAcmDomain));
				return false;
			}
			sVal = oAccess.GetVal("DomainType", nLength);
			if(!sVal || sVal[nLength-1])
			{
				FocpLog(FOCP_LOG_ERROR, ("The config 'AcmDomain[%u].DomainType' is invalid", nAcmDomain));
				return false;
			}
			oDomain.nDomainType = CString::Atoi(sVal);
			if(oDomain.nDomainType == 1)
				bHaveAcmMultiCast = true;
			else if(oDomain.nDomainType == 2)
				bHaveAcmUniCast = true;
			else
			{
				FocpLog(FOCP_LOG_ERROR, ("The config 'AcmDomain[%u].DomainType(%u) is invalid", nAcmDomain, oDomain.nDomainType));
				return false;
			}
			sVal = oAccess.GetVal("SerialAbility", nLength);
			if(!sVal || sVal[nLength-1])
			{
				FocpLog(FOCP_LOG_ERROR, ("The config 'AcmDomain[%u].SerialAbility' is invalid", nAcmDomain));
				return false;
			}
			oDomain.nSerialAbility = CString::Atoi(sVal);
			if(oDomain.nSerialAbility > 6 || (oDomain.nDomainType == 1 && (oDomain.nSerialAbility & ASM_SUPPORT_ACK)))
			{
				FocpLog(FOCP_LOG_ERROR, ("The config 'AcmDomain[%u].SerialAbility(%u) is invalid", nAcmDomain, oDomain.nSerialAbility));
				return false;
			}
			sVal = oAccess.GetVal("SerialCapacity", nLength);
			if(!sVal || sVal[nLength-1])
			{
				FocpLog(FOCP_LOG_ERROR, ("The config 'AcmDomain[%u].SerialCapacity' is invalid", nAcmDomain));
				return false;
			}
			oDomain.nSerialCapacity = CString::Atoi(sVal);
			sVal = oAccess.GetVal("SerialMaxAck", nLength);
			if(!sVal || sVal[nLength-1])
			{
				FocpLog(FOCP_LOG_ERROR, ("The config 'AcmDomain[%u].SerialMaxAck' is invalid", nAcmDomain));
				return false;
			}
			oDomain.nSerialMaxAck = CString::Atoi(sVal);
		}
		if(bHaveAcmMultiCast)
		{
			if(!pConfigSystem->OpenConfig(oAccess, "AcmMultiCast"))
				return false;
			pIt = m_oDomainInfo.First();
			for(; pIt!=pEnd; pIt=m_oDomainInfo.GetNext(pIt))
			{
				CAcmDomain & oDomain = m_oDomainInfo.GetItem(pIt);
				if(oDomain.nDomainType == 2)
					continue;
				uint32 nPort, nAcmDomain = m_oDomainInfo.GetKey(pIt);
				CFormatString oIdx;
				oAccess.OpenIdxVal();
				oIdx.Print("%u", nAcmDomain);
				if(!oAccess.SetIdxVal("AcmDomain", oIdx.GetStr()))
				{
					FocpLog(FOCP_LOG_ERROR, ("AcmMultiCast.AcmDomain isn't existed"));
					return false;
				}
				if(!oAccess.Query())
				{
					FocpLog(FOCP_LOG_ERROR, ("AcmMultiCast[%u] isn't existed", nAcmDomain));
					return false;
				}
				sVal = oAccess.GetVal("MultiCastAddr", nLength);
				if(!sVal || sVal[nLength-1])
				{
					FocpLog(FOCP_LOG_ERROR, ("The config 'AcmDomain[%u].MultiCastAddr' is invalid", nAcmDomain));
					return false;
				}
				oDomain.nMultiCastAddr = CFile::GetIpAddr(sVal);
				if(!CFile::IsMulticastAddr(oDomain.nMultiCastAddr))
				{
					FocpLog(FOCP_LOG_ERROR, ("The config 'AcmDomain[%u].MultiCastAddr(%s) is invalid", nAcmDomain, sVal));
					return false;
				}
				sVal = oAccess.GetVal("MultiCastPort", nLength);
				if(!sVal || sVal[nLength-1])
				{
					FocpLog(FOCP_LOG_ERROR, ("The config 'AcmDomain[%u].MultiCastPort' is invalid", nAcmDomain));
					return false;
				}
				nPort = CString::Atoi(sVal);
				if(nPort >= 65536 || nPort == 0)
				{
					FocpLog(FOCP_LOG_ERROR, ("The config 'AcmDomain[%u].MultiCastPort(%s) is invalid", nAcmDomain, sVal));
					return false;
				}
				oDomain.nMultiCastPort = nPort;
				sVal = oAccess.GetVal("MultiCastTTL", nLength);
				if(!sVal || sVal[nLength-1])
				{
					FocpLog(FOCP_LOG_ERROR, ("The config 'AcmDomain[%u].MultiCastTTL' is invalid", nAcmDomain));
					return false;
				}
				nPort = CString::Atoi(sVal);
				if(nPort >= 256 || nPort == 0)
				{
					FocpLog(FOCP_LOG_ERROR, ("The config 'AcmDomain[%u].MultiCastTTL(%s) is invalid", nAcmDomain, sVal));
					return false;
				}
				oDomain.nMultiCastTTL = nPort;
				sVal = oAccess.GetVal("AllowLoopBack", nLength);
				if(!sVal || sVal[nLength-1])
				{
					FocpLog(FOCP_LOG_ERROR, ("The config 'AcmDomain[%u].AllowLoopBack' is invalid", nAcmDomain));
					return false;
				}
				nPort = CString::Atoi(sVal);
				if(nPort)
					oDomain.bAllowLoop = 1;
				else
					oDomain.bAllowLoop = 0;
				sVal = oAccess.GetVal("InterfaceAddr", nLength);
				if(!sVal || sVal[nLength-1])
				{
					FocpLog(FOCP_LOG_ERROR, ("The config 'AcmDomain[%u].InterfaceAddr' is invalid", nAcmDomain));
					return false;
				}
				oDomain.nMcItfAddr = CFile::GetIpAddr(sVal);
				if(!CFile::CheckHostIp(oDomain.nMcItfAddr))
				{
					FocpLog(FOCP_LOG_ERROR, ("The config 'AcmDomain[%u].InterfaceAddr(%s)' is invalid", nAcmDomain, sVal));
					return false;
				}
				sVal = oAccess.GetVal("InterfacePort", nLength);
				if(!sVal || sVal[nLength-1])
				{
					FocpLog(FOCP_LOG_ERROR, ("The config 'AcmDomain[%u].InterfacePort' is invalid", nAcmDomain));
					return false;
				}
				nPort = CString::Atoi(sVal);
				if(nPort >= 65536)
				{
					FocpLog(FOCP_LOG_ERROR, ("The config 'AcmDomain[%u].InterfacePort(%s)' is invalid", nAcmDomain, sVal));
					return false;
				}
				oDomain.nMcItfPort = nPort;
			}
		}
		if(bHaveAcmUniCast)
		{
			if(!pConfigSystem->OpenConfig(oAccess, "AcmUniCast"))
				return false;
			pIt = m_oDomainInfo.First();
			for(; pIt!=pEnd; pIt=m_oDomainInfo.GetNext(pIt))
			{
				CAcmDomain & oDomain = m_oDomainInfo.GetItem(pIt);
				if(oDomain.nDomainType == 1)
					continue;
				uint32 nAcmDomain = m_oDomainInfo.GetKey(pIt);
				CFormatString oIdx;
				oAccess.OpenIdxVal();
				oIdx.Print("%u", nAcmDomain);
				if(!oAccess.SetIdxVal("AcmDomain", oIdx.GetStr()))
				{
					FocpLog(FOCP_LOG_ERROR, ("AcmUniCast.AcmDomain isn't existed"));
					return false;
				}
				while(oAccess.Query())
				{
					sVal = oAccess.GetVal("Node", nLength);
					if(!sVal || sVal[nLength-1])
					{
						FocpLog(FOCP_LOG_ERROR, ("The config 'AcmUniCast[%u].Node is invalid", nAcmDomain));
						return false;
					}
					uint32 nNode = CString::Atoi(sVal);
					CRbTreeNode* pNode = oDomain.oUniCastInfo.Find(nNode);
					if(pNode != oDomain.oUniCastInfo.End())
					{
						FocpLog(FOCP_LOG_ERROR, ("The config 'AcmUniCast[%u].Node(%u) is repeated defined", nAcmDomain, nNode));
						return false;
					}
					CIpAddr & oIpAddr = oDomain.oUniCastInfo[nNode];
					sVal = oAccess.GetVal("UniCastAddr", nLength);
					if(!sVal || sVal[nLength-1])
					{
						FocpLog(FOCP_LOG_ERROR, ("The config 'AcmUniCast[%u-%u].UniCastAddr is invalid", nAcmDomain, nNode));
						return false;
					}
					oIpAddr.nAddr = CFile::GetIpAddr(sVal);
					if(CFile::IsMulticastAddr(oIpAddr.nAddr))
					{
						FocpLog(FOCP_LOG_ERROR, ("The config 'AcmUniCast[%u-%u].UniCastAddr(%s) is invalid", nAcmDomain, nNode, sVal));
						return false;
					}
					if(nNode == oDomain.nNode && !CFile::CheckHostIp(oIpAddr.nAddr))
					{
						FocpLog(FOCP_LOG_ERROR, ("The config 'AcmUniCast[%u-%u].UniCastAddr(%s) is invalid", nAcmDomain, nNode, sVal));
						return false;
					}
					sVal = oAccess.GetVal("UniCastPort", nLength);
					if(!sVal || sVal[nLength-1])
					{
						FocpLog(FOCP_LOG_ERROR, ("The config 'AcmUniCast[%u-%u].UniCastPort is invalid", nAcmDomain, nNode));
						return false;
					}
					uint32 nPort = CFile::GetIpAddr(sVal);
					if(nPort >= 65536)
					{
						FocpLog(FOCP_LOG_ERROR, ("The config 'AcmUniCast[%u-%u].UniCastPort(%u) is invalid", nAcmDomain, nNode, nPort));
						return false;
					}
					oIpAddr.nPort = nPort;
				}
				if(oDomain.oUniCastInfo.GetSize() == 0)
				{
					FocpLog(FOCP_LOG_ERROR, ("The config 'AcmUniCast[%u] isn't existed", nAcmDomain));
					return false;
				}
				if(oDomain.oUniCastInfo.Find(oDomain.nNode) == oDomain.oUniCastInfo.End())
				{
					FocpLog(FOCP_LOG_ERROR, ("The config 'AcmUniCast[%u-%u] isn't existed", nAcmDomain, oDomain.nNode));
					return false;
				}
			}
		}
		pIt = m_oDomainInfo.First();
		for(; pIt!=pEnd; pIt=m_oDomainInfo.GetNext(pIt))
		{
			CAcmUdp* pUdp;
			uint32 nDomain = m_oDomainInfo.GetKey(pIt);
			CAcmDomain& oDomain = m_oDomainInfo.GetItem(pIt);
			if(oDomain.nDomainType == 1)//¶à²¥
			{
				pUdp = new CAcmUdp(this, nDomain, oDomain.nNode, true, true);
				pUdp->AddNode(oDomain.nNode, oDomain.nMcItfAddr, oDomain.nMcItfPort);
				if(!pUdp->InitMultiCast(oDomain.nMultiCastPort, oDomain.nMultiCastAddr,
					oDomain.nMultiCastTTL, oDomain.bAllowLoop?true:false))
				{
					delete pUdp;
					CString oAddrName;
					CIpAddr oIpAddr = {oDomain.nMultiCastAddr, oDomain.nMultiCastPort};
					CFile::GetIpFileName(oIpAddr, oAddrName);
					FocpLog(FOCP_LOG_ERROR, ("Initialize AcmMultiCast(Domain=%u, Node=%u, MultiCastAddr=%s) failure", nDomain, oDomain.nNode, oAddrName.GetStr()));
					return false;
				}
			}
			else
			{
				uint16 nUniPort = oDomain.oUniCastInfo[oDomain.nNode].nPort;
				pUdp = new CAcmUdp(this, nDomain, oDomain.nNode, false, true);
				if(!pUdp->InitUniCast(nUniPort))
				{
					delete pUdp;
					FocpLog(FOCP_LOG_ERROR, ("Initialize AcmUniCast(Domain=%u, Node=%u, UniCastPort=%u16) failure", nDomain, oDomain.nNode, nUniPort));
					return false;
				}
				CRbTreeNode* pNode = oDomain.oUniCastInfo.First();
				CRbTreeNode* pEnd2 = oDomain.oUniCastInfo.End();
				for(; pNode!=pEnd2; pNode=oDomain.oUniCastInfo.GetNext(pNode))
				{
					CIpAddr &oAddr = oDomain.oUniCastInfo.GetItem(pNode);
					if(!pUdp->AddNode(oDomain.oUniCastInfo.GetKey(pNode), oAddr.nAddr, oAddr.nPort))
					{
						delete pUdp;
						return false;
					}
				}
			}
			oDomain.pUdp = pUdp;
			if(oDomain.nSerialAbility)
				oDomain.pSerialModule = new CAcmSequenceModule(pUdp, oDomain.nSerialAbility, oDomain.nSerialCapacity, oDomain.nSerialMaxAck);
		}

		if(m_oDomainInfo.GetSize())
		{
			m_pTokenMoudle = CAcmTokenModule::GetInstance(false);
			if(pConfigSystem->OpenConfig(oAccess, "AcmVip"))
			{
				oAccess.OpenIdxVal();
				while(oAccess.Query())
				{
					CIpAddress oAddr;
					sVal = oAccess.GetVal("Domain", nLength);
					if(!sVal || sVal[nLength-1])
					{
						FocpLog(FOCP_LOG_ERROR, ("The config 'AcmVip.Domain' is invalid"));
						return false;
					}
					uint32 nDomain = CString::Atoi(sVal);
					if(CAcmUdp::QueryUdp(nDomain) == NULL)
						continue;
					sVal = oAccess.GetVal("Vip", nLength);
					if(!sVal || sVal[nLength-1])
					{
						FocpLog(FOCP_LOG_ERROR, ("The config 'AcmVip.Vip' is invalid"));
						return false;
					}
					if(!oAddr.SetIp(sVal, false, false, false))
					{
						FocpLog(FOCP_LOG_ERROR, ("The config 'AcmVip.Vip' is invalid"));
						return false;
					}
					CString oVip(sVal);
					sVal = oAccess.GetVal("Mask", nLength);
					if(sVal)
					{
						if(sVal[nLength-1])
						{
							FocpLog(FOCP_LOG_ERROR, ("The config 'AcmVip.Mask' is invalid"));
							return false;
						}
						if(!oAddr.SetIp(sVal, false, false, false))
						{
							FocpLog(FOCP_LOG_ERROR, ("The config 'AcmVip.Mask' is invalid"));
							return false;
						}
					}
					CString oMask(sVal);
					sVal = oAccess.GetVal("IfMac", nLength);
					if(!sVal || sVal[nLength-1])
					{
						FocpLog(FOCP_LOG_ERROR, ("The config 'AcmVip.IfMac' is invalid"));
						return false;
					}
					CString oIfMac(sVal);
					sVal = oAccess.GetVal("Default", nLength);
					if(!sVal || sVal[nLength-1])
					{
						FocpLog(FOCP_LOG_ERROR, ("The config 'AcmVip.Default' is invalid"));
						return false;
					}
					uint32 nDefault = CString::Atoi(sVal);
					DelIpv4Addr(oVip.GetStr());
					if(!m_pVipModule)
						m_pVipModule = CAcmVipModule::GetInstance();
					if(!m_pVipModule->AddToken(nDomain, oVip.GetStr(), oMask.GetStr(), oIfMac.GetStr(), nDefault))
					{
						FocpError(("Add vip(%s/%s on %s) failure", oVip.GetStr(), oMask.GetStr(), oIfMac.GetStr()));
						return false;
					}
				}
			}
		}

		CCmdSystem* pCmdSys = CCmdSystem::GetInstance();
		pCmdSys->RegisterCmd("/Acm/LsDomain", "LsDomain [DomainId] <CR>:\r\n\t list the domain information", AcmCmdFunc_LsDomain);
		pCmdSys->RegisterCmd("/Acm/LsSerial", "LsSerial [DomainId] <CR>:\r\n\t list the domain serial information", AcmCmdFunc_LsSerial);
		pCmdSys->RegisterCmd("/Acm/LsToken", "LsToken <CR>:\r\n\t list token information", AcmCmdFunc_LsToken);

		return true;
	}