public function onOneRequest()

in provider/fsof/FSOFProtocol.php [324:379]


	public function onOneRequest($client_id, $request)
	{

		if($this->parser->isHearBeatRequest($request))
		{
			//心跳请求,不需要数据回送
		}
		else if($this->parser->isNormalRequest($request) || $this->parser->isOneWayRequest($request))
		{
			//获取配置信息
			$appConfig = $this->getAppConfig();
			
			//Number of packet loss in a row
			$lossNumber = $appConfig['fsof_setting']['loss_number'];
			
			//判断是否开启过载丢包模式
			$restOfLostNum = $this->server->getOverloadMonitor()->getLossNum();
			if($restOfLostNum > 0)
			{
				// 加入对过载丢失数据的统计
				$this->server->getAppMonitor()->onRequest($request);
				
				//回复客户端
				if($restOfLostNum >= $lossNumber)
				{
					if($this->swoole_server->exist($client_id))
					{
						$result = 'provider连续过载, 开启丢消息模式';
						$this->packResponse($client_id, $request, $result, false, true);
					}
				}
				else
				{
					if($this->swoole_server->exist($client_id))
					{
						$result = 'provider开启丢消息模式, 连续丢包中...';
						$this->packResponse($client_id, $request, $result, false, true);
					}
				}
				
				//递减丢包数量
				$this->server->getOverloadMonitor()->lossNumDecr();

				//监控请求错误处理数量
				$this->server->getAppMonitor()->onError($request);
			}
			else
			{
				$this->requestProcessor($client_id,$request);
			}
		}
		else
		{
            $this->logger->error("invalid request = $request");
		}
	}