AtmiBrokerServer.h
上传用户:xfwatch
上传日期:2020-12-14
资源大小:872k
文件大小:3k
源码类别:

中间件编程

开发平台:

Java

  1. /*
  2.  * JBoss, Home of Professional Open Source
  3.  * Copyright 2008, Red Hat, Inc., and others contributors as indicated
  4.  * by the @authors tag. All rights reserved.
  5.  * See the copyright.txt in the distribution for a
  6.  * full listing of individual contributors.
  7.  * This copyrighted material is made available to anyone wishing to use,
  8.  * modify, copy, or redistribute it subject to the terms and conditions
  9.  * of the GNU Lesser General Public License, v. 2.1.
  10.  * This program is distributed in the hope that it will be useful, but WITHOUT A
  11.  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  12.  * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
  13.  * You should have received a copy of the GNU Lesser General Public License,
  14.  * v.2.1 along with this distribution; if not, write to the Free Software
  15.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  16.  * MA  02110-1301, USA.
  17.  */
  18. #ifndef BLACKTIE_SERVERSERVERIMPL_H_
  19. #define BLACKTIE_SERVERSERVERIMPL_H_
  20. #include <iostream>
  21. #include <vector>
  22. #ifdef TAO_COMP
  23. #include "AtmiBrokerS.h"
  24. #endif
  25. #include "CorbaConnection.h"
  26. #include "Connection.h"
  27. #include "xatmi.h"
  28. #include "AtmiBrokerEnvXml.h"
  29. #include "AtmiBrokerServerControl.h"
  30. #include "ConnectionManager.h"
  31. #include "Destination.h"
  32. #include "ServiceDispatcher.h"
  33. #include "SynchronizableObject.h"
  34. class ServiceDispatcher;
  35. struct _service_data {
  36. Destination* destination;
  37. void (*func)(TPSVCINFO *);
  38. std::vector<ServiceDispatcher*> dispatchers;
  39. ServiceInfo* serviceInfo;
  40. };
  41. typedef _service_data ServiceData;
  42. class AtmiBrokerServer {
  43. public:
  44. AtmiBrokerServer();
  45. virtual ~AtmiBrokerServer();
  46. virtual char * getServerName();
  47. virtual bool advertiseService(char * serviceName, void(*func)(TPSVCINFO *));
  48. virtual void unadvertiseService(char * serviceName, bool decrement);
  49. BLACKTIE_XATMI_DLL bool isAdvertised(char * serviceName);
  50. bool advertiseService(char* serviceName);
  51. void advertiseAtBootime();
  52. int  getServiceStatus(char** str, char* svc);
  53. long getServiceMessageCounter(char* serviceName);
  54. long getServiceErrorCounter(char* serviceName);
  55. void getResponseTime(char* serviceName, unsigned long* min, unsigned long* avg, unsigned long* max);
  56. void server_done();
  57. int  block();
  58. void shutdown();
  59. int  pause();
  60. int  resume();
  61. bool createAdminDestination(char* svcname);
  62. private:
  63. void (*getServiceMethod(const char * aServiceName))(TPSVCINFO *);
  64. void addDestination(Destination* destination, void(*func)(TPSVCINFO *), ServiceInfo* service);
  65. Destination* removeDestination(const char * aServiceName);
  66. void removeAdminDestination(char* svcname, bool decrement);
  67. void updateServiceStatus(ServiceInfo* service, SVCFUNC func, bool status);
  68. ConnectionManager connections;
  69. std::vector<ServiceData> serviceData;
  70. std::vector<ServiceStatus> serviceStatus;
  71. std::vector<char*> advertisedServices;
  72. char* serverName;
  73. ServerInfo serverInfo;
  74. SynchronizableObject* finish;
  75. bool isPause;
  76. // The following are not implemented
  77. //
  78. AtmiBrokerServer(const AtmiBrokerServer &);
  79. AtmiBrokerServer& operator=(const AtmiBrokerServer &);
  80. };
  81. // SERVER
  82. extern BLACKTIE_XATMI_DLL AtmiBrokerServer * ptrServer;
  83. #endif