Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Related Pages

SubscriptionManagerImpl.h

00001 
00002 #ifndef SCT_SUBSCRIPTIONMANAGER_H
00003 #define SCT_SUBSCRIPTIONMANAGER_H
00004 
00005 #include "SubscriptionManagerImpl.fwd"
00006 
00007 #include <ipc/object.h>
00008 #include "SubscriptionManager.hh"
00009 #include "SpecialSubscribeRequest.h"
00010 
00011 namespace Sct {
00012   
00013   class SubscriptionManagerImpl : public IPCNamedObject<POA_SubscriptionManagerModule::SubscriptionManager> {
00014   private:
00015     SubscriptionManagerImpl() : 
00016       IPCNamedObject<POA_SubscriptionManagerModule::SubscriptionManager>("SCT",
00017                                                                          SubscriptionManagerModule::SubscriptionManager::instanceName) {
00018     };
00019   public:
00020     static SubscriptionManagerImpl & instance() {
00021       static SubscriptionManagerImpl theInstance;
00022       return theInstance;
00023     };
00024 
00025 
00027     // Implementation of the methods declared in the SubscriptionManager.idl
00029 
00030     virtual CORBA::Long whatNumberIsThis(CORBA::Long number) {
00031       return number;
00032     };
00033     virtual void subscribe_special(const char* serverPattern,
00034                                    const char* objectPattern,
00035                                    CORBA::Boolean server_is_regular_expression,
00036                                    CORBA::Boolean object_is_regular_expression,
00037                                    is::callback_ptr cb);
00039     virtual void debugDumpSubscriptions();
00040 
00042     // Other things
00044 
00045     virtual void shutdown() {
00046       // can't think of anything to do here, but this is a pure virtual method of IPCServant that we must implement.
00047     };
00049     void startCatchingSignals();
00050     ~SubscriptionManagerImpl() {
00051       std::cout << "Withdrawing from service due to demise of self." << std::endl;
00052       this->tidyUpAndWithdrawEtc();
00053     };
00054 
00055     static void acceptSignal(int signum);
00056  private:
00057     void tidyUpAndWithdrawEtc();
00058     typedef std::list<SpecialSubscribeRequest> SpecialSubscribeRequests;
00059     SpecialSubscribeRequests m_specialSubscribeRequests;
00060   };
00061 
00062 };
00063 
00064 #endif

Generated on Thu Feb 3 17:37:43 2005 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5