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

中间件编程

开发平台:

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 SERVICEDISPATCHER_H_
  19. #define SERVICEDISPATCHER_H_
  20. #include <ace/Task.h>
  21. #include "log4cxx/logger.h"
  22. #include "xatmi.h"
  23. #include "Destination.h"
  24. #include "Connection.h"
  25. #include "Session.h"
  26. #include "AtmiBrokerServer.h"
  27. class AtmiBrokerServer;
  28. class ServiceDispatcher: public ACE_Task_Base {
  29. public:
  30. ServiceDispatcher(AtmiBrokerServer* server, Destination* destination,
  31. Connection* connection, const char *serviceName, void(*func)(
  32. TPSVCINFO *), bool isPause, SynchronizableObject* reconnect);
  33. ~ServiceDispatcher();
  34. int svc();
  35. int pause();
  36. int resume();
  37. void shutdown();
  38. long getCounter();
  39. long getErrorCounter();
  40. void updateErrorCounter();
  41. void getResponseTime(unsigned long* min, unsigned long* avg, unsigned long* max);
  42. SynchronizableObject* getReconnect();
  43. private:
  44. void onMessage(MESSAGE message);
  45. static log4cxx::LoggerPtr logger;
  46. AtmiBrokerServer* server;
  47. Destination* destination;
  48. Connection* connection;
  49. char* serviceName;
  50. void (*func)(TPSVCINFO *);
  51. Session* session;
  52. bool stop;
  53. bool isPause;
  54. long timeout;
  55. long counter;
  56. long error_counter;
  57. unsigned long minResponseTime;
  58. unsigned long avgResponseTime;
  59. unsigned long maxResponseTime;
  60. SynchronizableObject* reconnect;
  61. SynchronizableObject* pauseLock;
  62. };
  63. #endif