Go to the documentation of this file.00001 #ifndef acsnc_archive_consumer_H
00002 #define acsnc_archive_consumer_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef __cplusplus
00034 #error This is a C++ include file and cannot be used from plain C
00035 #endif
00036
00037 #include "acsncConsumer.h"
00038 #include <string>
00039
00040 #include <lokiSmartPtr.h>
00041 #include <loggingBaseLog.h>
00042
00043 namespace nc {
00044
00045 class ArchiveConsumer : public Consumer
00046 {
00047 public:
00048
00053 class ArchiveHandler {
00054
00055 public:
00056
00057 virtual void
00058 receive(ACS::Time timeStamp,
00059 const std::string& device,
00060 const std::string& parameter,
00061 const CORBA::Any& value) = 0;
00062
00063 virtual ~ArchiveHandler(){}
00064 };
00065
00067 typedef Loki::SmartPtr<ArchiveHandler,
00068 Logging::RefCounted,
00069 Loki::AllowConversion,
00070 Loki::NoCheck,
00071 Loki::DefaultSPStorage> ArchiveHandlerSmartPtr;
00072
00073
00074
00084 ArchiveConsumer(ArchiveHandlerSmartPtr handler);
00085
00094 ArchiveConsumer(CORBA::ORB_ptr orb_p,
00095 ArchiveHandlerSmartPtr handler);
00096
00119 ArchiveConsumer(int argc,
00120 char *argv[],
00121 ArchiveHandlerSmartPtr handler);
00133 virtual void
00134 push_structured_event(const CosNotification::StructuredEvent &publishedEvent);
00135
00136 protected:
00137
00138
00144 const char*
00145 getNotificationFactoryName()
00146 {return acscommon::ARCHIVE_NOTIFICATION_FACTORY_NAME;}
00147
00148 private:
00149
00158 void
00159 subscribeAllEvents();
00160
00164 ArchiveHandlerSmartPtr handler_m;
00165 };
00166
00167 };
00168
00169
00170
00171 #endif