Example #1
0
int ns__SendMission(struct soap *soap, char *MsgXml, char **ResponseXml)
{ 
	*ResponseXml = (char*)soap_malloc( soap,XMLRW_MAX_WSTR );
	char strText[XMLRW_MAX_WSTR]="";

	struct NAME_VALUE_S mapdata[3];
	mapdata[0].ins("DetectID","");
	mapdata[1].ins("CameraID","");
	mapdata[2].ins("Command","");

	if(ReadXML_UTF8_NoSub(MsgXml,mapdata,3))
	{

		if(mapdata[0].valuestr.length()==0 ||
			mapdata[1].valuestr.length()==0 ||
			mapdata[2].valuestr.length()==0 )
		{
			ErrorStringXML("-2","传入的报文字段参数缺失",strText,XMLRW_MAX_WSTR);
			goto ALL_EXIT;
		}

		long DetectID=-1;
		long CameraID=-1;
		long Command=-1;

		sscanf(mapdata[0].valuestr.c_str(),"%d",&DetectID);
		sscanf(mapdata[1].valuestr.c_str(),"%d",&CameraID);
		sscanf(mapdata[2].valuestr.c_str(),"%d",&Command);

		if(-1 == DetectID ||
			-1 ==CameraID ||
			-1 ==Command )
		{
			ErrorStringXML("-3","传入的报文字段参数有误",strText,XMLRW_MAX_WSTR);
			goto ALL_EXIT;
		}
		//检测摄像头是否存在
		if(false == OracleIO.DEVICE_IfCamera(CameraID))
		{
			ErrorStringXML("-4","摄像头不存在",strText,XMLRW_MAX_WSTR);
			goto ALL_EXIT;
		}
		//检测识别服务器是否存在
		if(false == OracleIO.DEVICE_IfDetectServer(DetectID))
		{
			ErrorStringXML("-5","识别服务器不存在",strText,XMLRW_MAX_WSTR);
			goto ALL_EXIT;
		}
	
		//测试识别服务器是否正常
		if(false == OracleIO.DEVICE_IfDetectServerEnable(DetectID))
		{
			ErrorStringXML("-6","识别服务器故障",strText,XMLRW_MAX_WSTR);
			goto ALL_EXIT;
		}
		
		if(Command)
		{
			long DetectDeviceID=0; 
			//查找是否有正在识别的摄像头
			if(false ==	OracleIO.DEVICE_SearchForStop(&DetectDeviceID,CameraID))
			{
				ErrorStringXML("-98","内部异常数据库出错",strText,XMLRW_MAX_WSTR);
				goto ALL_EXIT;
			}
			if(DetectDeviceID>0)
			{
				char strtemp[XMLRW_MAX_WSTR]="";
				sprintf(strtemp,"正在识别,服务器ID:%d",DetectDeviceID);
				ErrorStringXML("-7",strtemp,strText,XMLRW_MAX_WSTR);
				goto ALL_EXIT;
			}
			//测试识别服务器是否占用
			if(false == OracleIO.DEVICE_IfDetectServerPlay(DetectID))
			{
				ErrorStringXML("-8","识别服务器被占用",strText,XMLRW_MAX_WSTR);
				goto ALL_EXIT;
			}

		}
	
		if(false == OracleIO.Mission_ADD(DetectID,CameraID,GlobalConfig.UserID,Command))
		{
			ErrorStringXML("-98","内部异常数据库出错",strText,XMLRW_MAX_WSTR);
			goto ALL_EXIT;
		}

		ErrorStringXML("0","数据下发成功",strText,XMLRW_MAX_WSTR);
	}
	else
	{
		ErrorStringXML("-1","传入的报文无法解析",strText,XMLRW_MAX_WSTR);
		goto ALL_EXIT;
	}

ALL_EXIT:
	CHAR2UTF8(strText,*ResponseXml,XMLRW_MAX_WSTR);

	return SOAP_OK;
}