Esempio n. 1
0
bool Protocol::onRegist(Packet& inPacket)
{
	RegistPacket Register(inPacket);
	DataStore data;
	RegistResponsePacket::REGIST_RESULT_CODE result =
			RegistResponsePacket::REGISTE_OK;
	DataStore::Vehicle_Record record;
	do
	{
		if (!data.FindTerminalRecord(Register.GetTerminalID().c_str()))
		{
			result = RegistResponsePacket::NO_RECORED_VEHICLE;
			break;
		}

		if (!data.FindVechileRecord(Register.GetTerminalVIN().c_str()))
		{
			result = RegistResponsePacket::NO_RECORDER_TERMINAL;
			break;
		}

		if (data.GetVechicleRecord(record))
		{
			if (record.TerminalID.empty())
			{
				setRegisterRecord(Register, record);
				if (!data.RegisteTerminal(record))
					result = RegistResponsePacket::DUP_REGISTED_TERMINAL;
			}
			else
				result = RegistResponsePacket::DUP_REGISTED_VEHICLE;
		}

	} while (false);

	RegistResponsePacket response(inPacket.GetSerialNumber(),
			inPacket.GetMobileNumber().c_str(), result,
			record.strAuthCode.c_str());

	outQueue.Push(response);
	return true;
}