feat(hos_client_create, hos_client_destory): 多次调用destory不会导致重复释放

This commit is contained in:
彭宣正
2020-12-14 17:24:58 +08:00
parent 505d529c32
commit 10b370e486
55976 changed files with 8544395 additions and 2 deletions

View File

@@ -0,0 +1,361 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#include <aws/elasticloadbalancingv2/model/TargetGroup.h>
#include <aws/core/utils/xml/XmlSerializer.h>
#include <aws/core/utils/StringUtils.h>
#include <aws/core/utils/memory/stl/AWSStringStream.h>
#include <utility>
using namespace Aws::Utils::Xml;
using namespace Aws::Utils;
namespace Aws
{
namespace ElasticLoadBalancingv2
{
namespace Model
{
TargetGroup::TargetGroup() :
m_targetGroupArnHasBeenSet(false),
m_targetGroupNameHasBeenSet(false),
m_protocol(ProtocolEnum::NOT_SET),
m_protocolHasBeenSet(false),
m_port(0),
m_portHasBeenSet(false),
m_vpcIdHasBeenSet(false),
m_healthCheckProtocol(ProtocolEnum::NOT_SET),
m_healthCheckProtocolHasBeenSet(false),
m_healthCheckPortHasBeenSet(false),
m_healthCheckEnabled(false),
m_healthCheckEnabledHasBeenSet(false),
m_healthCheckIntervalSeconds(0),
m_healthCheckIntervalSecondsHasBeenSet(false),
m_healthCheckTimeoutSeconds(0),
m_healthCheckTimeoutSecondsHasBeenSet(false),
m_healthyThresholdCount(0),
m_healthyThresholdCountHasBeenSet(false),
m_unhealthyThresholdCount(0),
m_unhealthyThresholdCountHasBeenSet(false),
m_healthCheckPathHasBeenSet(false),
m_matcherHasBeenSet(false),
m_loadBalancerArnsHasBeenSet(false),
m_targetType(TargetTypeEnum::NOT_SET),
m_targetTypeHasBeenSet(false)
{
}
TargetGroup::TargetGroup(const XmlNode& xmlNode) :
m_targetGroupArnHasBeenSet(false),
m_targetGroupNameHasBeenSet(false),
m_protocol(ProtocolEnum::NOT_SET),
m_protocolHasBeenSet(false),
m_port(0),
m_portHasBeenSet(false),
m_vpcIdHasBeenSet(false),
m_healthCheckProtocol(ProtocolEnum::NOT_SET),
m_healthCheckProtocolHasBeenSet(false),
m_healthCheckPortHasBeenSet(false),
m_healthCheckEnabled(false),
m_healthCheckEnabledHasBeenSet(false),
m_healthCheckIntervalSeconds(0),
m_healthCheckIntervalSecondsHasBeenSet(false),
m_healthCheckTimeoutSeconds(0),
m_healthCheckTimeoutSecondsHasBeenSet(false),
m_healthyThresholdCount(0),
m_healthyThresholdCountHasBeenSet(false),
m_unhealthyThresholdCount(0),
m_unhealthyThresholdCountHasBeenSet(false),
m_healthCheckPathHasBeenSet(false),
m_matcherHasBeenSet(false),
m_loadBalancerArnsHasBeenSet(false),
m_targetType(TargetTypeEnum::NOT_SET),
m_targetTypeHasBeenSet(false)
{
*this = xmlNode;
}
TargetGroup& TargetGroup::operator =(const XmlNode& xmlNode)
{
XmlNode resultNode = xmlNode;
if(!resultNode.IsNull())
{
XmlNode targetGroupArnNode = resultNode.FirstChild("TargetGroupArn");
if(!targetGroupArnNode.IsNull())
{
m_targetGroupArn = Aws::Utils::Xml::DecodeEscapedXmlText(targetGroupArnNode.GetText());
m_targetGroupArnHasBeenSet = true;
}
XmlNode targetGroupNameNode = resultNode.FirstChild("TargetGroupName");
if(!targetGroupNameNode.IsNull())
{
m_targetGroupName = Aws::Utils::Xml::DecodeEscapedXmlText(targetGroupNameNode.GetText());
m_targetGroupNameHasBeenSet = true;
}
XmlNode protocolNode = resultNode.FirstChild("Protocol");
if(!protocolNode.IsNull())
{
m_protocol = ProtocolEnumMapper::GetProtocolEnumForName(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(protocolNode.GetText()).c_str()).c_str());
m_protocolHasBeenSet = true;
}
XmlNode portNode = resultNode.FirstChild("Port");
if(!portNode.IsNull())
{
m_port = StringUtils::ConvertToInt32(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(portNode.GetText()).c_str()).c_str());
m_portHasBeenSet = true;
}
XmlNode vpcIdNode = resultNode.FirstChild("VpcId");
if(!vpcIdNode.IsNull())
{
m_vpcId = Aws::Utils::Xml::DecodeEscapedXmlText(vpcIdNode.GetText());
m_vpcIdHasBeenSet = true;
}
XmlNode healthCheckProtocolNode = resultNode.FirstChild("HealthCheckProtocol");
if(!healthCheckProtocolNode.IsNull())
{
m_healthCheckProtocol = ProtocolEnumMapper::GetProtocolEnumForName(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(healthCheckProtocolNode.GetText()).c_str()).c_str());
m_healthCheckProtocolHasBeenSet = true;
}
XmlNode healthCheckPortNode = resultNode.FirstChild("HealthCheckPort");
if(!healthCheckPortNode.IsNull())
{
m_healthCheckPort = Aws::Utils::Xml::DecodeEscapedXmlText(healthCheckPortNode.GetText());
m_healthCheckPortHasBeenSet = true;
}
XmlNode healthCheckEnabledNode = resultNode.FirstChild("HealthCheckEnabled");
if(!healthCheckEnabledNode.IsNull())
{
m_healthCheckEnabled = StringUtils::ConvertToBool(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(healthCheckEnabledNode.GetText()).c_str()).c_str());
m_healthCheckEnabledHasBeenSet = true;
}
XmlNode healthCheckIntervalSecondsNode = resultNode.FirstChild("HealthCheckIntervalSeconds");
if(!healthCheckIntervalSecondsNode.IsNull())
{
m_healthCheckIntervalSeconds = StringUtils::ConvertToInt32(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(healthCheckIntervalSecondsNode.GetText()).c_str()).c_str());
m_healthCheckIntervalSecondsHasBeenSet = true;
}
XmlNode healthCheckTimeoutSecondsNode = resultNode.FirstChild("HealthCheckTimeoutSeconds");
if(!healthCheckTimeoutSecondsNode.IsNull())
{
m_healthCheckTimeoutSeconds = StringUtils::ConvertToInt32(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(healthCheckTimeoutSecondsNode.GetText()).c_str()).c_str());
m_healthCheckTimeoutSecondsHasBeenSet = true;
}
XmlNode healthyThresholdCountNode = resultNode.FirstChild("HealthyThresholdCount");
if(!healthyThresholdCountNode.IsNull())
{
m_healthyThresholdCount = StringUtils::ConvertToInt32(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(healthyThresholdCountNode.GetText()).c_str()).c_str());
m_healthyThresholdCountHasBeenSet = true;
}
XmlNode unhealthyThresholdCountNode = resultNode.FirstChild("UnhealthyThresholdCount");
if(!unhealthyThresholdCountNode.IsNull())
{
m_unhealthyThresholdCount = StringUtils::ConvertToInt32(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(unhealthyThresholdCountNode.GetText()).c_str()).c_str());
m_unhealthyThresholdCountHasBeenSet = true;
}
XmlNode healthCheckPathNode = resultNode.FirstChild("HealthCheckPath");
if(!healthCheckPathNode.IsNull())
{
m_healthCheckPath = Aws::Utils::Xml::DecodeEscapedXmlText(healthCheckPathNode.GetText());
m_healthCheckPathHasBeenSet = true;
}
XmlNode matcherNode = resultNode.FirstChild("Matcher");
if(!matcherNode.IsNull())
{
m_matcher = matcherNode;
m_matcherHasBeenSet = true;
}
XmlNode loadBalancerArnsNode = resultNode.FirstChild("LoadBalancerArns");
if(!loadBalancerArnsNode.IsNull())
{
XmlNode loadBalancerArnsMember = loadBalancerArnsNode.FirstChild("member");
while(!loadBalancerArnsMember.IsNull())
{
m_loadBalancerArns.push_back(loadBalancerArnsMember.GetText());
loadBalancerArnsMember = loadBalancerArnsMember.NextNode("member");
}
m_loadBalancerArnsHasBeenSet = true;
}
XmlNode targetTypeNode = resultNode.FirstChild("TargetType");
if(!targetTypeNode.IsNull())
{
m_targetType = TargetTypeEnumMapper::GetTargetTypeEnumForName(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(targetTypeNode.GetText()).c_str()).c_str());
m_targetTypeHasBeenSet = true;
}
}
return *this;
}
void TargetGroup::OutputToStream(Aws::OStream& oStream, const char* location, unsigned index, const char* locationValue) const
{
if(m_targetGroupArnHasBeenSet)
{
oStream << location << index << locationValue << ".TargetGroupArn=" << StringUtils::URLEncode(m_targetGroupArn.c_str()) << "&";
}
if(m_targetGroupNameHasBeenSet)
{
oStream << location << index << locationValue << ".TargetGroupName=" << StringUtils::URLEncode(m_targetGroupName.c_str()) << "&";
}
if(m_protocolHasBeenSet)
{
oStream << location << index << locationValue << ".Protocol=" << ProtocolEnumMapper::GetNameForProtocolEnum(m_protocol) << "&";
}
if(m_portHasBeenSet)
{
oStream << location << index << locationValue << ".Port=" << m_port << "&";
}
if(m_vpcIdHasBeenSet)
{
oStream << location << index << locationValue << ".VpcId=" << StringUtils::URLEncode(m_vpcId.c_str()) << "&";
}
if(m_healthCheckProtocolHasBeenSet)
{
oStream << location << index << locationValue << ".HealthCheckProtocol=" << ProtocolEnumMapper::GetNameForProtocolEnum(m_healthCheckProtocol) << "&";
}
if(m_healthCheckPortHasBeenSet)
{
oStream << location << index << locationValue << ".HealthCheckPort=" << StringUtils::URLEncode(m_healthCheckPort.c_str()) << "&";
}
if(m_healthCheckEnabledHasBeenSet)
{
oStream << location << index << locationValue << ".HealthCheckEnabled=" << std::boolalpha << m_healthCheckEnabled << "&";
}
if(m_healthCheckIntervalSecondsHasBeenSet)
{
oStream << location << index << locationValue << ".HealthCheckIntervalSeconds=" << m_healthCheckIntervalSeconds << "&";
}
if(m_healthCheckTimeoutSecondsHasBeenSet)
{
oStream << location << index << locationValue << ".HealthCheckTimeoutSeconds=" << m_healthCheckTimeoutSeconds << "&";
}
if(m_healthyThresholdCountHasBeenSet)
{
oStream << location << index << locationValue << ".HealthyThresholdCount=" << m_healthyThresholdCount << "&";
}
if(m_unhealthyThresholdCountHasBeenSet)
{
oStream << location << index << locationValue << ".UnhealthyThresholdCount=" << m_unhealthyThresholdCount << "&";
}
if(m_healthCheckPathHasBeenSet)
{
oStream << location << index << locationValue << ".HealthCheckPath=" << StringUtils::URLEncode(m_healthCheckPath.c_str()) << "&";
}
if(m_matcherHasBeenSet)
{
Aws::StringStream matcherLocationAndMemberSs;
matcherLocationAndMemberSs << location << index << locationValue << ".Matcher";
m_matcher.OutputToStream(oStream, matcherLocationAndMemberSs.str().c_str());
}
if(m_loadBalancerArnsHasBeenSet)
{
unsigned loadBalancerArnsIdx = 1;
for(auto& item : m_loadBalancerArns)
{
oStream << location << index << locationValue << ".LoadBalancerArns.member." << loadBalancerArnsIdx++ << "=" << StringUtils::URLEncode(item.c_str()) << "&";
}
}
if(m_targetTypeHasBeenSet)
{
oStream << location << index << locationValue << ".TargetType=" << TargetTypeEnumMapper::GetNameForTargetTypeEnum(m_targetType) << "&";
}
}
void TargetGroup::OutputToStream(Aws::OStream& oStream, const char* location) const
{
if(m_targetGroupArnHasBeenSet)
{
oStream << location << ".TargetGroupArn=" << StringUtils::URLEncode(m_targetGroupArn.c_str()) << "&";
}
if(m_targetGroupNameHasBeenSet)
{
oStream << location << ".TargetGroupName=" << StringUtils::URLEncode(m_targetGroupName.c_str()) << "&";
}
if(m_protocolHasBeenSet)
{
oStream << location << ".Protocol=" << ProtocolEnumMapper::GetNameForProtocolEnum(m_protocol) << "&";
}
if(m_portHasBeenSet)
{
oStream << location << ".Port=" << m_port << "&";
}
if(m_vpcIdHasBeenSet)
{
oStream << location << ".VpcId=" << StringUtils::URLEncode(m_vpcId.c_str()) << "&";
}
if(m_healthCheckProtocolHasBeenSet)
{
oStream << location << ".HealthCheckProtocol=" << ProtocolEnumMapper::GetNameForProtocolEnum(m_healthCheckProtocol) << "&";
}
if(m_healthCheckPortHasBeenSet)
{
oStream << location << ".HealthCheckPort=" << StringUtils::URLEncode(m_healthCheckPort.c_str()) << "&";
}
if(m_healthCheckEnabledHasBeenSet)
{
oStream << location << ".HealthCheckEnabled=" << std::boolalpha << m_healthCheckEnabled << "&";
}
if(m_healthCheckIntervalSecondsHasBeenSet)
{
oStream << location << ".HealthCheckIntervalSeconds=" << m_healthCheckIntervalSeconds << "&";
}
if(m_healthCheckTimeoutSecondsHasBeenSet)
{
oStream << location << ".HealthCheckTimeoutSeconds=" << m_healthCheckTimeoutSeconds << "&";
}
if(m_healthyThresholdCountHasBeenSet)
{
oStream << location << ".HealthyThresholdCount=" << m_healthyThresholdCount << "&";
}
if(m_unhealthyThresholdCountHasBeenSet)
{
oStream << location << ".UnhealthyThresholdCount=" << m_unhealthyThresholdCount << "&";
}
if(m_healthCheckPathHasBeenSet)
{
oStream << location << ".HealthCheckPath=" << StringUtils::URLEncode(m_healthCheckPath.c_str()) << "&";
}
if(m_matcherHasBeenSet)
{
Aws::String matcherLocationAndMember(location);
matcherLocationAndMember += ".Matcher";
m_matcher.OutputToStream(oStream, matcherLocationAndMember.c_str());
}
if(m_loadBalancerArnsHasBeenSet)
{
unsigned loadBalancerArnsIdx = 1;
for(auto& item : m_loadBalancerArns)
{
oStream << location << ".LoadBalancerArns.member." << loadBalancerArnsIdx++ << "=" << StringUtils::URLEncode(item.c_str()) << "&";
}
}
if(m_targetTypeHasBeenSet)
{
oStream << location << ".TargetType=" << TargetTypeEnumMapper::GetNameForTargetTypeEnum(m_targetType) << "&";
}
}
} // namespace Model
} // namespace ElasticLoadBalancingv2
} // namespace Aws