Esempio n. 1
0
//--------------------------------------------------------------------------
bool VeRTTI::CopyName(VeChar8* acNameBuffer, VeUInt32 u32MaxSize) const
{
	const VeChar8* pcName = GetName();
	if(!pcName || !acNameBuffer)
	{
		VeStrcpy(acNameBuffer, u32MaxSize, "\0");
		return false;
	}

	VeStrcpy(acNameBuffer, u32MaxSize, pcName);
	return true;
}
Esempio n. 2
0
//--------------------------------------------------------------------------
VE_BOOL VeWindows::AddDisplay(LPSTR DeviceName)
{
	VeDevice::VideoDisplay kDisplay;
	DisplayData* pkDisplayData;
	VeDevice::DisplayMode kMode;
	DISPLAY_DEVICE kDevice;
	if(!GetDisplayMode(DeviceName, ENUM_CURRENT_SETTINGS, &kMode))
	{
		return VE_FALSE;
	}
	pkDisplayData = VE_NEW DisplayData;
	if(!pkDisplayData)
	{
		return VE_FALSE;
	}
	VeStrcpy(pkDisplayData->m_acDeviceName, DeviceName);
	
	kDevice.cb = sizeof(kDevice);
	if (EnumDisplayDevices(DeviceName, 0, &kDevice, 0))
	{
		kDisplay.m_kName = kDevice.DeviceString;
	}
	kDisplay.m_kDesktopMode = kMode;
	kDisplay.m_kCurrentMode = kMode;
	kDisplay.m_spDriverData = pkDisplayData;
	m_kDisplays.PushBack(kDisplay);
	return VE_TRUE;
}
Esempio n. 3
0
//--------------------------------------------------------------------------
VeFixedString ToStr(const TCHAR* pcStr) noexcept
{
	VeChar8* pcBuffer = nullptr;
	VeInt32 i32Size;
#	ifdef _UNICODE
	i32Size = WideCharToMultiByte(CP_UTF8, 0, pcStr, -1, 0, 0, 0, FALSE);
	if (i32Size > 0)
	{
		pcBuffer = VeStackAlloc(VeChar8, i32Size + 1);
		WideCharToMultiByte(CP_UTF8, 0, pcStr,
			-1, pcBuffer, i32Size, 0, FALSE);
	}
#	else
	i32Size = (VeInt32)VeStrlen(pcStr);
	if (i32Size > 0)
	{
		pcBuffer = VeStackAlloc(VeChar8, i32Size + 1);
		VeStrcpy(pcBuffer, i32Size + 1, pcStr);
	}
#	endif
	VeFixedString kRes;
	if (pcBuffer)
	{
		kRes = pcBuffer;
		VeStackFree(pcBuffer);
		pcBuffer = nullptr;
	}
	return kRes;
}
Esempio n. 4
0
//--------------------------------------------------------------------------
void VeWindows::InitDisplayModes()
{
	DISPLAY_DEVICE kDevice;
	kDevice.cb = sizeof(DISPLAY_DEVICE);
	for(VeInt32 i32Pass(0); i32Pass < 2; ++i32Pass)
	{
		for(VeDWord i(0); ; ++i)
		{
			VeChar8 acDeviceName[32];
			if(!EnumDisplayDevicesA(NULL, i, &kDevice, 0)) 
				break;
			if(!(kDevice.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP))
				continue;
			if(i32Pass == 0)
			{
				if(!(kDevice.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE))
					continue;
			}
			else
			{
				if(kDevice.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE)
					continue;
			}
			VeStrcpy(acDeviceName, kDevice.DeviceName);
			VeDWord dwCount(0);
			for(VeDWord j(0); ; ++j)
			{
				if(!EnumDisplayDevices(acDeviceName, j, &kDevice, 0))
					break;
				if(!(kDevice.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP))
					continue;
				if(i32Pass == 0)
				{
					if(!(kDevice.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE))
						continue;
				}
				else
				{
					if(kDevice.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE)
						continue;
				}
				dwCount += AddDisplay(kDevice.DeviceName);
			}
			if(dwCount == 0)
			{
				AddDisplay(acDeviceName);
			}
		}
	}
	VE_ASSERT(m_kDisplays.Size());
}
Esempio n. 5
0
//--------------------------------------------------------------------------
VeFixedString ToStrReplaceIegality(const TCHAR* pcStr) noexcept
{
	VeChar8* pcBuffer = nullptr;
	VeInt32 i32Size;
#	ifdef _UNICODE
	i32Size = WideCharToMultiByte(CP_UTF8, 0, pcStr, -1, 0, 0, 0, FALSE);
	if (i32Size > 0)
	{
		pcBuffer = VeStackAlloc(VeChar8, i32Size + 1);
		WideCharToMultiByte(CP_UTF8, 0, pcStr,
			-1, pcBuffer, i32Size, 0, FALSE);
	}
#	else
	i32Size = (VeInt32)VeStrlen(pcStr);
	if (i32Size > 0)
	{
		pcBuffer = VeStackAlloc(VeChar8, i32Size + 1);
		VeStrcpy(pcBuffer, i32Size + 1, pcStr);
	}
#	endif
	VeFixedString kRes;
	if (pcBuffer)
	{
		{
			VeChar8* pcTemp = pcBuffer;
			while (*pcTemp)
			{
				VeChar8 c = *pcTemp;
				if (c == ' ' || c == '/' || c == '\\' || c == ':' || c == '#' || c == '.')
				{
					*pcTemp = '_';
				}
				++pcTemp;
			}
		}
		kRes = pcBuffer;
		VeStackFree(pcBuffer);
		pcBuffer = nullptr;
	}
	return kRes;
}
Esempio n. 6
0
//--------------------------------------------------------------------------
void Server::Start()
{
	VeXMLElement* pkServer = m_kConfig.RootElement()->FirstChildElement("Server");
	const VeChar8* pcVersion = pkServer->FirstChildElement("Version")->GetText();
	{
		VeZeroMemory(&m_kVersion, sizeof(Version));
		VeChar8 acBuffer[64];
		VeStrcpy(acBuffer, 64, pcVersion);
		VeChar8* pcContext;
		const VeChar8* pcTemp = VeStrtok(acBuffer, ".", &pcContext);
		VeUInt32 i(0);
		while(pcTemp && i < 4)
		{
			m_kVersion.m_au8Version[i] = VeAtoi(pcTemp);
			pcTemp = VeStrtok(NULL, ".", &pcContext);
			++i;
		}
	}
	VeUInt16 u16Port;
	VE_ASSERT_EQ(VeStringA(pkServer->FirstChildElement("ServerPort")->GetText()).To(u16Port), true);
	VeUInt16 u16MaxConnections;
	VE_ASSERT_EQ(VeStringA(pkServer->FirstChildElement("MaxConnections")->GetText()).To(u16MaxConnections), true);
	VeUInt32 u32TimeOut;
	VE_ASSERT_EQ(VeStringA(pkServer->FirstChildElement("TimeOut")->GetText()).To(u32TimeOut), true);
	const VeChar8* pcPassword = pkServer->FirstChildElement("Password")->GetText();

	m_pkPeer->SetIncomingPassword(pcPassword, (VeInt32)VeStrlen(pcPassword));
	m_pkPeer->SetTimeoutTime(u32TimeOut, UNASSIGNED_SYSTEM_ADDRESS);

	SocketDescriptor akSocketDesc[2];
	akSocketDesc[0].port = u16Port;
	akSocketDesc[0].socketFamily = AF_INET;
	akSocketDesc[1].port = u16Port;
	akSocketDesc[1].socketFamily = AF_INET6;

	bool bRes = m_pkPeer->Startup(u16MaxConnections, akSocketDesc, 2, 30) == VENET_STARTED;
	m_pkPeer->SetMaximumIncomingConnections(u16MaxConnections);

	if(bRes)
	{
		printf("%s Server Started, Waiting For Connections.\n", m_kName);
	}	
	else
	{
		bRes = m_pkPeer->Startup(u16MaxConnections, akSocketDesc, 1, 30) == VENET_STARTED;
		if(!bRes)
		{
			VeChar8 acBuffer[256];
			VeSprintf(acBuffer, 256, "%s Server failed to start. Terminating.", m_kName);
			puts(acBuffer);
			exit(1);
		}
		printf("%s Server Started, Waiting For Connections.\n", m_kName);
	}

	m_pkPeer->SetOccasionalPing(true);
	m_pkPeer->SetUnreliableTimeout(1000);

	DataStructures::List< VENetSmartPtr<VENetSocket> > kSockets;
	m_pkPeer->GetSockets(kSockets);
	for(VeUInt32 i(0); i < kSockets.Size(); ++i)
	{
		printf("Ports Used By :%i. %i\n", i+1, kSockets[i]->boundAddress.ToString(true));
	}
	for(VeUInt32 i(0); i < m_pkPeer->GetNumberOfAddresses(); ++i)
	{
		printf("\n本机可提供服务的IP :\n%i. %s\n", i+1, m_pkPeer->GetLocalIP(i));
	}
	printf("%s Server GUID is %s\n", m_kName, m_pkPeer->GetGuidFromSystemAddress(UNASSIGNED_SYSTEM_ADDRESS).ToString());
	
	{
		VeXMLElement* pkDBLink = m_kConfig.RootElement()->FirstChildElement("DBLink");
		VeStringA kAccount = pkDBLink->FirstChildElement("Account")->GetText();
		VeStringA kPassword = pkDBLink->FirstChildElement("Password")->GetText();
		VeStringA kDBSource = pkDBLink->FirstChildElement("DBSource")->GetText();
        printf("\nDBSource :%s\n", pkDBLink->FirstChildElement("DBSource")->GetText());
		m_kDatabase = VE_NEW DBBusiness(kAccount,kPassword,kDBSource);
	}
	
	LoadProperties();
	m_u64ServerStartTime = m_u64ServerTime;
	AttachByDelay(TIMER(_SyncToDatabase), SAVE_DB_DELAY);
	OnStart();
}