TarsCloud_TarsCpp/servant/libservant/ServantHelper.cpp
ruanshudong a0182dcbb9 - fix gtest compiler bug
- fix epoll memory leak in windows
- fix tc_encoder crash bug
- fix tc_clientsocket bug
- fix tc_timer memory leak
- fix tc_openssl mode not be used
- fix TC_ Http2 failure problem (header cannot use temporary variables)
- always set thread data host info
- Adding the initialization of enumeration value in the resetDefautlt
function
- Part of the file encoding format is adjusted to utf8 BOM to ensure
that there is no problem in Windows compilation
- tc_common add various date processing functions
- tc_common add floating point comparison function
- tc_thread add multi thread hash logic
- tc_port add environment variable acquisition and system event
registration callback (compatible with multi platform)
- Adjust tc_sem_mutex event name (under Windows) to facilitate
subsequent maintenance
- rpc add support for http/sock4/sock5 proxy
- application add ssl bind check
- Fix the bug of RPC in HTTP short SSL package connection  (under
Windows)
- communicator add update endpoint
- fix communicator exit logic to avoid possible crash in exit
- optimize the memory copy problem, reduce the memory copy, and improve
the performance
- Adjust the custom callback and put it in servantproxy
2020-09-17 21:35:19 +08:00

73 lines
2.0 KiB
C++

/**
* 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.
*/
#include "servant/ServantHelper.h"
namespace tars
{
ServantPtr ServantHelperManager::create(const string &sAdapter)
{
if(_adapter_servant.find(sAdapter) == _adapter_servant.end())
{
return NULL;
}
ServantPtr servant = NULL;
//根据adapter查找servant名称
string s = _adapter_servant[sAdapter];
if(_servant_creator.find(s) != _servant_creator.end())
{
servant = _servant_creator[s]->create(s);
}
return servant;
}
void ServantHelperManager::setAdapterServant(const string &sAdapter, const string &sServant)
{
_adapter_servant[sAdapter] = sServant;
_servant_adapter[sServant] = sAdapter;
}
bool ServantHelperManager::setDyeing(const string & sDyeingKey, const string & sDyeingServant,
const string & sDyeingInterface)
{
TC_LockT<TC_SpinLock> lock(_mutex);
_dyeingKey = sDyeingKey;
_dyeingServant = sDyeingServant;
_dyeingInterface = sDyeingInterface;
_isDyeing = !sDyeingKey.empty();
return true;
}
bool ServantHelperManager::isDyeingReq(const string & sKey, const string & sServant, const string & sInterface) const
{
TC_LockT<TC_SpinLock> lock(_mutex);
return ((_dyeingKey == sKey) && (_dyeingServant == sServant) &&
(_dyeingInterface == "" || _dyeingInterface == sInterface) );
}
}