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
00145 const char*
00146 getChannelKind();
00147
00155 const char*
00156 getChannelDomain();
00157
00158
00164 const char*
00165 getNotificationFactoryName()
00166 {return acscommon::ARCHIVE_NOTIFICATION_FACTORY_NAME;}
00167
00168 private:
00169
00178 void
00179 subscribeAllEvents();
00180
00184 ArchiveHandlerSmartPtr handler_m;
00185 };
00186
00187 };
00188
00189
00190
00191 #endif