2020-02-07 13:50:04 +08:00
|
|
|
|
/**
|
2018-09-05 11:26:21 +08:00
|
|
|
|
* 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)
|
|
|
|
|
{
|
2020-01-29 15:52:39 +08:00
|
|
|
|
TC_LockT<TC_SpinLock> lock(_mutex);
|
2018-09-05 11:26:21 +08:00
|
|
|
|
|
|
|
|
|
_dyeingKey = sDyeingKey;
|
|
|
|
|
_dyeingServant = sDyeingServant;
|
|
|
|
|
_dyeingInterface = sDyeingInterface;
|
|
|
|
|
|
|
|
|
|
_isDyeing = !sDyeingKey.empty();
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool ServantHelperManager::isDyeingReq(const string & sKey, const string & sServant, const string & sInterface)
|
|
|
|
|
{
|
2020-01-29 15:52:39 +08:00
|
|
|
|
TC_LockT<TC_SpinLock> lock(_mutex);
|
2018-09-05 11:26:21 +08:00
|
|
|
|
|
|
|
|
|
return ((_dyeingKey == sKey) && (_dyeingServant == sServant) &&
|
|
|
|
|
(_dyeingInterface == "" || _dyeingInterface == sInterface) );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|