コード例 #1
0
bool ZeroMQPublisher::test(uint32_t datasize)
{
	m_times.clear();
	zmq::message_t command(1);
	*(char*)(command.data())='S'; //READY
	mp_commandpub->send(command);
	mp_commandsub->recv(&command);
	if(*(char*)command.data()!=2)
		return false;
	//cout << endl;
	//BEGIN THE TEST:
	uint32_t result;
	m_clock.setTimeNow(&m_t1);
	for(uint32_t i = 0;i<(uint32_t)n_samples;++i)
	{
		zmq::message_t latency_out(datasize+4);
		zmq::message_t latency_in;
		memset(latency_out.data(),65,datasize+4);
#if defined(_WIN32)
		sprintf_s((char*)(latency_out.data()),datasize+4, "%d", i);
#else
		sprintf((char*)(latency_out.data()),"%d",i);
#endif
		mp_datapub->send(latency_out);
		mp_datasub->recv(&latency_in);
		//		std::istringstream iss(static_cast<char*>(latency_in.data()));
		//		cout << "RECEIVED DATA: "<< iss.str()<< endl;

		sscanf_s((char*)latency_in.data(),"%d",&result);
		//	cout << "recevied result: "<< result << " and i is: "<<i << endl;
		//  cout << "SENT/REC: "<< *(uint32_t*)latency_out.data() <<" / "<<*(uint32_t*)latency_in.data()<<endl;
		if(result != i)
		{
			cout << "RECEIVED BAD MESSAGE, STOPPING TEST"<<endl;
			*(char*)(command.data()) = 10;
			mp_commandpub->send(command);
			return false;
		}


	}
	m_clock.setTimeNow(&m_t2);
	m_times.push_back(TimeConv::Time_t2MicroSecondsDouble(m_t2)
	-TimeConv::Time_t2MicroSecondsDouble(m_t1)-m_overhead);
	analizeTimes(datasize);
	printStat(m_stats.back());

	return true;
}
コード例 #2
0
ファイル: ZeroMQSubscriber.cpp プロジェクト: dhood/Fast-RTPS
bool ZeroMQSubscriber::test(uint32_t datasize)
{
	cout << "Preparing test with data size: " << datasize+4<<endl;
	zmq::message_t command(1);



	//cout << "WAITING FOR COMMAND"<<endl;
	mp_commandsub->recv(&command);
	//cout << "COMMAND RECEIVED"<<endl;
	if(*(char*)command.data()!='S')
	{
		return false;
	}
	*(char*)command.data()=2;
	mp_commandpub->send(command);
	for(uint32_t i = 0;i<(uint32_t)n_samples;++i)
	{
		//cout << "waiting for data "<<endl;
		zmq::message_t latency_in;
		zmq::message_t latency_out(datasize+4);
		mp_datasub->recv(&latency_in);
		if(n_sub == 1)
		{
			//cout << "received of size:"<<latency_in.size()<<endl;
			//		std::istringstream iss(static_cast<char*>(latency_in.data()));
			//		cout << "RECEIVED DATA: "<< iss.str()<< endl;
			//
			//		memset(latency_out.data(),'S',datasize+4);
			memcpy(latency_out.data(),latency_in.data(),latency_in.size());
			//	cout << "REC/SENT: "<< *(uint32_t*)latency_in.data() <<" / "<<*(uint32_t*)latency_out.data()<<endl;
			mp_datapub->send(latency_out);
		}
	}
	cout << "TEST OF SiZE: "<< datasize +4 << " ENDS"<<endl;
	eClock::my_sleep(100);


	return true;
}
コード例 #3
0
ファイル: latency.c プロジェクト: 10114395/android-5.0.0_r5
void latency_q2c(struct d_info *dip, __u64 tstamp, __u64 latency)
{
	plat_x2c(dip->q2c_plat_handle, tstamp, latency);
	latency_out(dip->q2c_ofp, tstamp, latency);
}