blob: 2d64f8c106bb3fa1a17782c7b34298ef52622ed3 [file] [log] [blame]
<?php
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
namespace com\fenqile\fsof\common\protocol\fsof;
use com\fenqile\fsof\consumer\Type;
class DubboRequest
{
//包头字段
private $twoWay = true;
private $heartbeatEvent = false;
private $sn; //请求序号
private $serialization;
private $fullData; //报文(包含消息头)
private $dataLen; //数据报文长度
private $requestLen; //请求报文总长度(即消息头+消息体的长度)
//包体字段
private $dubboVersion = "2.0.0"; //dubbo 版本
private $service; //服务名称
private $version; //服务版本
private $group; //服务group
private $method; //方法名
private $timeout; //超时时间(ms)
private $types; //参数类型
private $paramNum = 0; //参数个数
private $params = array(); //调用$method时的参数
private $attach = array();
/**
* @return boolean
*/
public function isTwoWay()
{
return $this->twoWay;
}
/**
* @param boolean $twoWay
*/
public function setTwoWay($twoWay)
{
$this->twoWay = $twoWay;
}
/**
* @return mixed
*/
public function getDataLen()
{
return $this->dataLen;
}
/**
* @param mixed $dataLen
*/
public function setDataLen($dataLen)
{
$this->dataLen = $dataLen;
}
/**
* @return mixed
*/
public function getRequestLen()
{
return $this->requestLen;
}
/**
* @param mixed $requestLen
*/
public function setRequestLen($requestLen)
{
$this->requestLen = $requestLen;
}
/**
* @return boolean
*/
public function isHeartbeatEvent()
{
return $this->heartbeatEvent;
}
/**
* @param boolean $heartbeatEvent
*/
public function setHeartbeatEvent($heartbeatEvent)
{
$this->heartbeatEvent = $heartbeatEvent;
}
/**
* @return mixed
*/
public function getSn()
{
return $this->sn;
}
/**
* @param mixed $sn
*/
public function setSn($sn)
{
$this->sn = $sn;
}
/**
* @return mixed
*/
public function getTimeout()
{
return $this->timeout;
}
/**
* @param mixed $timeout
*/
public function setTimeout($timeout)
{
$this->timeout = $timeout;
}
/**
* @return mixed
*/
public function getFullData()
{
return $this->fullData;
}
/**
* @param mixed $fullData
*/
public function setFullData($fullData)
{
$this->fullData = $fullData;
}
/**
* @return string
*/
public function getDubboVersion()
{
return $this->dubboVersion;
}
/**
* @param string $dubboVersion
*/
public function setDubboVersion($dubboVersion)
{
$this->dubboVersion = $dubboVersion;
}
/**
* @return mixed
*/
public function getService()
{
return $this->service;
}
/**
* @param mixed $service
*/
public function setService($service)
{
$this->service = $service;
}
/**
* @return mixed
*/
public function getVersion()
{
return $this->version;
}
/**
* @param mixed $version
*/
public function setVersion($version)
{
$this->version = $version;
}
/**
* @return mixed
*/
public function getGroup()
{
return $this->group;
}
/**
* @param mixed $group
*/
public function setGroup($group)
{
$this->group = $group;
}
/**
* @return mixed
*/
public function getMethod()
{
return $this->method;
}
/**
* @param mixed $method
*/
public function setMethod($method)
{
$this->method = $method;
}
/**
* @return mixed
*/
public function getTypes()
{
return $this->types;
}
/**
* @param mixed $types
*/
public function setTypes($types)
{
$this->types = $types;
}
/**
* @return array
*/
public function getParams()
{
return $this->params;
}
/**
* @param array $params
*/
public function setParams($params)
{
$this->params = $params;
foreach ($this->params as &$value) {
if ($value instanceof Type) {
$value = $value->object;
} elseif (is_object($value)) {
$value = new \stdClass();
foreach ($value as $property => $val) {
$value->$property = $val;
}
}
}
}
/**
* @return array
*/
public function getAttach()
{
return $this->attach;
}
/**
* @param array $attach
*/
public function setAttach($attach)
{
$this->attach = $attach;
}
/**
* @return mixed
*/
public function getSerialization()
{
return $this->serialization;
}
/**
* @param mixed $serialization
*/
public function setSerialization($serialization)
{
$this->serialization = $serialization;
}
/**
* @return int
*/
public function getParamNum()
{
return $this->paramNum;
}
/**
* @param int $paramNum
*/
public function setParamNum($paramNum)
{
$this->paramNum = $paramNum;
}
//用于监控service中各方法的性能
public $startTime; //开始处理请求的时间
public $endTime; //请求处理结束的时间
public $host; //记录acc日志中的目标IP
public $port; //记录acc日志中的目标端口
public $reqInfo = null; //swoole框架记录的过载信息
public $environment = "prod";
public function __toString()
{
$ret = sprintf("%s:%s:%s->%s", $this->service, $this->version, $this->group, $this->method);
return $ret;
}
}