in provider/fsof/FSOFProtocol.php [45:87]
private function checkHeader($client_id, $fsof_data)
{
$request = NULL;
if (!isset($this->requests[$client_id]))
{
//新连接
$this->logger->debug("new request from {$client_id}");
if (!empty($this->buffer_header[$client_id]))
{
$fsof_data = $this->buffer_header[$client_id].$fsof_data;
}
$this->buffer_header[$client_id] = $fsof_data;
//数据长度还不够
if (strlen($fsof_data) < DubboParser::PACKAGE_HEDA_LEN)
{
return false;
}
else
{
unset($this->buffer_header[$client_id]);
$request = new DubboRequest();
$request->setFullData($fsof_data);
$request = $this->parser->parseRequestHeader($request);
//解析失败
if ($request == false)
{
$this->logger->error("parse request Header fail. fsof_data=" . $fsof_data);
return false;
}
//保存请求
$this->logger->debug("create one request for {$client_id}");
$this->requests[$client_id] = $request;
}
}
else
{
$this->logger->debug("append request data for {$client_id}");
$request = $this->requests[$client_id];
$request->setFullData($fsof_data);
}
return $request;
}