21 #ifndef ROUTING_ENGINE_H
22 #define ROUTING_ENGINE_H
26 #include "WorkItemPool.h"
27 #include "AbstractWatcher.h"
28 #include "AppSettings.h"
29 #include "InstrumentedObject.h"
30 #include "Transactions/AbstractStatePersistence.h"
31 #include "DB/DbWatcher.h"
40 #include "RoutingKeyword.h"
42 #define DEFAULT_QUEUE "_INTERNAL_DUMMY_QUEUE"
46 #if defined( TESTDLL_EXPORT ) || defined ( TESTDLL_IMPORT )
47 friend class RoutingStructuresTest;
48 friend class RoutingActionsTest;
49 friend class RoutingKeywordsTest;
61 void Start(
bool startWatcher =
true );
68 static void NotificationCallback(
const AbstractWatcher::NotificationObject* notification );
69 static void OnNewJob(
const AbstractWatcher::NotificationObject* notification );
71 static void IdleProcess(
void );
72 static void PurgeHashes(
void );
73 static void ArchiveIdle(
void );
75 static WorkItemPool< RoutingJob >&
getJobPool() {
return TheRoutingEngine->m_JobPool; }
76 static WorkItemPool< RoutingMessage >&
getMessagePool() {
return TheRoutingEngine->m_MessagePool; }
77 static WorkItemPool< RoutingJobExecutor >&
getThreadExecPool() {
return TheRoutingEngine->m_ThreadExecPool; }
90 static string getBatchXslt(
const string& queue =
DEFAULT_QUEUE );
101 void ReadApplicationSettings();
104 void RecoverLastSession()
const;
124 static bool getRoutingIsoMessageType(
const string& messageType )
126 RoutingIsoMessageTypes::const_iterator isoFinder = IsoMessageTypes.find( messageType );
127 if ( isoFinder == IsoMessageTypes.end() )
130 return IsoMessageTypes[messageType];
159 static void* ThreadPoolWatcher(
void* data );
160 static void* RouterRoutine(
void* data );
161 static void* COTMonitor(
void* data );
194 #if defined( WIN32 ) && defined ( _DEBUG )
195 _CrtMemState m_NextMemoryState, m_OldMemoryState, m_FinishMemoryState;
196 bool m_OldStateAvailable;
197 static unsigned int m_Notifications;
215 static void CreateKeys();
216 static void DeleteSchema(
void* data );