AdminServant.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /**
  2. * Tencent is pleased to support the open source community by making Tars available.
  3. *
  4. * Copyright (C) 2016THL A29 Limited, a Tencent company. All rights reserved.
  5. *
  6. * Licensed under the BSD 3-Clause License (the "License"); you may not use this file except
  7. * in compliance with the License. You may obtain a copy of the License at
  8. *
  9. * https://opensource.org/licenses/BSD-3-Clause
  10. *
  11. * Unless required by applicable law or agreed to in writing, software distributed
  12. * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
  13. * CONDITIONS OF ANY KIND, either express or implied. See the License for the
  14. * specific language governing permissions and limitations under the License.
  15. */
  16. #include "util/tc_platform.h"
  17. #include "servant/AdminServant.h"
  18. #include "servant/Application.h"
  19. #include "servant/NotifyObserver.h"
  20. #include "servant/ServantHelper.h"
  21. namespace tars
  22. {
  23. AdminServant::AdminServant()
  24. {
  25. }
  26. AdminServant::~AdminServant()
  27. {
  28. }
  29. void AdminServant::initialize()
  30. {
  31. }
  32. void AdminServant::destroy()
  33. {
  34. }
  35. void AdminServant::shutdown(CurrentPtr current)
  36. {
  37. TLOGERROR("[TARS][AdminServant::shutdown] from node" << endl);
  38. #if TARGET_PLATFORM_WINDOWS
  39. HANDLE hProcess = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId());
  40. if (hProcess == NULL)
  41. {
  42. return;
  43. }
  44. ::TerminateProcess(hProcess, 0);
  45. #else
  46. kill(getpid(), SIGINT); //通过给自己发信号的方式结束, 避免处理线程结束时自己join自己
  47. // Application::terminate();
  48. #endif
  49. }
  50. string AdminServant::notify(const string &command, CurrentPtr current)
  51. {
  52. RemoteNotify::getInstance()->report("AdminServant::notify:" + command);
  53. return this->getApplication()->getNotifyObserver()->notify(command, current);
  54. }
  55. ///////////////////////////////////////////////////////////////////////
  56. }