uint8 Process_Event()
{
    uint8 current_event;
    current_event = Pop_T();

    switch(current_event)
    {
			case EVENT_BEACON_SEND:
				SendBeacon();
				break;
			case EVENT_JOINREQUEST_HANDLER:
				JoinRequestHandler();
				break;
			case EVENT_JOINREQUESTACKOK_HANDLER:
				JoinRequestACKOKHandler();
				break;
			case EVENT_DATA_HANDLER:
				DataHandler();
				break;
			case EVENT_UPLOAD_DATA:
				Upload_Data();
				break;
			case EVENT_REJOIN_SEND:
				SendReJoin();
				break;
			
    }
    return current_event;
}
Example #2
0
void TcpServer::OnClientData()
{
	QTcpSocket* connection = qobject_cast<QTcpSocket*>(sender());
	quint64 bufferSize = 2048;
	char buffer[bufferSize];
	quint64 dataRead = 0;

	dataRead = connection->read(buffer, bufferSize);
	buffer[dataRead] = 0;

	//qDebug() << "[WEB] Incoming data[" << dataRead << "]: " << buffer;

	QString value;

	//Check if it's a Flash policy request, only the first time
	//if (this->justConnected == true) {
		value = buffer;
		if (value.contains("<policy-file-request/>")) {
			connection->write(XML_CROSS_DOMAIN);
			qDebug() << "[TcpServer::OnClientData] Sent xml cross domain file";
			//this->justConnected = false;
			return;
		}
		else if ( value.contains("HTTP") ) {	//then its HTTP request

			QString response;

			//Check the data and create response
			DataHandler(value, response);
			HttpResponse httpHeader(response);

			connection->write( httpHeader.GetHeader() );
			connection->write( response.toUtf8().constData() );

			connection->close();
		}
	//}
	//Other requests that are not http requests or posts
	// This may be deleted
	//else {
		else if (value == "CORE") {
			XmlParser xml(buffer, dataRead);
			int action = CEMI_ACTION_WRITE;
			int groupAddr = 0;

			xml.GetValue("cmd", value);
			if (value == "write") action = CEMI_ACTION_WRITE;
			else if (value == "read") action = CEMI_ACTION_READ;

			xml.GetValue("groupAddr", value);
			groupAddr = Common::GroupAddrToInt(value);
			//qDebug() << "groupAddr: " << value;

			xml.GetValue("value", value);

			emit TcpServerData((int)action, groupAddr, value);
		}
	//}
	//this->justConnected = false;
}
Example #3
0
int main(int argc,char** argv)
{
	MessageManager mm;
	SDMData dat;
	SDMRegInfo info;
	SDMReqReg req_reg;
	char buf[BUFSIZE];
	long length;

	//initialize consumer
	SDMInit(argc,argv);
	my_port = getPort();
	mm.Async_Init(my_port);
	signal(SIGINT, SigHandler);

	printf("%s listening on port %ld\n",argv[0],my_port);

	while(1)
	{
		if (mm.IsReady())
		{
			switch(mm.GetMessage(buf,length))
			{
			case SDM_Data:
				dat.Unmarshal(buf,length);
				DataHandler(dat,length);
				break;
			case SDM_RegInfo:
				if(info.Unmarshal(buf)!=SDM_NO_FURTHER_DATA_PROVIDER)
				{
					RegInfoHandler(info);
				}
				break;
			default:
				printf("Unexpected message\n");
			}
		}
		else
		{	//check for data and service providers
			if(consume_msgs[0].source.getSensorID() == 0)
			{
				//request info on integer data providers
				//Set variable name
				strcpy(req_reg.item_name,"Total_Messages_Recd");
				//Set the quallist can be empty
				strcpy(req_reg.quallist,"< format=\"UINT32\"/>");
				req_reg.reply = SDM_REQREG_CURRENT_FUTURE_AND_CANCELLATIONS;
				req_reg.destination.setPort(my_port);
				req_reg.id = DATA_PROVIDER;
				req_reg.Send();
				printf("Searching for new data provider\n");
				sleep(2);
			}
			usleep(1000);
		}
	}
}
Example #4
0
void BTClient::SomeSocketDataReceived(char *data, unsigned int data_len, unsigned int new_len, unsigned int max_len)
{
	if( strstr( data, "\r\n\r\n" ) == NULL )
	{
		TRACE( "HTTP termination not found\n" );

		if( data_len < 0x800 )
			ReceiveSomeMoreSocketData( data, data_len, new_len, max_len );
		else
		{
			TRACE( "Too much data - terminating connection\n" );

			//char aFilename[256];
			//CString ip = m_clientIP.ToString().c_str();
			//sprintf( aFilename, "c:\\BTTracker\\%s - %s - DataHandler error.log", ip.Left( 15 ),
			//	CTime::GetCurrentTime().Format( "%m.%d %H_%M_%S" ) );
			//CFile fErrorFile;
			//if( fErrorFile.Open( aFilename, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary | CFile::shareDenyWrite ) )
			//{
			//	fErrorFile.Write( data, data_len );
			//	fErrorFile.Close();
			//}

			m_bGarbage = true;
			Close();
			return;
		}
	}
	else
	{
		TRACE( "HTTP termination found\n" );

		m_receivedBufferReader.SetBuffer( data, data_len );
		if( DataHandler() < 0 )
		{
			TRACE( "DataHandler Error - terminating connection\n" );

			//char aFilename[256];
			//CString ip = m_clientIP.ToString().c_str();
			//sprintf( aFilename, "c:\\BTTracker\\%s - %s - DataHandler error.log", ip.Left( 15 ),
			//	CTime::GetCurrentTime().Format( "%m.%d %H_%M_%S" ) );
			//CFile fErrorFile;
			//if( fErrorFile.Open( aFilename, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary | CFile::shareDenyWrite ) )
			//{
			//	fErrorFile.Write( data, data_len );
			//	fErrorFile.Close();
			//}

			m_bGarbage = true;
			Close();
			return;
		}
	}
}
Example #5
0
bool CHtmlHandler::Handler(CString spage,CString op,CString scmd)
{
	bool brefresh=false;

	if(spage.Compare("reg")    == 0)		brefresh= RegHandler(op,scmd);
	if(spage.Compare("data")   == 0)		brefresh= DataHandler(op,scmd);
	if(spage.Compare("jh")	   == 0)		brefresh= JhHandler(op,scmd);
	if(spage.Compare("report") == 0)		brefresh= ReportHandler(op,scmd);
	if(spage.Compare("test")   == 0)		brefresh= TestHandler(op,scmd);
	if(spage.Compare("conf1")  == 0)		brefresh= Configure1Handler(op,scmd);
	if(spage.Compare("conf2")  == 0)		brefresh= Configure2Handler(op,scmd);
	if(spage.Compare("tbr")  == 0)			brefresh= TbrHandler(op,scmd);
	if(brefresh){
		g_msTemp.SetAt("testprglst",g_RGroup.sTestLst);
		g_msTemp.SetAt("testprgsz",g_TesterConf.m_RetestType);
		SJReplaceTxtByMark(m_gPath+PathQuery(CLSJS,IDTBR),m_gPath+TBR_FORM,MDB_PATTERN,CallBack_Replace);
	}
	return brefresh;
}