正在显示
1 个修改的文件
包含
0 行增加
和
205 行删除
| ... | ... | @@ -126,211 +126,6 @@ bool DmpServerManager::publish(const std::string& serverName, const std::string& |
| 126 | 126 | delete project; |
| 127 | 127 | return false; |
| 128 | 128 | } |
| 129 | - projects_[serviceName] = project; | |
| 130 | - return true; | |
| 131 | -} | |
| 132 | - | |
| 133 | -bool DmpServerManager::deleteService(const std::string &serverName, const std::string &serviceName) | |
| 134 | -{ | |
| 135 | - if (serverRegistry_->getServer(serverName)->remove(serviceName) && removeProject(serviceName)) | |
| 136 | - { | |
| 137 | - return true; | |
| 138 | - } | |
| 139 | - else | |
| 140 | - { | |
| 141 | - return false; | |
| 142 | - } | |
| 143 | -} | |
| 144 | - | |
| 145 | -bool DmpServerManager::startService(const std::string &serverName, const std::string &serviceName) | |
| 146 | -{ | |
| 147 | - return serverRegistry_->getServer(serverName)->start(serviceName); | |
| 148 | -} | |
| 149 | - | |
| 150 | -bool DmpServerManager::stopService(const std::string &serverName, const std::string &serviceName) | |
| 151 | -{ | |
| 152 | - return serverRegistry_->getServer(serverName)->stop(serviceName); | |
| 153 | -} | |
| 154 | -bool DmpServerManager::loadServices() | |
| 155 | -{ | |
| 156 | - boost::property_tree::ptree pt,ptList; | |
| 157 | - std::string conn = DmpServerConfig::Instance()->getMetaUrl(); | |
| 158 | - const std::string url= conn + URI_RELOAD; | |
| 159 | - std::string strContent=DmpHttp::get(url); | |
| 160 | - if(strContent.length()==0) | |
| 161 | - { | |
| 162 | - return false; | |
| 163 | - } | |
| 164 | - std::stringstream ssData; | |
| 165 | - ssData<<strContent.c_str(); | |
| 166 | - boost::property_tree::read_json(ssData, pt); | |
| 167 | - int iCount = std::atoi(pt.get<std::string>("data.count").c_str()); | |
| 168 | - if(iCount>0) | |
| 169 | - { | |
| 170 | - ptList=pt.get_child("data.list"); | |
| 171 | - for (auto& e : ptList) | |
| 172 | - { | |
| 173 | - std::string name = e.second.get<std::string>("name"); | |
| 174 | - std::string title = e.second.get<std::string>("title"); | |
| 175 | - std::string type = e.second.get<std::string>("type"); | |
| 176 | - int capabilities =e.second.get<int>("capabilities"); | |
| 177 | - std::string project = e.second.get<std::string>("project"); | |
| 178 | - this->initServices(type,name,title,capabilities,project); | |
| 179 | - } | |
| 180 | - } | |
| 181 | - return true; | |
| 182 | -} | |
| 183 | -bool DmpServerManager::initServices(const std::string& serverName, const std::string& serviceName, const std::string& title, int capabilities, const std::string& projectData) | |
| 184 | -{ | |
| 185 | - //project | |
| 186 | - std::string projData; | |
| 187 | - if (!DmpServerUtils::Base64Decode(projectData, &projData)) | |
| 188 | - { | |
| 189 | - return false; | |
| 190 | - } | |
| 191 | - DmpProject *project = new DmpProject(); | |
| 192 | - if (!project->Read(projData)) | |
| 193 | - { | |
| 194 | - delete project; | |
| 195 | - return false; | |
| 196 | - } | |
| 197 | - | |
| 198 | - if (!serverRegistry_->getServer(serverName)->publish(serviceName, title, capabilities, *project)) | |
| 199 | - { | |
| 200 | - delete project; | |
| 201 | - return false; | |
| 202 | - } | |
| 203 | - projects_[serviceName] = project; | |
| 204 | - return true; | |
| 205 | -======= | |
| 206 | -/************************************************************************** | |
| 207 | -* file: dmpservermanager.cpp | |
| 208 | - | |
| 209 | -* Author: wanzhongping | |
| 210 | -* Date: 2021-07-27 21:59:46 | |
| 211 | -* Email: zhongpingw@chinadci.com | |
| 212 | -* copyright: 广州城市信息研究所有限公司 | |
| 213 | -***************************************************************************/ | |
| 214 | -#include "dmpservermanager.h" | |
| 215 | -#include "dmpserver.h" | |
| 216 | -#include "dmphttputils.h" | |
| 217 | -#include "dmpserverConfig.h" | |
| 218 | -#include <memory> | |
| 219 | -#include <boost/property_tree/ptree.hpp> | |
| 220 | -#include <boost/property_tree/json_parser.hpp> | |
| 221 | -#include <boost/property_tree/xml_parser.hpp> | |
| 222 | -#include <sstream> | |
| 223 | -#include <fstream> | |
| 224 | -#include <math.h> | |
| 225 | -#include "dmptilelayer.h" | |
| 226 | -#include <iostream> | |
| 227 | -#include "dmplogger.h" | |
| 228 | -#include "dmptilelayer.h" | |
| 229 | - | |
| 230 | -DmpServerManager::DmpServerManager() | |
| 231 | -{ | |
| 232 | - serverRegistry_ = new DmpServerRegistry(); | |
| 233 | -} | |
| 234 | - | |
| 235 | -DmpServerManager::~DmpServerManager() | |
| 236 | -{ | |
| 237 | - if (serverRegistry_) | |
| 238 | - { | |
| 239 | - delete serverRegistry_; | |
| 240 | - serverRegistry_ = NULL; | |
| 241 | - } | |
| 242 | - | |
| 243 | - ProjectMap::iterator iter = projects_.begin(); | |
| 244 | - for (; iter != projects_.end(); ++iter) | |
| 245 | - { | |
| 246 | - DmpProject *mapProject = iter->second; | |
| 247 | - if (mapProject) | |
| 248 | - { | |
| 249 | - delete mapProject; | |
| 250 | - mapProject = nullptr; | |
| 251 | - } | |
| 252 | - } | |
| 253 | - projects_.clear(); | |
| 254 | -} | |
| 255 | - | |
| 256 | -void DmpServerManager::init(const boost::filesystem::path &modulePath) | |
| 257 | -{ | |
| 258 | - serverRegistry_->init(modulePath); | |
| 259 | - if(!loadServices()) | |
| 260 | - { | |
| 261 | - std::cout << "加载服务失败!" << std::endl; | |
| 262 | - LOGGER_ERROR("加载服务失败!"); | |
| 263 | - } | |
| 264 | - //LoadDmpServices(); | |
| 265 | -} | |
| 266 | - | |
| 267 | -std::string DmpServerManager::getCapabilities() | |
| 268 | -{ | |
| 269 | - return serverRegistry_->getCapabilities(); | |
| 270 | -} | |
| 271 | - | |
| 272 | -std::shared_ptr<DmpServer> DmpServerManager::serverForRequest(const DmpServerRequest &request) | |
| 273 | -{ | |
| 274 | - return serverRegistry_->getServerForRequest(request); | |
| 275 | -} | |
| 276 | - | |
| 277 | -std::shared_ptr<DmpServerApi> DmpServerManager::apiForRequest(const DmpServerRequest &request) | |
| 278 | -{ | |
| 279 | - return serverRegistry_->getApiForRequest(request); | |
| 280 | -} | |
| 281 | - | |
| 282 | -DmpProject *DmpServerManager::getProject(const std::string &serviceName) | |
| 283 | -{ | |
| 284 | - std::map<std::string, DmpProject *>::iterator iter = projects_.find(serviceName); | |
| 285 | - if (iter != projects_.end()) | |
| 286 | - { | |
| 287 | - return iter->second; | |
| 288 | - } | |
| 289 | - else | |
| 290 | - { | |
| 291 | - return nullptr; | |
| 292 | - } | |
| 293 | -} | |
| 294 | - | |
| 295 | -bool DmpServerManager::removeProject(const std::string &serviceName) | |
| 296 | -{ | |
| 297 | - try | |
| 298 | - { | |
| 299 | - std::map<std::string, DmpProject *>::iterator iter = projects_.find(serviceName); | |
| 300 | - if (iter != projects_.end()) | |
| 301 | - { | |
| 302 | - delete iter->second; | |
| 303 | - projects_.erase(iter); | |
| 304 | - } | |
| 305 | - } | |
| 306 | - catch (const std::exception &e) | |
| 307 | - { | |
| 308 | - std::cerr << e.what() << '\n'; | |
| 309 | - return false; | |
| 310 | - } | |
| 311 | - return true; | |
| 312 | -} | |
| 313 | - | |
| 314 | -bool DmpServerManager::publish(const std::string& serverName, const std::string& serviceName, const std::string& title, int capabilities, const std::string& projectData) | |
| 315 | -{ | |
| 316 | - //project | |
| 317 | - std::string projData; | |
| 318 | - if (!DmpServerUtils::Base64Decode(projectData, &projData)) | |
| 319 | - { | |
| 320 | - return false; | |
| 321 | - } | |
| 322 | - DmpProject *project = new DmpProject(); | |
| 323 | - if (!project->Read(projData)) | |
| 324 | - { | |
| 325 | - delete project; | |
| 326 | - return false; | |
| 327 | - } | |
| 328 | - | |
| 329 | - if (!serverRegistry_->getServer(serverName)->publish(serviceName, title, capabilities, *project)) | |
| 330 | - { | |
| 331 | - delete project; | |
| 332 | - return false; | |
| 333 | - } | |
| 334 | 129 | projects_[serviceName] = project; |
| 335 | 130 | |
| 336 | 131 | return true; | ... | ... |
请
注册
或
登录
后发表评论