123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- /**
- * Tencent is pleased to support the open source community by making Tars available.
- *
- * Copyright (C) 2016THL A29 Limited, a Tencent company. All rights reserved.
- *
- * Licensed under the BSD 3-Clause License (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * https://opensource.org/licenses/BSD-3-Clause
- *
- * 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.
- */
- #ifndef __TARS_ENDPOINT_INFO_H_
- #define __TARS_ENDPOINT_INFO_H_
- //#include "servant/Global.h"
- #include "util/tc_socket.h"
- #include "util/tc_clientsocket.h"
- #include "servant/EndpointF.h"
- //#include "AuthF.h"
- #if TARGET_PLATFORM_WINDOWS
- #include <WS2tcpip.h>
- #endif
- using namespace std;
- namespace tars
- {
- /**
- * 地址信息IP:Port
- */
- class EndpointInfo
- {
- public:
- /**
- * 构造函数
- */
- EndpointInfo();
- /**
- *
- * @param ep
- */
- EndpointInfo(const TC_Endpoint &ep, const string &setDivision="");
- /**
- * 构造函数
- * @param host
- * @param port
- * @param type
- */
- EndpointInfo(const EndpointF &ep);
- /**
- * get endpoint
- * @return
- */
- inline const TC_Endpoint &getEndpoint() const { return _ep; }
- /**
- *
- * @return
- */
- inline TC_Endpoint &getEndpoint() { return _ep; }
- /**
- * 地址的字符串描述(用于比较)
- *
- * @return string
- */
- inline const string & cmpDesc() const { return _cmpDesc; }
- /**
- * 地址的字符串描述
- *
- * @return string
- */
- inline const string & desc() const { return _desc; }
- /**
- *
- * @return
- */
- inline bool isTcp() const { return _ep.isTcp(); }
- /**
- *
- * @return
- */
- inline bool isSsl() const { return _ep.isSSL(); }
- /**
- *
- *
- */
- inline bool isUdp() const { return _ep.isUdp(); }
- /**
- * 获取主机名
- *
- * @return const string&
- */
- const string &host() const { return _ep.getHost(); }
- /**
- * 获取端口号
- *
- * @return uint16_t
- */
- uint16_t port() const { return _ep.getPort(); }
- /**
- * 获取路由状态(不再使用)
- * @return int32_t
- */
- inline int32_t grid() const { return _ep.getGrid(); }
- /*
- * 获取qos的descp值
- */
- inline int32_t qos() const {return _ep.getQos();}
- /*
- * 获取节点的静态权重值
- */
- inline int weight() const {return _ep.getWeight();}
- /**
- * @brief 获取节点的权重使用方式
- */
- inline unsigned int getWeightType() const { return _ep.getWeightType(); }
- /**
- * 返回端口类型
- *
- * @return EndpointInfo::EType
- */
- inline TC_Endpoint::EType type() const { return _ep.getType(); }
- /**
- *返回set分组信息
- *
- *@return string
- */
- inline const string& setDivision() const { return _setDivision; }
- /*
- * 获取认证类型
- */
- inline TC_Endpoint::AUTH_TYPE authType() const { return _ep.getAuthType(); }
- /**
- * @brief is ipv6 socket or not
- * @return true if is ipv6
- */
- inline bool isIPv6() const { return _ep.isIPv6(); }
- /**
- * 等于
- * @param r
- *
- * @return bool
- */
- inline bool operator == (const EndpointInfo& r) const { return (_cmpDesc == r._cmpDesc); }
- /**
- * 小于
- * @param r
- *
- * @return bool
- */
- inline bool operator < (const EndpointInfo& r) const { return (_cmpDesc < r._cmpDesc); }
- protected:
- /**
- * 地址的字符串描述
- * @param bWithSetInfo,标识
- * @return string
- */
- string createDesc() const { return _ep.toString(); }
- /**
- * 详细地址字符串描述
- *
- * @return string
- */
- string createCompareDesc();
- private:
- /**
- * 服务地址
- */
- TC_Endpoint _ep;
- /**
- *set分组信息
- */
- string _setDivision;
- /**
- * 比较的地址字符串描述
- */
- string _cmpDesc;
- /**
- * 地址的字符串描述
- */
- string _desc;
- };
- /////////////////////////////////////////////////////////////////////////////
- }
- #endif
|