mirror of
https://gitee.com/TarsCloud/TarsCpp.git
synced 2024-12-22 22:16:38 +08:00
a0182dcbb9
- 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
73 lines
2.0 KiB
C++
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) );
|
|
}
|
|
|
|
}
|
|
|
|
|