00001 #include <cassert>
00002 #include <cstdarg>
00003 #include <cstdlib>
00004 #include <xmlrpc-c/base.hpp>
00005 #include <xmlrpc-c/registry.hpp>
00006 #include <xmlrpc-c/server_abyss.hpp>
00007 #include <xmlrpc-c/oldcppwrapper.hpp>
00008 #include <xmlrpc-c/base.hpp>
00009 #include <xmlrpc-c/client_simple.hpp>
00010 #include <iostream>
00011 #include <boost/thread.hpp>
00012 #include <boost/date_time/posix_time/posix_time.hpp>
00013 #include <boost/statechart/event.hpp>
00014 #include <boost/statechart/state_machine.hpp>
00015 #include <boost/statechart/simple_state.hpp>
00016 #include <boost/statechart/transition.hpp>
00017 #include <boost/bind.hpp>
00018 #include <boost/asio.hpp>
00019 #include <boost/shared_ptr.hpp>
00020 #include <Category.hh>
00021 #include <FileAppender.hh>
00022 #include <PatternLayout.hh>
00023 #include <map>
00024 #include <utility>
00025 #include <map>
00026 #include <string>
00027 #include <queue>
00028 #include "Listener.h"
00029 #include "EventSender.h"
00030 #include "TimeStampedEvent.h"
00031 #include "PolymorphEvent.h"
00032 #ifdef MD_MAND
00033 #include <clipsmm.h>
00034 #endif
00035
00036 namespace fsm = boost::statechart;
00037
00038 #define XMLRPC_C
00039
00040 #include "mdcommon.h"
00041 #include "mdevents.h"
00042 #include "mdLogger.h"
00043
00044 #include "mdBehavior.h"
00045 #include "mdObservable.h"
00046 #include "mdState.h"
00047
00048 #include "mdDevice.h"
00049
00050 #define MD_HAUSHALT 1200000 // milliseconds between attention routine
00051 #define MD_LOCK_FILE "auc-md.lock"
00052
00053 #include "masterDaemonConfig.h"
00054
00055 #ifdef MD_MAIN
00056
00057 mdDeviceFabrik *deviceFactory;
00058 mdLogger *theseLogs;
00059 masterDaemonConfig *thisConfig;
00060
00061 extern void runMasterDaemon();
00062 extern void runDataLayer();
00063
00064 #else
00065
00066 extern mdDeviceFabrik *deviceFactory;
00067 extern mdLogger *theseLogs;
00068 extern masterDaemonConfig *thisConfig;
00069
00070 #endif
00071
00072