Esempio n. 1
0
bool	NetworkMoudle::ReadControlPack(ControlPackage* pack,bool withTimeOut)		// 读取控制包
{

	// 首先读取头部
	PackageHead head;

	char buf[1024] = {0};

	int len = 0;

	if (withTimeOut)
	{
		len = TryRead(buf,PACKAGE_HEAD_LEN);//recv(fd,buf,PACKAGE_HEAD_LEN,0);
	}
	else
	{
		len = Read(buf,PACKAGE_HEAD_LEN);//recv(fd,buf,PACKAGE_HEAD_LEN,0);
	}

	if (len <= 0)
	{
		return false;
	}

	head.Analyze(buf,len);

	pack->m_PackageHead = head;

	memset(buf,0,SZ_1024_LENGTH);

	if (withTimeOut)
	{
		len = TryRead(buf,head.GetPackageLength());//recv(fd,controlBuffer,head.GetPackageLength(),0);
	}
	else
	{
		len = Read(buf,head.GetPackageLength());
	}

	if (len <= 0)
	{
		return false;
	}

	pack->Analyze(buf,len);

	return true;

}
Esempio n. 2
0
bool	NetworkMoudle::ReadDataPackBody(PackageHead& head,DataPackage* pack,bool withTimeOut)
{
	char buf[1024] = {0};

	int len = 0;

	pack->m_PackageHead = head;

	memset(buf,0,SZ_1024_LENGTH);

	if (withTimeOut)
	{
		len = TryRead(buf,head.GetPackageLength());//recv(fd,controlBuffer,head.GetPackageLength(),0);
	}
	else
	{
		len = Read(buf,head.GetPackageLength());
	}

	if (len <= 0)
	{
		return false;
	}

	pack->Analyze(buf,strlen(buf));

	return true;
}
Esempio n. 3
0
//----------------------------------------------------------------------------------------------
void CRingBuffer::Read(unsigned char* pData, unsigned int Size)
{
	bool Res = false;
	while(!Res)
	{
		Res = TryRead(pData, Size);
		if(!Res)
		{
			Sleep(0);
		}
	}
}
Esempio n. 4
0
bool	NetworkMoudle::ReadDataPack(DataPackage& pack,bool withTimeOut)
{
	char buf[SZ_1024_LENGTH] = {0};

	int len = 0;
	if(withTimeOut)
	{
		len = TryRead(buf,PACKAGE_HEAD_LEN);//recv(m_nServerfd,buf,PACKAGE_HEAD_LEN,0);
	}
	else
	{
		len = Read(buf,PACKAGE_HEAD_LEN);
	}

	if (len <= 0)
	{
		return false;
	}

	pack.m_PackageHead.Analyze(buf,PACKAGE_HEAD_LEN);
	memset(buf,0,SZ_1024_LENGTH);

	if(withTimeOut)
	{
		len = TryRead(buf,pack.m_PackageHead.GetPackageLength());//recv(m_nServerfd,buf,PACKAGE_HEAD_LEN,0);
	}
	else
	{
		len = Read(buf,pack.m_PackageHead.GetPackageLength());
	}

	if (len <= 0)
	{
		return false;
	}
	pack.Analyze(buf,len);
	return true;

}
Esempio n. 5
0
void CDatagrams::OnRun()
{
	if ( ! IsValid() ) return;

	DHT.OnRun();

	TryWrite();
	ManageOutput();

	do
	{
		ManagePartials();
	}
	while ( TryRead() );

	Measure();
}
Esempio n. 6
0
bool	NetworkMoudle::ReadPackageHead(PackageHead& head,bool withTimeOut)
{
	char buf[1024] = {0};

	int len = 0;

	if (withTimeOut)
	{
		len = TryRead(buf,PACKAGE_HEAD_LEN);
	}
	else
	{
		len = Read(buf,PACKAGE_HEAD_LEN);
	}

	if (len <= 0)
	{
		return false;
	}

	head.Analyze(buf,len);

	return true;
}
Esempio n. 7
0
EXPORT_C_(void) s2r_replay(HWND hwnd, HINSTANCE hinst, LPSTR filename, int nCmdShow)
{
#ifndef ENABLE_NEW_IOPDMA_SPU2
	int events=0;

	Running = true;

#ifdef WIN32
	AllocConsole();
	SetConsoleCtrlHandler(HandlerRoutine, TRUE);
	
	conprintf("Playing %s file on %x...",filename,hwnd);

#endif

	// load file
	FILE *file=fopen(filename,"rb");

	if(!file)
	{
		conprintf("Could not open the replay file.");
		return;
	}
	// if successful, init the plugin

#define TryRead(dest,size,count,file) if(fread(dest,size,count,file)<count) { conprintf("Error reading from file.");  goto Finish;  /* Need to exit the while() loop and maybe also the switch */ }

	TryRead(&CurrentIOPCycle,4,1,file);
	
	replay_mode=true;

	InitWaitSync(); // Initialize the WaitSync stuff

	SPU2init();
	SPU2irqCallback(dummy1,dummy4,dummy7);
	SPU2setClockPtr(&CurrentIOPCycle);
	SPU2open(&hwnd);

	CurrentIOPCycle=0;

	SPU2async(0);

	while(!feof(file) && Running)
	{
		u32 ccycle=0;
		u32 evid=0;
		u32 sval=0;
		u32 tval=0;

		TryRead(&ccycle,4,1,file);
		TryRead(&sval,4,1,file);

		evid=sval>>29;
		sval&=0x1FFFFFFF;

		u32 TargetCycle = ccycle * 768;

		while(TargetCycle > CurrentIOPCycle)
		{
			u32 delta = WaitSync(TargetCycle);
			SPU2async(delta);
		}
		
		switch(evid)
		{
		case 0:
			SPU2read(sval);
			break;
		case 1:
			TryRead(&tval,2,1,file);
			SPU2write(sval,tval);
			break;
		case 2:
			TryRead(dmabuffer,sval,2,file);
			SPU2writeDMA4Mem(dmabuffer,sval);
			break;
		case 3:
			TryRead(dmabuffer,sval,2,file);
			SPU2writeDMA7Mem(dmabuffer,sval);
			break;
		default:
			// not implemented
			return;
			break;
		}
		events++;
	}

Finish:

	//shutdown
	SPU2close();
	SPU2shutdown();
	fclose(file);

	conprintf("Finished playing %s file (%d cycles, %d events).",filename,CurrentIOPCycle,events);

#ifdef WIN32
	FreeConsole();
#endif

	replay_mode=false;
#endif
}